aboutsummaryrefslogtreecommitdiffstats
path: root/static
diff options
context:
space:
mode:
authorGravatar Gareth Coles <[email protected]>2018-06-13 16:43:42 +0100
committerGravatar Gareth Coles <[email protected]>2018-06-13 16:43:42 +0100
commitbe2bbe35cf49763ad0258c005f3cbdddd7a21d75 (patch)
tree962d5e52f4bb57c397c068ae6a11b57952cfc459 /static
parent[DB] Attempt reconnection if current connection was lost (diff)
Compile as much JS with Gulp as possible
This will concatenate ALL of our JS, and minify it - thus leaving us with a single file to be loaded. There's a few libraries we can't do this with, unfortunately - these are now added in fouc.js: * Ace Editor * Flatpickr * Font-Awesome
Diffstat (limited to 'static')
-rw-r--r--static/js/500.js47
-rw-r--r--static/js/countdown.js78
-rw-r--r--static/js/fouc.js38
-rw-r--r--static/js/jams.js215
-rw-r--r--static/js/revision_diff.js84
-rw-r--r--static/js/script.js2
-rw-r--r--static/js/script.js.map1
-rw-r--r--static/js/typewriter.js612
-rw-r--r--static/js/wiki.js15
9 files changed, 3 insertions, 1089 deletions
diff --git a/static/js/500.js b/static/js/500.js
deleted file mode 100644
index 7effe502..00000000
--- a/static/js/500.js
+++ /dev/null
@@ -1,47 +0,0 @@
-"use strict";
-
-window.onload = function () {
- const app = document.getElementById("error");
-
- const typewriter = new Typewriter(app, {
- "loop": false,
- "deleteSpeed": 40,
- "typingSpeed": "natural",
- "devMode": false
- });
-
- function closeWindow() {
- const app = document.getElementById("win");
- const current_class = app.getAttribute("class");
- app.setAttribute("class", `${current_class } uk-animation-scale-up uk-animation-reverse`);
- typewriter.stop();
- }
-
- document.getElementById("terminal-close").onclick = closeWindow;
-
- typewriter.appendText("Python 3.6.4 (default, Jan 5 2018, 02:35:40)\n")
- .appendText("[GCC 7.2.1 20171224] on darwin\n")
- .appendText("Type \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n")
- .appendText(">>> ")
- .pauseFor(1000)
- .typeString("impor requests")
- .deleteChars(9)
- .typeString("t requests\n")
- .appendText(">>> ")
- .pauseFor(750)
- .changeSettings({"typingSpeed": "natural"})
- .typeString(`response = requests.${ window._RequestMethod }('https://pythim`)
- .deleteChars(2)
- .typeString("ondiscord.con/")
- .deleteChars(2)
- .typeString(`m${ window._Path }')\n`)
- .pauseFor(1000)
- .appendText(`&lt;Response [${ window._Code }]&gt;\n>>> `)
- .typeString("# hmmmm")
- .pauseFor(1000)
- .deleteChars(7)
- .pauseFor(1000)
- .typeString("response.text\n")
- .appendText(`${ window._ErrorMsg }\n>>> `)
- .start();
-};
diff --git a/static/js/countdown.js b/static/js/countdown.js
deleted file mode 100644
index 8ba2e58d..00000000
--- a/static/js/countdown.js
+++ /dev/null
@@ -1,78 +0,0 @@
-"use strict";
-
-(function(){ // Use a closure to avoid polluting global scope
- const startjam = new Date(Date.UTC(2018, 2, 23));
- const endjam = new Date(Date.UTC(2018, 2, 26));
-
- const now = Date.now();
- let goal;
-
- if (now + 1000 < endjam.getTime()) { // Only do anything if the jam hasn't ended
- UIkit.notification( // Spawn the notification
- {
- "message": ""
- + "<div class='uk-text-center'>"
- + " <span id=\"countdown-title\" class=\"uk-text-center\">"
- + " <a href=\"/info/jams\">Code Jam</a> Countdown"
- + " </span>"
- + " <p class='uk-text-large' id=\"countdown-remaining\">...</p>"
- + "<small style='font-size: 0.6em;'>(Tap/click to dismiss)</small>"
- + "</div>",
- "pos": "bottom-right",
- "timeout": endjam - now
- }
- );
-
- const heading = document.getElementById("countdown-title");
-
- if (now > startjam.getTime()) { // Jam's already started
- heading.innerHTML = "Current <a href=\"/info/jams\">code jam</a> ends in...";
- goal = endjam.getTime();
- } else {
- heading.innerHTML = "Next <a href=\"/info/jams\">code jam</a> starts in...";
- goal = startjam.getTime();
- }
-
- const refreshCountdown = setInterval(() => { // Create a repeating task
- let delta = goal - Date.now(); // Time until the goal is met
-
- if (delta <= 1000) { // Goal has been met, best reload
- clearInterval(refreshCountdown);
- return location.reload();
- }
-
- let days = Math.floor(delta / (24 * 60 * 60 * 1000));
- delta -= days * (24 * 60 * 60 * 1000);
-
- let hours = Math.floor(delta / (60 * 60 * 1000));
- delta -= hours * (60 * 60 * 1000);
-
- let minutes = Math.floor(delta / (60 * 1000));
- delta -= minutes * (60 * 1000);
-
- let seconds = Math.floor(delta / 1000);
-
- if (days < 10) {
- days = `0${days}`;
- }
-
- if (hours < 10) {
- hours = `0${hours}`;
- }
-
- if (minutes < 10) {
- minutes = `0${minutes}`;
- }
-
- if (seconds < 10) {
- seconds = `0${seconds}`;
- }
-
- try {
- document.getElementById("countdown-remaining").innerHTML = `${days}:${hours}:${minutes}:${seconds}`;
- } catch (e) { // Notification was probably closed, so we can stop counting
- return clearInterval(refreshCountdown);
- }
- }, 500);
- }
-})();
diff --git a/static/js/fouc.js b/static/js/fouc.js
deleted file mode 100644
index 01354863..00000000
--- a/static/js/fouc.js
+++ /dev/null
@@ -1,38 +0,0 @@
-"use strict";
-
-function getScript(url, integrity, crossorigin){
- const script = document.createElement("script");
- script.type = "text/javascript";
- script.src = url;
- script.defer = true;
- script.integrity = integrity;
- script.crossOrigin = crossorigin;
- document.getElementsByTagName("head")[0].appendChild(script);
-}
-
-function setClass(selector, myClass) {
- const element = document.querySelector(selector);
- // console.log(element);
- element.className = myClass;
-}
-
-function removeClass(selector, myClass) {
- const element = document.querySelector(selector);
- const reg = new RegExp(`(^| )${myClass}($| )`, "g");
- element.className = element.className.replace(reg, " ");
-}
-
-// hide the html when the page loads, but only if js is turned on.
-setClass("html", "prevent-fouc");
-
-// when the DOM has finished loading, unhide the html
-document.onreadystatechange = function () {
- if (document.readyState === "interactive") {
- removeClass("html", "prevent-fouc");
- getScript(
- "https://pro.fontawesome.com/releases/v5.0.13/js/all.js", // URL
- "sha384-d84LGg2pm9KhR4mCAs3N29GQ4OYNy+K+FBHX8WhimHpPm86c839++MDABegrZ3gn", // Integrity
- "anonymous" // Cross-origin
- );
- }
-};
diff --git a/static/js/jams.js b/static/js/jams.js
deleted file mode 100644
index fdc5c8ea..00000000
--- a/static/js/jams.js
+++ /dev/null
@@ -1,215 +0,0 @@
-"use strict";
-
-/* exported refreshLock, Actions */
-
-function refreshLock() {
- /* global editor, csrf_token */ // TODO: FIXME
- const oReq = new XMLHttpRequest();
- oReq.addEventListener("load", () => {
- const response = JSON.parse(oReq.responseText);
-
- if (response.error !== undefined) {
- document.getElementById("submit").disabled = true;
-
- if (response.error_lines !== undefined) {
- editor.session.setAnnotations(response.error_lines);
- document.getElementById("preview-div").innerHTML = "<h3>Error - see editor margin</h3>";
- } else {
- document.getElementById("preview-div").innerHTML = `<h3>Error</h3><p>${ response.error }<p>`;
- }
- } else {
- document.getElementById("submit").disabled = false;
- document.getElementById("preview-div").innerHTML = response.data;
-
- editor.session.setAnnotations([]);
- }
- });
-
- const data = editor.getValue();
-
- if (data.replace(" ", "").length < 1 || document.getElementById("title").value.length < 1) {
- document.getElementById("submit").disabled = true;
- return false;
- }
-
- oReq.open("POST", "/render");
-
- oReq.setRequestHeader("Content-type", "application/json");
- oReq.setRequestHeader("X-CSRFToken", csrf_token);
-
- oReq.send(JSON.stringify({"data": editor.getValue()}));
-}
-
-class Actions {
- constructor(url, csrf_token) {
- this.url = url;
- this.csrf_token = csrf_token;
- }
-
- send(action, method, data, callback) {
- const oReq = new XMLHttpRequest();
-
- oReq.addEventListener("load", () => {
- let result;
-
- try {
- result = JSON.parse(this.responseText);
- } catch (e) {
- return callback(false);
- }
-
- if ("error_code" in result) {
- return callback(false, result);
- }
-
- return callback(true, result);
- });
-
- data["action"] = action;
-
- const params = this.get_params(data);
- const url = `${this.url }?${ params}`;
-
- oReq.open(method, url);
- oReq.setRequestHeader("X-CSRFToken", this.csrf_token);
- oReq.send();
- }
-
- send_json(action, method, data, callback) {
- const oReq = new XMLHttpRequest();
-
- oReq.addEventListener("load", () => {
- let result;
-
- try {
- result = JSON.parse(oReq.responseText);
- } catch (e) {
- return callback(false);
- }
-
- if ("error_code" in result) {
- return callback(false, result);
- }
-
- return callback(true, result);
- });
-
- const obj = JSON.stringify(data);
-
- const params = this.get_params({"action": action});
- const url = `${this.url }?${ params}`;
-
- oReq.open(method, url);
- oReq.setRequestHeader("X-CSRFToken", this.csrf_token);
- oReq.send(obj);
- }
-
- get_params(data) { // https://stackoverflow.com/a/12040639
- return Object.keys(data).map((key) => {
- return [key, data[key]].map(encodeURIComponent).join("=");
- }).join("&");
- }
-
- set_state(jam, state, callback) {
- this.send(
- "state",
- "POST",
- {
- "jam": jam,
- "state": state
- },
- callback
- );
- }
-
- get_questions(callback) {
- this.send(
- "questions",
- "GET",
- {},
- callback
- );
- }
-
- create_question(data, callback) {
- this.send_json(
- "questions",
- "POST",
- data,
- callback
- );
- }
-
- delete_question(id, callback) {
- this.send(
- "question",
- "DELETE",
- {"id": id},
- callback
- );
- }
-
- associate_question(form, question, callback) {
- this.send(
- "associate_question",
- "POST",
- {
- "form": form,
- "question": question,
- },
- callback
- );
- }
-
- disassociate_question(form, question, callback) {
- this.send(
- "disassociate_question",
- "POST",
- {
- "form": form,
- "question": question,
- },
- callback
- );
- }
-
- create_infraction(id, reason, number, callback) {
- this.send(
- "infraction",
- "POST",
- {
- "participant": id,
- "reason": reason,
- "number": number
- },
- callback
- );
- }
-
- delete_infraction(id, callback) {
- this.send(
- "infraction",
- "DELETE",
- {"id": id},
- callback
- );
- }
-
- approve_application(id, callback) {
- this.send(
- "approve_application",
- "POST",
- {"id": id},
- callback
- );
- }
-
- unapprove_application(id, callback) {
- this.send(
- "unapprove_application",
- "POST",
- {"id": id},
- callback
- );
- }
-}
diff --git a/static/js/revision_diff.js b/static/js/revision_diff.js
deleted file mode 100644
index 0dd17544..00000000
--- a/static/js/revision_diff.js
+++ /dev/null
@@ -1,84 +0,0 @@
-"use strict";
-
-(function() {
- const buttons = document.querySelectorAll("td input"); // Fetch all radio buttons
- const id_reg = /compare-(before|after)-([\w|-]+)/; // Matches compare-after/before-ID
-
-
- function getRevisionId(element){
- const e = element.id.match(id_reg); // Match ID with RegExp
- return [e[1], e[2]]; // e is in format of [full id, after/before, ID] we only want ID & mode
- }
-
- function getRevision(id) {
- /* global revisions */ // TODO: FIXME
-
- const e = revisions.filter((x) => {
- // Filter through all revisions to find the selected one (revisions in declared in the template)
- return x.id === id;
- });
- return e[0];
- }
-
- function radioButtonChecked(element) {
- // console.log("change detected");
- const id = getRevisionId(element);
- const rev = getRevision(id[1]);
- if (id[0] === "after"){
- /*
- * Deselect the opposite checkbox to the one which has been checked
- * because we don't want checking of the same revision
- */
-
- document.querySelector(`#compare-before-${id[1]}`).checked = false;
-
- buttons.forEach((e) => {
- if (getRevisionId(e)[0] === "after" && e.id !== element.id) { // Deselect all checkboxes in the same row
- e.checked = false;
- }
- });
- } else { // This else does the same as above but for the before column
- document.querySelector(`#compare-after-${id[1]}`).checked = false;
- buttons.forEach((e) => {
- if (getRevisionId(e)[0] === "before" && e.id !== element.id) {
- e.checked = false;
- }
-
- // This makes sure that you do not compare a new revision with an old one
- if (getRevisionId(e)[0] === "after") {
- const tmprev = getRevision(getRevisionId(e)[1]);
- // console.log(tmprev);
- if (tmprev.date <= rev.date) {
- document.querySelector(`#${e.id}`).setAttribute("disabled", "");
- } else {
- document.querySelector(`#${e.id}`).removeAttribute("disabled");
- }
- }
- });
- }
-
- let aft, bef;
-
- buttons.forEach((button) => { // Find the selected posts
- const id = getRevisionId(button);
- if (button.checked && id[0] === "before") {
- bef = id[1];
- }
-
- if (button.checked && id[0] === "after") {
- aft = id[1];
- }
- });
-
- // Switch the buttons HREF to point to the correct compare URL
- document.getElementById("compare-submit").href = `/history/compare/${bef}/${aft}`;
-
- }
-
- buttons.forEach((button) => {
- button.checked = false; // Some browsers remember if a button is checked.
- button.onchange = function() {
- radioButtonChecked(button);
- };
- });
-})();
diff --git a/static/js/script.js b/static/js/script.js
new file mode 100644
index 00000000..62c4e3e4
--- /dev/null
+++ b/static/js/script.js
@@ -0,0 +1,2 @@
+"use strict";function error_typewriter(){const app=document.getElementById("error"),typewriter=new Typewriter(app,{loop:!1,deleteSpeed:40,typingSpeed:"natural",devMode:!1});document.getElementById("terminal-close").onclick=function(){const app=document.getElementById("win"),current_class=app.getAttribute("class");app.setAttribute("class",`${current_class} uk-animation-scale-up uk-animation-reverse`),typewriter.stop()},typewriter.appendText("Python 3.6.4 (default, Jan 5 2018, 02:35:40)\n").appendText("[GCC 7.2.1 20171224] on darwin\n").appendText('Type "help", "copyright", "credits" or "license" for more information.\n').appendText(">>> ").pauseFor(1e3).typeString("impor requests").deleteChars(9).typeString("t requests\n").appendText(">>> ").pauseFor(750).changeSettings({typingSpeed:"natural"}).typeString(`response = requests.${window._RequestMethod}('https://pythim`).deleteChars(2).typeString("ondiscord.con/").deleteChars(2).typeString(`m${window._Path}')\n`).pauseFor(1e3).appendText(`&lt;Response [${window._Code}]&gt;\n>>> `).typeString("# hmmmm").pauseFor(1e3).deleteChars(7).pauseFor(1e3).typeString("response.text\n").appendText(`${window._ErrorMsg}\n>>> `).start()}function getScript(url,integrity,cross_origin){const script=document.createElement("script");script.type="text/javascript",script.src=url,script.defer=!0,void 0!==integrity&&(script.integrity=integrity),void 0!==cross_origin&&(script.crossOrigin=cross_origin),document.getElementsByTagName("head")[0].appendChild(script)}function setClass(selector,my_class){document.querySelector(selector).className=my_class}function removeClass(selector,my_class){const element=document.querySelector(selector),reg=new RegExp(`(^| )${my_class}($| )`,"g");element.className=element.className.replace(reg," ")}!function(){const startjam=new Date(Date.UTC(2018,2,23)),endjam=new Date(Date.UTC(2018,2,26)),now=Date.now();let goal;if(now+1e3<endjam.getTime()){UIkit.notification({message:'<div class=\'uk-text-center\'> <span id="countdown-title" class="uk-text-center"> <a href="/info/jams">Code Jam</a> Countdown </span> <p class=\'uk-text-large\' id="countdown-remaining">...</p><small style=\'font-size: 0.6em;\'>(Tap/click to dismiss)</small></div>',pos:"bottom-right",timeout:endjam-now});const heading=document.getElementById("countdown-title");now>startjam.getTime()?(heading.innerHTML='Current <a href="/info/jams">code jam</a> ends in...',goal=endjam.getTime()):(heading.innerHTML='Next <a href="/info/jams">code jam</a> starts in...',goal=startjam.getTime());const refreshCountdown=setInterval(()=>{let delta=goal-Date.now();if(delta<=1e3)return clearInterval(refreshCountdown),location.reload();let days=Math.floor(delta/864e5);delta-=864e5*days;let hours=Math.floor(delta/36e5);delta-=36e5*hours;let minutes=Math.floor(delta/6e4);delta-=6e4*minutes;let seconds=Math.floor(delta/1e3);days<10&&(days=`0${days}`),hours<10&&(hours=`0${hours}`),minutes<10&&(minutes=`0${minutes}`),seconds<10&&(seconds=`0${seconds}`);try{document.getElementById("countdown-remaining").innerHTML=`${days}:${hours}:${minutes}:${seconds}`}catch(e){return clearInterval(refreshCountdown)}},500)}}(),setClass("html","prevent-fouc"),document.onreadystatechange=function(){"interactive"===document.readyState&&(removeClass("html","prevent-fouc"),getScript("https://pro.fontawesome.com/releases/v5.0.13/js/all.js","sha384-d84LGg2pm9KhR4mCAs3N29GQ4OYNy+K+FBHX8WhimHpPm86c839++MDABegrZ3gn","anonymous"),getScript("https://cdnjs.cloudflare.com/ajax/libs/ace/1.3.3/ace.js"),getScript("https://cdn.jsdelivr.net/npm/flatpickr"))};class JamActions{constructor(url,csrf_token){this.url=url,this.csrf_token=csrf_token}send(action,method,data,callback){data.action=action,$.ajax(this.url,{data:data,dataType:"json",headers:{"X-CSRFToken":this.csrf_token},method:method}).done(data=>callback(!("error_code"in data),data)).fail(()=>callback(!1))}send_json(action,method,data,callback){data.action=action,$.ajax(this.url,{data:JSON.stringify(data),dataType:"json",headers:{"X-CSRFToken":this.csrf_token},method:method}).done(data=>callback(!("error_code"in data),data)).fail(()=>callback(!1))}set_state(jam,state,callback){this.send("state","POST",{jam:jam,state:state},callback)}get_questions(callback){this.send("questions","GET",{},callback)}create_question(data,callback){this.send_json("questions","POST",data,callback)}delete_question(id,callback){this.send("question","DELETE",{id:id},callback)}associate_question(form,question,callback){this.send("associate_question","POST",{form:form,question:question},callback)}disassociate_question(form,question,callback){this.send("disassociate_question","POST",{form:form,question:question},callback)}create_infraction(id,reason,number,callback){this.send("infraction","POST",{participant:id,reason:reason,number:number},callback)}delete_infraction(id,callback){this.send("infraction","DELETE",{id:id},callback)}approve_application(id,callback){this.send("approve_application","POST",{id:id},callback)}unapprove_application(id,callback){this.send("unapprove_application","POST",{id:id},callback)}}function revision_diff(revisions){const buttons=document.querySelectorAll("td input"),id_reg=/compare-(before|after)-([\w|-]+)/;function getRevisionId(element){const e=element.id.match(id_reg);return[e[1],e[2]]}function getRevision(id){return revisions.filter(x=>x.id===id)[0]}buttons.forEach(button=>{button.checked=!1,button.onchange=function(){!function(element){const id=getRevisionId(element),rev=getRevision(id[1]);let aft,bef;"after"===id[0]?(document.querySelector(`#compare-before-${id[1]}`).checked=!1,buttons.forEach(e=>{"after"===getRevisionId(e)[0]&&e.id!==element.id&&(e.checked=!1)})):(document.querySelector(`#compare-after-${id[1]}`).checked=!1,buttons.forEach(e=>{"before"===getRevisionId(e)[0]&&e.id!==element.id&&(e.checked=!1),"after"===getRevisionId(e)[0]&&(getRevision(getRevisionId(e)[1]).date<=rev.date?document.querySelector(`#${e.id}`).setAttribute("disabled",""):document.querySelector(`#${e.id}`).removeAttribute("disabled"))})),buttons.forEach(button=>{const id=getRevisionId(button);button.checked&&"before"===id[0]&&(bef=id[1]),button.checked&&"after"===id[0]&&(aft=id[1])}),document.getElementById("compare-submit").href=`/history/compare/${bef}/${aft}`}(button)}})}function wiki_sidebar(){const sidebar=document.getElementById("wiki-sidebar");document.getElementById("wiki-sidebar-button").onclick=function(){sidebar.classList.contains("uk-visible@s")?sidebar.classList.remove("uk-visible@s"):sidebar.classList.add("uk-visible@s")}}!function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define(factory):global.moment=factory()}(this,function(){var hookCallback,some;function hooks(){return hookCallback.apply(null,arguments)}function isArray(input){return input instanceof Array||"[object Array]"===Object.prototype.toString.call(input)}function isObject(input){return null!=input&&"[object Object]"===Object.prototype.toString.call(input)}function isUndefined(input){return void 0===input}function isNumber(input){return"number"==typeof input||"[object Number]"===Object.prototype.toString.call(input)}function isDate(input){return input instanceof Date||"[object Date]"===Object.prototype.toString.call(input)}function map(arr,fn){var i,res=[];for(i=0;i<arr.length;++i)res.push(fn(arr[i],i));return res}function hasOwnProp(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function extend(a,b){for(var i in b)hasOwnProp(b,i)&&(a[i]=b[i]);return hasOwnProp(b,"toString")&&(a.toString=b.toString),hasOwnProp(b,"valueOf")&&(a.valueOf=b.valueOf),a}function createUTC(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,!0).utc()}function getParsingFlags(m){return null==m._pf&&(m._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),m._pf}function isValid(m){if(null==m._isValid){var flags=getParsingFlags(m),parsedParts=some.call(flags.parsedDateParts,function(i){return null!=i}),isNowValid=!isNaN(m._d.getTime())&&flags.overflow<0&&!flags.empty&&!flags.invalidMonth&&!flags.invalidWeekday&&!flags.weekdayMismatch&&!flags.nullInput&&!flags.invalidFormat&&!flags.userInvalidated&&(!flags.meridiem||flags.meridiem&&parsedParts);if(m._strict&&(isNowValid=isNowValid&&0===flags.charsLeftOver&&0===flags.unusedTokens.length&&void 0===flags.bigHour),null!=Object.isFrozen&&Object.isFrozen(m))return isNowValid;m._isValid=isNowValid}return m._isValid}function createInvalid(flags){var m=createUTC(NaN);return null!=flags?extend(getParsingFlags(m),flags):getParsingFlags(m).userInvalidated=!0,m}some=Array.prototype.some?Array.prototype.some:function(fun){for(var t=Object(this),len=t.length>>>0,i=0;i<len;i++)if(i in t&&fun.call(this,t[i],i,t))return!0;return!1};var momentProperties=hooks.momentProperties=[];function copyConfig(to,from){var i,prop,val;if(isUndefined(from._isAMomentObject)||(to._isAMomentObject=from._isAMomentObject),isUndefined(from._i)||(to._i=from._i),isUndefined(from._f)||(to._f=from._f),isUndefined(from._l)||(to._l=from._l),isUndefined(from._strict)||(to._strict=from._strict),isUndefined(from._tzm)||(to._tzm=from._tzm),isUndefined(from._isUTC)||(to._isUTC=from._isUTC),isUndefined(from._offset)||(to._offset=from._offset),isUndefined(from._pf)||(to._pf=getParsingFlags(from)),isUndefined(from._locale)||(to._locale=from._locale),momentProperties.length>0)for(i=0;i<momentProperties.length;i++)isUndefined(val=from[prop=momentProperties[i]])||(to[prop]=val);return to}var updateInProgress=!1;function Moment(config){copyConfig(this,config),this._d=new Date(null!=config._d?config._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===updateInProgress&&(updateInProgress=!0,hooks.updateOffset(this),updateInProgress=!1)}function isMoment(obj){return obj instanceof Moment||null!=obj&&null!=obj._isAMomentObject}function absFloor(number){return number<0?Math.ceil(number)||0:Math.floor(number)}function toInt(argumentForCoercion){var coercedNumber=+argumentForCoercion,value=0;return 0!==coercedNumber&&isFinite(coercedNumber)&&(value=absFloor(coercedNumber)),value}function compareArrays(array1,array2,dontConvert){var i,len=Math.min(array1.length,array2.length),lengthDiff=Math.abs(array1.length-array2.length),diffs=0;for(i=0;i<len;i++)(dontConvert&&array1[i]!==array2[i]||!dontConvert&&toInt(array1[i])!==toInt(array2[i]))&&diffs++;return diffs+lengthDiff}function warn(msg){!1===hooks.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+msg)}function deprecate(msg,fn){var firstTime=!0;return extend(function(){if(null!=hooks.deprecationHandler&&hooks.deprecationHandler(null,msg),firstTime){for(var arg,args=[],i=0;i<arguments.length;i++){if(arg="","object"==typeof arguments[i]){for(var key in arg+="\n["+i+"] ",arguments[0])arg+=key+": "+arguments[0][key]+", ";arg=arg.slice(0,-2)}else arg=arguments[i];args.push(arg)}warn(msg+"\nArguments: "+Array.prototype.slice.call(args).join("")+"\n"+(new Error).stack),firstTime=!1}return fn.apply(this,arguments)},fn)}var keys,deprecations={};function deprecateSimple(name,msg){null!=hooks.deprecationHandler&&hooks.deprecationHandler(name,msg),deprecations[name]||(warn(msg),deprecations[name]=!0)}function isFunction(input){return input instanceof Function||"[object Function]"===Object.prototype.toString.call(input)}function mergeConfigs(parentConfig,childConfig){var prop,res=extend({},parentConfig);for(prop in childConfig)hasOwnProp(childConfig,prop)&&(isObject(parentConfig[prop])&&isObject(childConfig[prop])?(res[prop]={},extend(res[prop],parentConfig[prop]),extend(res[prop],childConfig[prop])):null!=childConfig[prop]?res[prop]=childConfig[prop]:delete res[prop]);for(prop in parentConfig)hasOwnProp(parentConfig,prop)&&!hasOwnProp(childConfig,prop)&&isObject(parentConfig[prop])&&(res[prop]=extend({},res[prop]));return res}function Locale(config){null!=config&&this.set(config)}hooks.suppressDeprecationWarnings=!1,hooks.deprecationHandler=null,keys=Object.keys?Object.keys:function(obj){var i,res=[];for(i in obj)hasOwnProp(obj,i)&&res.push(i);return res};var aliases={};function addUnitAlias(unit,shorthand){var lowerCase=unit.toLowerCase();aliases[lowerCase]=aliases[lowerCase+"s"]=aliases[shorthand]=unit}function normalizeUnits(units){return"string"==typeof units?aliases[units]||aliases[units.toLowerCase()]:void 0}function normalizeObjectUnits(inputObject){var normalizedProp,prop,normalizedInput={};for(prop in inputObject)hasOwnProp(inputObject,prop)&&(normalizedProp=normalizeUnits(prop))&&(normalizedInput[normalizedProp]=inputObject[prop]);return normalizedInput}var priorities={};function addUnitPriority(unit,priority){priorities[unit]=priority}function zeroFill(number,targetLength,forceSign){var absNumber=""+Math.abs(number),zerosToFill=targetLength-absNumber.length;return(number>=0?forceSign?"+":"":"-")+Math.pow(10,Math.max(0,zerosToFill)).toString().substr(1)+absNumber}var formattingTokens=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,localFormattingTokens=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,formatFunctions={},formatTokenFunctions={};function addFormatToken(token,padded,ordinal,callback){var func=callback;"string"==typeof callback&&(func=function(){return this[callback]()}),token&&(formatTokenFunctions[token]=func),padded&&(formatTokenFunctions[padded[0]]=function(){return zeroFill(func.apply(this,arguments),padded[1],padded[2])}),ordinal&&(formatTokenFunctions[ordinal]=function(){return this.localeData().ordinal(func.apply(this,arguments),token)})}function formatMoment(m,format){return m.isValid()?(format=expandFormat(format,m.localeData()),formatFunctions[format]=formatFunctions[format]||function(format){var i,length,input,array=format.match(formattingTokens);for(i=0,length=array.length;i<length;i++)formatTokenFunctions[array[i]]?array[i]=formatTokenFunctions[array[i]]:array[i]=(input=array[i]).match(/\[[\s\S]/)?input.replace(/^\[|\]$/g,""):input.replace(/\\/g,"");return function(mom){var i,output="";for(i=0;i<length;i++)output+=isFunction(array[i])?array[i].call(mom,format):array[i];return output}}(format),formatFunctions[format](m)):m.localeData().invalidDate()}function expandFormat(format,locale){var i=5;function replaceLongDateFormatTokens(input){return locale.longDateFormat(input)||input}for(localFormattingTokens.lastIndex=0;i>=0&&localFormattingTokens.test(format);)format=format.replace(localFormattingTokens,replaceLongDateFormatTokens),localFormattingTokens.lastIndex=0,i-=1;return format}var match1=/\d/,match2=/\d\d/,match3=/\d{3}/,match4=/\d{4}/,match6=/[+-]?\d{6}/,match1to2=/\d\d?/,match3to4=/\d\d\d\d?/,match5to6=/\d\d\d\d\d\d?/,match1to3=/\d{1,3}/,match1to4=/\d{1,4}/,match1to6=/[+-]?\d{1,6}/,matchUnsigned=/\d+/,matchSigned=/[+-]?\d+/,matchOffset=/Z|[+-]\d\d:?\d\d/gi,matchShortOffset=/Z|[+-]\d\d(?::?\d\d)?/gi,matchWord=/[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,regexes={};function addRegexToken(token,regex,strictRegex){regexes[token]=isFunction(regex)?regex:function(isStrict,localeData){return isStrict&&strictRegex?strictRegex:regex}}function getParseRegexForToken(token,config){return hasOwnProp(regexes,token)?regexes[token](config._strict,config._locale):new RegExp(regexEscape(token.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(matched,p1,p2,p3,p4){return p1||p2||p3||p4})))}function regexEscape(s){return s.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var tokens={};function addParseToken(token,callback){var i,func=callback;for("string"==typeof token&&(token=[token]),isNumber(callback)&&(func=function(input,array){array[callback]=toInt(input)}),i=0;i<token.length;i++)tokens[token[i]]=func}function addWeekParseToken(token,callback){addParseToken(token,function(input,array,config,token){config._w=config._w||{},callback(input,config._w,config,token)})}function addTimeToArrayFromToken(token,input,config){null!=input&&hasOwnProp(tokens,token)&&tokens[token](input,config._a,config,token)}var YEAR=0,MONTH=1,DATE=2,HOUR=3,MINUTE=4,SECOND=5,MILLISECOND=6,WEEK=7,WEEKDAY=8;function daysInYear(year){return isLeapYear(year)?366:365}function isLeapYear(year){return year%4==0&&year%100!=0||year%400==0}addFormatToken("Y",0,0,function(){var y=this.year();return y<=9999?""+y:"+"+y}),addFormatToken(0,["YY",2],0,function(){return this.year()%100}),addFormatToken(0,["YYYY",4],0,"year"),addFormatToken(0,["YYYYY",5],0,"year"),addFormatToken(0,["YYYYYY",6,!0],0,"year"),addUnitAlias("year","y"),addUnitPriority("year",1),addRegexToken("Y",matchSigned),addRegexToken("YY",match1to2,match2),addRegexToken("YYYY",match1to4,match4),addRegexToken("YYYYY",match1to6,match6),addRegexToken("YYYYYY",match1to6,match6),addParseToken(["YYYYY","YYYYYY"],YEAR),addParseToken("YYYY",function(input,array){array[YEAR]=2===input.length?hooks.parseTwoDigitYear(input):toInt(input)}),addParseToken("YY",function(input,array){array[YEAR]=hooks.parseTwoDigitYear(input)}),addParseToken("Y",function(input,array){array[YEAR]=parseInt(input,10)}),hooks.parseTwoDigitYear=function(input){return toInt(input)+(toInt(input)>68?1900:2e3)};var indexOf,getSetYear=makeGetSet("FullYear",!0);function makeGetSet(unit,keepTime){return function(value){return null!=value?(set$1(this,unit,value),hooks.updateOffset(this,keepTime),this):get(this,unit)}}function get(mom,unit){return mom.isValid()?mom._d["get"+(mom._isUTC?"UTC":"")+unit]():NaN}function set$1(mom,unit,value){mom.isValid()&&!isNaN(value)&&("FullYear"===unit&&isLeapYear(mom.year())&&1===mom.month()&&29===mom.date()?mom._d["set"+(mom._isUTC?"UTC":"")+unit](value,mom.month(),daysInMonth(value,mom.month())):mom._d["set"+(mom._isUTC?"UTC":"")+unit](value))}function daysInMonth(year,month){if(isNaN(year)||isNaN(month))return NaN;var x,modMonth=(month%(x=12)+x)%x;return year+=(month-modMonth)/12,1===modMonth?isLeapYear(year)?29:28:31-modMonth%7%2}indexOf=Array.prototype.indexOf?Array.prototype.indexOf:function(o){var i;for(i=0;i<this.length;++i)if(this[i]===o)return i;return-1},addFormatToken("M",["MM",2],"Mo",function(){return this.month()+1}),addFormatToken("MMM",0,0,function(format){return this.localeData().monthsShort(this,format)}),addFormatToken("MMMM",0,0,function(format){return this.localeData().months(this,format)}),addUnitAlias("month","M"),addUnitPriority("month",8),addRegexToken("M",match1to2),addRegexToken("MM",match1to2,match2),addRegexToken("MMM",function(isStrict,locale){return locale.monthsShortRegex(isStrict)}),addRegexToken("MMMM",function(isStrict,locale){return locale.monthsRegex(isStrict)}),addParseToken(["M","MM"],function(input,array){array[MONTH]=toInt(input)-1}),addParseToken(["MMM","MMMM"],function(input,array,config,token){var month=config._locale.monthsParse(input,token,config._strict);null!=month?array[MONTH]=month:getParsingFlags(config).invalidMonth=input});var MONTHS_IN_FORMAT=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,defaultLocaleMonths="January_February_March_April_May_June_July_August_September_October_November_December".split("_");var defaultLocaleMonthsShort="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function setMonth(mom,value){var dayOfMonth;if(!mom.isValid())return mom;if("string"==typeof value)if(/^\d+$/.test(value))value=toInt(value);else if(!isNumber(value=mom.localeData().monthsParse(value)))return mom;return dayOfMonth=Math.min(mom.date(),daysInMonth(mom.year(),value)),mom._d["set"+(mom._isUTC?"UTC":"")+"Month"](value,dayOfMonth),mom}function getSetMonth(value){return null!=value?(setMonth(this,value),hooks.updateOffset(this,!0),this):get(this,"Month")}var defaultMonthsShortRegex=matchWord;var defaultMonthsRegex=matchWord;function computeMonthsParse(){function cmpLenRev(a,b){return b.length-a.length}var i,mom,shortPieces=[],longPieces=[],mixedPieces=[];for(i=0;i<12;i++)mom=createUTC([2e3,i]),shortPieces.push(this.monthsShort(mom,"")),longPieces.push(this.months(mom,"")),mixedPieces.push(this.months(mom,"")),mixedPieces.push(this.monthsShort(mom,""));for(shortPieces.sort(cmpLenRev),longPieces.sort(cmpLenRev),mixedPieces.sort(cmpLenRev),i=0;i<12;i++)shortPieces[i]=regexEscape(shortPieces[i]),longPieces[i]=regexEscape(longPieces[i]);for(i=0;i<24;i++)mixedPieces[i]=regexEscape(mixedPieces[i]);this._monthsRegex=new RegExp("^("+mixedPieces.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+longPieces.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+shortPieces.join("|")+")","i")}function createUTCDate(y){var date=new Date(Date.UTC.apply(null,arguments));return y<100&&y>=0&&isFinite(date.getUTCFullYear())&&date.setUTCFullYear(y),date}function firstWeekOffset(year,dow,doy){var fwd=7+dow-doy;return-((7+createUTCDate(year,0,fwd).getUTCDay()-dow)%7)+fwd-1}function dayOfYearFromWeeks(year,week,weekday,dow,doy){var resYear,resDayOfYear,dayOfYear=1+7*(week-1)+(7+weekday-dow)%7+firstWeekOffset(year,dow,doy);return dayOfYear<=0?resDayOfYear=daysInYear(resYear=year-1)+dayOfYear:dayOfYear>daysInYear(year)?(resYear=year+1,resDayOfYear=dayOfYear-daysInYear(year)):(resYear=year,resDayOfYear=dayOfYear),{year:resYear,dayOfYear:resDayOfYear}}function weekOfYear(mom,dow,doy){var resWeek,resYear,weekOffset=firstWeekOffset(mom.year(),dow,doy),week=Math.floor((mom.dayOfYear()-weekOffset-1)/7)+1;return week<1?resWeek=week+weeksInYear(resYear=mom.year()-1,dow,doy):week>weeksInYear(mom.year(),dow,doy)?(resWeek=week-weeksInYear(mom.year(),dow,doy),resYear=mom.year()+1):(resYear=mom.year(),resWeek=week),{week:resWeek,year:resYear}}function weeksInYear(year,dow,doy){var weekOffset=firstWeekOffset(year,dow,doy),weekOffsetNext=firstWeekOffset(year+1,dow,doy);return(daysInYear(year)-weekOffset+weekOffsetNext)/7}addFormatToken("w",["ww",2],"wo","week"),addFormatToken("W",["WW",2],"Wo","isoWeek"),addUnitAlias("week","w"),addUnitAlias("isoWeek","W"),addUnitPriority("week",5),addUnitPriority("isoWeek",5),addRegexToken("w",match1to2),addRegexToken("ww",match1to2,match2),addRegexToken("W",match1to2),addRegexToken("WW",match1to2,match2),addWeekParseToken(["w","ww","W","WW"],function(input,week,config,token){week[token.substr(0,1)]=toInt(input)});addFormatToken("d",0,"do","day"),addFormatToken("dd",0,0,function(format){return this.localeData().weekdaysMin(this,format)}),addFormatToken("ddd",0,0,function(format){return this.localeData().weekdaysShort(this,format)}),addFormatToken("dddd",0,0,function(format){return this.localeData().weekdays(this,format)}),addFormatToken("e",0,0,"weekday"),addFormatToken("E",0,0,"isoWeekday"),addUnitAlias("day","d"),addUnitAlias("weekday","e"),addUnitAlias("isoWeekday","E"),addUnitPriority("day",11),addUnitPriority("weekday",11),addUnitPriority("isoWeekday",11),addRegexToken("d",match1to2),addRegexToken("e",match1to2),addRegexToken("E",match1to2),addRegexToken("dd",function(isStrict,locale){return locale.weekdaysMinRegex(isStrict)}),addRegexToken("ddd",function(isStrict,locale){return locale.weekdaysShortRegex(isStrict)}),addRegexToken("dddd",function(isStrict,locale){return locale.weekdaysRegex(isStrict)}),addWeekParseToken(["dd","ddd","dddd"],function(input,week,config,token){var weekday=config._locale.weekdaysParse(input,token,config._strict);null!=weekday?week.d=weekday:getParsingFlags(config).invalidWeekday=input}),addWeekParseToken(["d","e","E"],function(input,week,config,token){week[token]=toInt(input)});var defaultLocaleWeekdays="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");var defaultLocaleWeekdaysShort="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");var defaultLocaleWeekdaysMin="Su_Mo_Tu_We_Th_Fr_Sa".split("_");var defaultWeekdaysRegex=matchWord;var defaultWeekdaysShortRegex=matchWord;var defaultWeekdaysMinRegex=matchWord;function computeWeekdaysParse(){function cmpLenRev(a,b){return b.length-a.length}var i,mom,minp,shortp,longp,minPieces=[],shortPieces=[],longPieces=[],mixedPieces=[];for(i=0;i<7;i++)mom=createUTC([2e3,1]).day(i),minp=this.weekdaysMin(mom,""),shortp=this.weekdaysShort(mom,""),longp=this.weekdays(mom,""),minPieces.push(minp),shortPieces.push(shortp),longPieces.push(longp),mixedPieces.push(minp),mixedPieces.push(shortp),mixedPieces.push(longp);for(minPieces.sort(cmpLenRev),shortPieces.sort(cmpLenRev),longPieces.sort(cmpLenRev),mixedPieces.sort(cmpLenRev),i=0;i<7;i++)shortPieces[i]=regexEscape(shortPieces[i]),longPieces[i]=regexEscape(longPieces[i]),mixedPieces[i]=regexEscape(mixedPieces[i]);this._weekdaysRegex=new RegExp("^("+mixedPieces.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+longPieces.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+shortPieces.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+minPieces.join("|")+")","i")}function hFormat(){return this.hours()%12||12}function meridiem(token,lowercase){addFormatToken(token,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),lowercase)})}function matchMeridiem(isStrict,locale){return locale._meridiemParse}addFormatToken("H",["HH",2],0,"hour"),addFormatToken("h",["hh",2],0,hFormat),addFormatToken("k",["kk",2],0,function(){return this.hours()||24}),addFormatToken("hmm",0,0,function(){return""+hFormat.apply(this)+zeroFill(this.minutes(),2)}),addFormatToken("hmmss",0,0,function(){return""+hFormat.apply(this)+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2)}),addFormatToken("Hmm",0,0,function(){return""+this.hours()+zeroFill(this.minutes(),2)}),addFormatToken("Hmmss",0,0,function(){return""+this.hours()+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2)}),meridiem("a",!0),meridiem("A",!1),addUnitAlias("hour","h"),addUnitPriority("hour",13),addRegexToken("a",matchMeridiem),addRegexToken("A",matchMeridiem),addRegexToken("H",match1to2),addRegexToken("h",match1to2),addRegexToken("k",match1to2),addRegexToken("HH",match1to2,match2),addRegexToken("hh",match1to2,match2),addRegexToken("kk",match1to2,match2),addRegexToken("hmm",match3to4),addRegexToken("hmmss",match5to6),addRegexToken("Hmm",match3to4),addRegexToken("Hmmss",match5to6),addParseToken(["H","HH"],HOUR),addParseToken(["k","kk"],function(input,array,config){var kInput=toInt(input);array[HOUR]=24===kInput?0:kInput}),addParseToken(["a","A"],function(input,array,config){config._isPm=config._locale.isPM(input),config._meridiem=input}),addParseToken(["h","hh"],function(input,array,config){array[HOUR]=toInt(input),getParsingFlags(config).bigHour=!0}),addParseToken("hmm",function(input,array,config){var pos=input.length-2;array[HOUR]=toInt(input.substr(0,pos)),array[MINUTE]=toInt(input.substr(pos)),getParsingFlags(config).bigHour=!0}),addParseToken("hmmss",function(input,array,config){var pos1=input.length-4,pos2=input.length-2;array[HOUR]=toInt(input.substr(0,pos1)),array[MINUTE]=toInt(input.substr(pos1,2)),array[SECOND]=toInt(input.substr(pos2)),getParsingFlags(config).bigHour=!0}),addParseToken("Hmm",function(input,array,config){var pos=input.length-2;array[HOUR]=toInt(input.substr(0,pos)),array[MINUTE]=toInt(input.substr(pos))}),addParseToken("Hmmss",function(input,array,config){var pos1=input.length-4,pos2=input.length-2;array[HOUR]=toInt(input.substr(0,pos1)),array[MINUTE]=toInt(input.substr(pos1,2)),array[SECOND]=toInt(input.substr(pos2))});var globalLocale,getSetHour=makeGetSet("Hours",!0),baseConfig={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",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:defaultLocaleMonths,monthsShort:defaultLocaleMonthsShort,week:{dow:0,doy:6},weekdays:defaultLocaleWeekdays,weekdaysMin:defaultLocaleWeekdaysMin,weekdaysShort:defaultLocaleWeekdaysShort,meridiemParse:/[ap]\.?m?\.?/i},locales={},localeFamilies={};function normalizeLocale(key){return key?key.toLowerCase().replace("_","-"):key}function loadLocale(name){var oldLocale=null;if(!locales[name]&&"undefined"!=typeof module&&module&&module.exports)try{oldLocale=globalLocale._abbr,require("./locale/"+name),getSetGlobalLocale(oldLocale)}catch(e){}return locales[name]}function getSetGlobalLocale(key,values){var data;return key&&((data=isUndefined(values)?getLocale(key):defineLocale(key,values))?globalLocale=data:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+key+" not found. Did you forget to load it?")),globalLocale._abbr}function defineLocale(name,config){if(null!==config){var locale,parentConfig=baseConfig;if(config.abbr=name,null!=locales[name])deprecateSimple("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."),parentConfig=locales[name]._config;else if(null!=config.parentLocale)if(null!=locales[config.parentLocale])parentConfig=locales[config.parentLocale]._config;else{if(null==(locale=loadLocale(config.parentLocale)))return localeFamilies[config.parentLocale]||(localeFamilies[config.parentLocale]=[]),localeFamilies[config.parentLocale].push({name:name,config:config}),null;parentConfig=locale._config}return locales[name]=new Locale(mergeConfigs(parentConfig,config)),localeFamilies[name]&&localeFamilies[name].forEach(function(x){defineLocale(x.name,x.config)}),getSetGlobalLocale(name),locales[name]}return delete locales[name],null}function getLocale(key){var locale;if(key&&key._locale&&key._locale._abbr&&(key=key._locale._abbr),!key)return globalLocale;if(!isArray(key)){if(locale=loadLocale(key))return locale;key=[key]}return function(names){for(var j,next,locale,split,i=0;i<names.length;){for(j=(split=normalizeLocale(names[i]).split("-")).length,next=(next=normalizeLocale(names[i+1]))?next.split("-"):null;j>0;){if(locale=loadLocale(split.slice(0,j).join("-")))return locale;if(next&&next.length>=j&&compareArrays(split,next,!0)>=j-1)break;j--}i++}return globalLocale}(key)}function checkOverflow(m){var overflow,a=m._a;return a&&-2===getParsingFlags(m).overflow&&(overflow=a[MONTH]<0||a[MONTH]>11?MONTH:a[DATE]<1||a[DATE]>daysInMonth(a[YEAR],a[MONTH])?DATE:a[HOUR]<0||a[HOUR]>24||24===a[HOUR]&&(0!==a[MINUTE]||0!==a[SECOND]||0!==a[MILLISECOND])?HOUR:a[MINUTE]<0||a[MINUTE]>59?MINUTE:a[SECOND]<0||a[SECOND]>59?SECOND:a[MILLISECOND]<0||a[MILLISECOND]>999?MILLISECOND:-1,getParsingFlags(m)._overflowDayOfYear&&(overflow<YEAR||overflow>DATE)&&(overflow=DATE),getParsingFlags(m)._overflowWeeks&&-1===overflow&&(overflow=WEEK),getParsingFlags(m)._overflowWeekday&&-1===overflow&&(overflow=WEEKDAY),getParsingFlags(m).overflow=overflow),m}function defaults(a,b,c){return null!=a?a:null!=b?b:c}function configFromArray(config){var i,date,currentDate,expectedWeekday,yearToUse,input=[];if(!config._d){for(currentDate=function(config){var nowValue=new Date(hooks.now());return config._useUTC?[nowValue.getUTCFullYear(),nowValue.getUTCMonth(),nowValue.getUTCDate()]:[nowValue.getFullYear(),nowValue.getMonth(),nowValue.getDate()]}(config),config._w&&null==config._a[DATE]&&null==config._a[MONTH]&&function(config){var w,weekYear,week,weekday,dow,doy,temp,weekdayOverflow;if(null!=(w=config._w).GG||null!=w.W||null!=w.E)dow=1,doy=4,weekYear=defaults(w.GG,config._a[YEAR],weekOfYear(createLocal(),1,4).year),week=defaults(w.W,1),((weekday=defaults(w.E,1))<1||weekday>7)&&(weekdayOverflow=!0);else{dow=config._locale._week.dow,doy=config._locale._week.doy;var curWeek=weekOfYear(createLocal(),dow,doy);weekYear=defaults(w.gg,config._a[YEAR],curWeek.year),week=defaults(w.w,curWeek.week),null!=w.d?((weekday=w.d)<0||weekday>6)&&(weekdayOverflow=!0):null!=w.e?(weekday=w.e+dow,(w.e<0||w.e>6)&&(weekdayOverflow=!0)):weekday=dow}week<1||week>weeksInYear(weekYear,dow,doy)?getParsingFlags(config)._overflowWeeks=!0:null!=weekdayOverflow?getParsingFlags(config)._overflowWeekday=!0:(temp=dayOfYearFromWeeks(weekYear,week,weekday,dow,doy),config._a[YEAR]=temp.year,config._dayOfYear=temp.dayOfYear)}(config),null!=config._dayOfYear&&(yearToUse=defaults(config._a[YEAR],currentDate[YEAR]),(config._dayOfYear>daysInYear(yearToUse)||0===config._dayOfYear)&&(getParsingFlags(config)._overflowDayOfYear=!0),date=createUTCDate(yearToUse,0,config._dayOfYear),config._a[MONTH]=date.getUTCMonth(),config._a[DATE]=date.getUTCDate()),i=0;i<3&&null==config._a[i];++i)config._a[i]=input[i]=currentDate[i];for(;i<7;i++)config._a[i]=input[i]=null==config._a[i]?2===i?1:0:config._a[i];24===config._a[HOUR]&&0===config._a[MINUTE]&&0===config._a[SECOND]&&0===config._a[MILLISECOND]&&(config._nextDay=!0,config._a[HOUR]=0),config._d=(config._useUTC?createUTCDate:function(y,m,d,h,M,s,ms){var date=new Date(y,m,d,h,M,s,ms);return y<100&&y>=0&&isFinite(date.getFullYear())&&date.setFullYear(y),date}).apply(null,input),expectedWeekday=config._useUTC?config._d.getUTCDay():config._d.getDay(),null!=config._tzm&&config._d.setUTCMinutes(config._d.getUTCMinutes()-config._tzm),config._nextDay&&(config._a[HOUR]=24),config._w&&void 0!==config._w.d&&config._w.d!==expectedWeekday&&(getParsingFlags(config).weekdayMismatch=!0)}}var extendedIsoRegex=/^\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)?)?$/,basicIsoRegex=/^\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)?)?$/,tzRegex=/Z|[+-]\d\d(?::?\d\d)?/,isoDates=[["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}/]],isoTimes=[["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/]],aspNetJsonRegex=/^\/?Date\((\-?\d+)/i;function configFromISO(config){var i,l,allowTime,dateFormat,timeFormat,tzFormat,string=config._i,match=extendedIsoRegex.exec(string)||basicIsoRegex.exec(string);if(match){for(getParsingFlags(config).iso=!0,i=0,l=isoDates.length;i<l;i++)if(isoDates[i][1].exec(match[1])){dateFormat=isoDates[i][0],allowTime=!1!==isoDates[i][2];break}if(null==dateFormat)return void(config._isValid=!1);if(match[3]){for(i=0,l=isoTimes.length;i<l;i++)if(isoTimes[i][1].exec(match[3])){timeFormat=(match[2]||" ")+isoTimes[i][0];break}if(null==timeFormat)return void(config._isValid=!1)}if(!allowTime&&null!=timeFormat)return void(config._isValid=!1);if(match[4]){if(!tzRegex.exec(match[4]))return void(config._isValid=!1);tzFormat="Z"}config._f=dateFormat+(timeFormat||"")+(tzFormat||""),configFromStringAndFormat(config)}else config._isValid=!1}var rfc2822=/^(?:(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}))$/;function extractFromRFC2822Strings(yearStr,monthStr,dayStr,hourStr,minuteStr,secondStr){var result=[function(yearStr){var year=parseInt(yearStr,10);if(year<=49)return 2e3+year;if(year<=999)return 1900+year;return year}(yearStr),defaultLocaleMonthsShort.indexOf(monthStr),parseInt(dayStr,10),parseInt(hourStr,10),parseInt(minuteStr,10)];return secondStr&&result.push(parseInt(secondStr,10)),result}var obsOffsets={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function configFromRFC2822(config){var match=rfc2822.exec(config._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(match){var parsedArray=extractFromRFC2822Strings(match[4],match[3],match[2],match[5],match[6],match[7]);if(!function(weekdayStr,parsedInput,config){return!weekdayStr||defaultLocaleWeekdaysShort.indexOf(weekdayStr)===new Date(parsedInput[0],parsedInput[1],parsedInput[2]).getDay()||(getParsingFlags(config).weekdayMismatch=!0,config._isValid=!1,!1)}(match[1],parsedArray,config))return;config._a=parsedArray,config._tzm=function(obsOffset,militaryOffset,numOffset){if(obsOffset)return obsOffsets[obsOffset];if(militaryOffset)return 0;var hm=parseInt(numOffset,10),m=hm%100;return(hm-m)/100*60+m}(match[8],match[9],match[10]),config._d=createUTCDate.apply(null,config._a),config._d.setUTCMinutes(config._d.getUTCMinutes()-config._tzm),getParsingFlags(config).rfc2822=!0}else config._isValid=!1}function configFromStringAndFormat(config){if(config._f!==hooks.ISO_8601)if(config._f!==hooks.RFC_2822){config._a=[],getParsingFlags(config).empty=!0;var i,parsedInput,tokens,token,skipped,string=""+config._i,stringLength=string.length,totalParsedInputLength=0;for(tokens=expandFormat(config._f,config._locale).match(formattingTokens)||[],i=0;i<tokens.length;i++)token=tokens[i],(parsedInput=(string.match(getParseRegexForToken(token,config))||[])[0])&&((skipped=string.substr(0,string.indexOf(parsedInput))).length>0&&getParsingFlags(config).unusedInput.push(skipped),string=string.slice(string.indexOf(parsedInput)+parsedInput.length),totalParsedInputLength+=parsedInput.length),formatTokenFunctions[token]?(parsedInput?getParsingFlags(config).empty=!1:getParsingFlags(config).unusedTokens.push(token),addTimeToArrayFromToken(token,parsedInput,config)):config._strict&&!parsedInput&&getParsingFlags(config).unusedTokens.push(token);getParsingFlags(config).charsLeftOver=stringLength-totalParsedInputLength,string.length>0&&getParsingFlags(config).unusedInput.push(string),config._a[HOUR]<=12&&!0===getParsingFlags(config).bigHour&&config._a[HOUR]>0&&(getParsingFlags(config).bigHour=void 0),getParsingFlags(config).parsedDateParts=config._a.slice(0),getParsingFlags(config).meridiem=config._meridiem,config._a[HOUR]=function(locale,hour,meridiem){var isPm;if(null==meridiem)return hour;return null!=locale.meridiemHour?locale.meridiemHour(hour,meridiem):null!=locale.isPM?((isPm=locale.isPM(meridiem))&&hour<12&&(hour+=12),isPm||12!==hour||(hour=0),hour):hour}(config._locale,config._a[HOUR],config._meridiem),configFromArray(config),checkOverflow(config)}else configFromRFC2822(config);else configFromISO(config)}function prepareConfig(config){var input=config._i,format=config._f;return config._locale=config._locale||getLocale(config._l),null===input||void 0===format&&""===input?createInvalid({nullInput:!0}):("string"==typeof input&&(config._i=input=config._locale.preparse(input)),isMoment(input)?new Moment(checkOverflow(input)):(isDate(input)?config._d=input:isArray(format)?function(config){var tempConfig,bestMoment,scoreToBeat,i,currentScore;if(0===config._f.length)return getParsingFlags(config).invalidFormat=!0,void(config._d=new Date(NaN));for(i=0;i<config._f.length;i++)currentScore=0,tempConfig=copyConfig({},config),null!=config._useUTC&&(tempConfig._useUTC=config._useUTC),tempConfig._f=config._f[i],configFromStringAndFormat(tempConfig),isValid(tempConfig)&&(currentScore+=getParsingFlags(tempConfig).charsLeftOver,currentScore+=10*getParsingFlags(tempConfig).unusedTokens.length,getParsingFlags(tempConfig).score=currentScore,(null==scoreToBeat||currentScore<scoreToBeat)&&(scoreToBeat=currentScore,bestMoment=tempConfig));extend(config,bestMoment||tempConfig)}(config):format?configFromStringAndFormat(config):function(config){var input=config._i;isUndefined(input)?config._d=new Date(hooks.now()):isDate(input)?config._d=new Date(input.valueOf()):"string"==typeof input?function(config){var matched=aspNetJsonRegex.exec(config._i);null===matched?(configFromISO(config),!1===config._isValid&&(delete config._isValid,configFromRFC2822(config),!1===config._isValid&&(delete config._isValid,hooks.createFromInputFallback(config)))):config._d=new Date(+matched[1])}(config):isArray(input)?(config._a=map(input.slice(0),function(obj){return parseInt(obj,10)}),configFromArray(config)):isObject(input)?function(config){if(!config._d){var i=normalizeObjectUnits(config._i);config._a=map([i.year,i.month,i.day||i.date,i.hour,i.minute,i.second,i.millisecond],function(obj){return obj&&parseInt(obj,10)}),configFromArray(config)}}(config):isNumber(input)?config._d=new Date(input):hooks.createFromInputFallback(config)}(config),isValid(config)||(config._d=null),config))}function createLocalOrUTC(input,format,locale,strict,isUTC){var res,c={};return!0!==locale&&!1!==locale||(strict=locale,locale=void 0),(isObject(input)&&function(obj){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(obj).length;var k;for(k in obj)if(obj.hasOwnProperty(k))return!1;return!0}(input)||isArray(input)&&0===input.length)&&(input=void 0),c._isAMomentObject=!0,c._useUTC=c._isUTC=isUTC,c._l=locale,c._i=input,c._f=format,c._strict=strict,(res=new Moment(checkOverflow(prepareConfig(c))))._nextDay&&(res.add(1,"d"),res._nextDay=void 0),res}function createLocal(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,!1)}hooks.createFromInputFallback=deprecate("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(config){config._d=new Date(config._i+(config._useUTC?" UTC":""))}),hooks.ISO_8601=function(){},hooks.RFC_2822=function(){};var prototypeMin=deprecate("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var other=createLocal.apply(null,arguments);return this.isValid()&&other.isValid()?other<this?this:other:createInvalid()}),prototypeMax=deprecate("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var other=createLocal.apply(null,arguments);return this.isValid()&&other.isValid()?other>this?this:other:createInvalid()});function pickBy(fn,moments){var res,i;if(1===moments.length&&isArray(moments[0])&&(moments=moments[0]),!moments.length)return createLocal();for(res=moments[0],i=1;i<moments.length;++i)moments[i].isValid()&&!moments[i][fn](res)||(res=moments[i]);return res}var ordering=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Duration(duration){var normalizedInput=normalizeObjectUnits(duration),years=normalizedInput.year||0,quarters=normalizedInput.quarter||0,months=normalizedInput.month||0,weeks=normalizedInput.week||0,days=normalizedInput.day||0,hours=normalizedInput.hour||0,minutes=normalizedInput.minute||0,seconds=normalizedInput.second||0,milliseconds=normalizedInput.millisecond||0;this._isValid=function(m){for(var key in m)if(-1===indexOf.call(ordering,key)||null!=m[key]&&isNaN(m[key]))return!1;for(var unitHasDecimal=!1,i=0;i<ordering.length;++i)if(m[ordering[i]]){if(unitHasDecimal)return!1;parseFloat(m[ordering[i]])!==toInt(m[ordering[i]])&&(unitHasDecimal=!0)}return!0}(normalizedInput),this._milliseconds=+milliseconds+1e3*seconds+6e4*minutes+1e3*hours*60*60,this._days=+days+7*weeks,this._months=+months+3*quarters+12*years,this._data={},this._locale=getLocale(),this._bubble()}function isDuration(obj){return obj instanceof Duration}function absRound(number){return number<0?-1*Math.round(-1*number):Math.round(number)}function offset(token,separator){addFormatToken(token,0,0,function(){var offset=this.utcOffset(),sign="+";return offset<0&&(offset=-offset,sign="-"),sign+zeroFill(~~(offset/60),2)+separator+zeroFill(~~offset%60,2)})}offset("Z",":"),offset("ZZ",""),addRegexToken("Z",matchShortOffset),addRegexToken("ZZ",matchShortOffset),addParseToken(["Z","ZZ"],function(input,array,config){config._useUTC=!0,config._tzm=offsetFromString(matchShortOffset,input)});var chunkOffset=/([\+\-]|\d\d)/gi;function offsetFromString(matcher,string){var matches=(string||"").match(matcher);if(null===matches)return null;var parts=((matches[matches.length-1]||[])+"").match(chunkOffset)||["-",0,0],minutes=60*parts[1]+toInt(parts[2]);return 0===minutes?0:"+"===parts[0]?minutes:-minutes}function cloneWithOffset(input,model){var res,diff;return model._isUTC?(res=model.clone(),diff=(isMoment(input)||isDate(input)?input.valueOf():createLocal(input).valueOf())-res.valueOf(),res._d.setTime(res._d.valueOf()+diff),hooks.updateOffset(res,!1),res):createLocal(input).local()}function getDateOffset(m){return 15*-Math.round(m._d.getTimezoneOffset()/15)}function isUtc(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}hooks.updateOffset=function(){};var aspNetRegex=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,isoRegex=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function createDuration(input,key){var sign,ret,diffRes,duration=input,match=null;return isDuration(input)?duration={ms:input._milliseconds,d:input._days,M:input._months}:isNumber(input)?(duration={},key?duration[key]=input:duration.milliseconds=input):(match=aspNetRegex.exec(input))?(sign="-"===match[1]?-1:1,duration={y:0,d:toInt(match[DATE])*sign,h:toInt(match[HOUR])*sign,m:toInt(match[MINUTE])*sign,s:toInt(match[SECOND])*sign,ms:toInt(absRound(1e3*match[MILLISECOND]))*sign}):(match=isoRegex.exec(input))?(sign="-"===match[1]?-1:(match[1],1),duration={y:parseIso(match[2],sign),M:parseIso(match[3],sign),w:parseIso(match[4],sign),d:parseIso(match[5],sign),h:parseIso(match[6],sign),m:parseIso(match[7],sign),s:parseIso(match[8],sign)}):null==duration?duration={}:"object"==typeof duration&&("from"in duration||"to"in duration)&&(diffRes=function(base,other){var res;if(!base.isValid()||!other.isValid())return{milliseconds:0,months:0};other=cloneWithOffset(other,base),base.isBefore(other)?res=positiveMomentsDifference(base,other):((res=positiveMomentsDifference(other,base)).milliseconds=-res.milliseconds,res.months=-res.months);return res}(createLocal(duration.from),createLocal(duration.to)),(duration={}).ms=diffRes.milliseconds,duration.M=diffRes.months),ret=new Duration(duration),isDuration(input)&&hasOwnProp(input,"_locale")&&(ret._locale=input._locale),ret}function parseIso(inp,sign){var res=inp&&parseFloat(inp.replace(",","."));return(isNaN(res)?0:res)*sign}function positiveMomentsDifference(base,other){var res={milliseconds:0,months:0};return res.months=other.month()-base.month()+12*(other.year()-base.year()),base.clone().add(res.months,"M").isAfter(other)&&--res.months,res.milliseconds=+other-+base.clone().add(res.months,"M"),res}function createAdder(direction,name){return function(val,period){var tmp;return null===period||isNaN(+period)||(deprecateSimple(name,"moment()."+name+"(period, number) is deprecated. Please use moment()."+name+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),tmp=val,val=period,period=tmp),addSubtract(this,createDuration(val="string"==typeof val?+val:val,period),direction),this}}function addSubtract(mom,duration,isAdding,updateOffset){var milliseconds=duration._milliseconds,days=absRound(duration._days),months=absRound(duration._months);mom.isValid()&&(updateOffset=null==updateOffset||updateOffset,months&&setMonth(mom,get(mom,"Month")+months*isAdding),days&&set$1(mom,"Date",get(mom,"Date")+days*isAdding),milliseconds&&mom._d.setTime(mom._d.valueOf()+milliseconds*isAdding),updateOffset&&hooks.updateOffset(mom,days||months))}createDuration.fn=Duration.prototype,createDuration.invalid=function(){return createDuration(NaN)};var add=createAdder(1,"add"),subtract=createAdder(-1,"subtract");function monthDiff(a,b){var wholeMonthDiff=12*(b.year()-a.year())+(b.month()-a.month()),anchor=a.clone().add(wholeMonthDiff,"months");return-(wholeMonthDiff+(b-anchor<0?(b-anchor)/(anchor-a.clone().add(wholeMonthDiff-1,"months")):(b-anchor)/(a.clone().add(wholeMonthDiff+1,"months")-anchor)))||0}function locale(key){var newLocaleData;return void 0===key?this._locale._abbr:(null!=(newLocaleData=getLocale(key))&&(this._locale=newLocaleData),this)}hooks.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",hooks.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var lang=deprecate("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(key){return void 0===key?this.localeData():this.locale(key)});function localeData(){return this._locale}function addWeekYearFormatToken(token,getter){addFormatToken(0,[token,token.length],0,getter)}function getSetWeekYearHelper(input,week,weekday,dow,doy){var weeksTarget;return null==input?weekOfYear(this,dow,doy).year:(week>(weeksTarget=weeksInYear(input,dow,doy))&&(week=weeksTarget),function(weekYear,week,weekday,dow,doy){var dayOfYearData=dayOfYearFromWeeks(weekYear,week,weekday,dow,doy),date=createUTCDate(dayOfYearData.year,0,dayOfYearData.dayOfYear);return this.year(date.getUTCFullYear()),this.month(date.getUTCMonth()),this.date(date.getUTCDate()),this}.call(this,input,week,weekday,dow,doy))}addFormatToken(0,["gg",2],0,function(){return this.weekYear()%100}),addFormatToken(0,["GG",2],0,function(){return this.isoWeekYear()%100}),addWeekYearFormatToken("gggg","weekYear"),addWeekYearFormatToken("ggggg","weekYear"),addWeekYearFormatToken("GGGG","isoWeekYear"),addWeekYearFormatToken("GGGGG","isoWeekYear"),addUnitAlias("weekYear","gg"),addUnitAlias("isoWeekYear","GG"),addUnitPriority("weekYear",1),addUnitPriority("isoWeekYear",1),addRegexToken("G",matchSigned),addRegexToken("g",matchSigned),addRegexToken("GG",match1to2,match2),addRegexToken("gg",match1to2,match2),addRegexToken("GGGG",match1to4,match4),addRegexToken("gggg",match1to4,match4),addRegexToken("GGGGG",match1to6,match6),addRegexToken("ggggg",match1to6,match6),addWeekParseToken(["gggg","ggggg","GGGG","GGGGG"],function(input,week,config,token){week[token.substr(0,2)]=toInt(input)}),addWeekParseToken(["gg","GG"],function(input,week,config,token){week[token]=hooks.parseTwoDigitYear(input)}),addFormatToken("Q",0,"Qo","quarter"),addUnitAlias("quarter","Q"),addUnitPriority("quarter",7),addRegexToken("Q",match1),addParseToken("Q",function(input,array){array[MONTH]=3*(toInt(input)-1)}),addFormatToken("D",["DD",2],"Do","date"),addUnitAlias("date","D"),addUnitPriority("date",9),addRegexToken("D",match1to2),addRegexToken("DD",match1to2,match2),addRegexToken("Do",function(isStrict,locale){return isStrict?locale._dayOfMonthOrdinalParse||locale._ordinalParse:locale._dayOfMonthOrdinalParseLenient}),addParseToken(["D","DD"],DATE),addParseToken("Do",function(input,array){array[DATE]=toInt(input.match(match1to2)[0])});var getSetDayOfMonth=makeGetSet("Date",!0);addFormatToken("DDD",["DDDD",3],"DDDo","dayOfYear"),addUnitAlias("dayOfYear","DDD"),addUnitPriority("dayOfYear",4),addRegexToken("DDD",match1to3),addRegexToken("DDDD",match3),addParseToken(["DDD","DDDD"],function(input,array,config){config._dayOfYear=toInt(input)}),addFormatToken("m",["mm",2],0,"minute"),addUnitAlias("minute","m"),addUnitPriority("minute",14),addRegexToken("m",match1to2),addRegexToken("mm",match1to2,match2),addParseToken(["m","mm"],MINUTE);var getSetMinute=makeGetSet("Minutes",!1);addFormatToken("s",["ss",2],0,"second"),addUnitAlias("second","s"),addUnitPriority("second",15),addRegexToken("s",match1to2),addRegexToken("ss",match1to2,match2),addParseToken(["s","ss"],SECOND);var token,getSetSecond=makeGetSet("Seconds",!1);for(addFormatToken("S",0,0,function(){return~~(this.millisecond()/100)}),addFormatToken(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),addFormatToken(0,["SSS",3],0,"millisecond"),addFormatToken(0,["SSSS",4],0,function(){return 10*this.millisecond()}),addFormatToken(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),addFormatToken(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),addFormatToken(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),addFormatToken(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),addFormatToken(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),addUnitAlias("millisecond","ms"),addUnitPriority("millisecond",16),addRegexToken("S",match1to3,match1),addRegexToken("SS",match1to3,match2),addRegexToken("SSS",match1to3,match3),token="SSSS";token.length<=9;token+="S")addRegexToken(token,matchUnsigned);function parseMs(input,array){array[MILLISECOND]=toInt(1e3*("0."+input))}for(token="S";token.length<=9;token+="S")addParseToken(token,parseMs);var getSetMillisecond=makeGetSet("Milliseconds",!1);addFormatToken("z",0,0,"zoneAbbr"),addFormatToken("zz",0,0,"zoneName");var proto=Moment.prototype;function preParsePostFormat(string){return string}proto.add=add,proto.calendar=function(time,formats){var now=time||createLocal(),sod=cloneWithOffset(now,this).startOf("day"),format=hooks.calendarFormat(this,sod)||"sameElse",output=formats&&(isFunction(formats[format])?formats[format].call(this,now):formats[format]);return this.format(output||this.localeData().calendar(format,this,createLocal(now)))},proto.clone=function(){return new Moment(this)},proto.diff=function(input,units,asFloat){var that,zoneDelta,output;if(!this.isValid())return NaN;if(!(that=cloneWithOffset(input,this)).isValid())return NaN;switch(zoneDelta=6e4*(that.utcOffset()-this.utcOffset()),units=normalizeUnits(units)){case"year":output=monthDiff(this,that)/12;break;case"month":output=monthDiff(this,that);break;case"quarter":output=monthDiff(this,that)/3;break;case"second":output=(this-that)/1e3;break;case"minute":output=(this-that)/6e4;break;case"hour":output=(this-that)/36e5;break;case"day":output=(this-that-zoneDelta)/864e5;break;case"week":output=(this-that-zoneDelta)/6048e5;break;default:output=this-that}return asFloat?output:absFloor(output)},proto.endOf=function(units){return void 0===(units=normalizeUnits(units))||"millisecond"===units?this:("date"===units&&(units="day"),this.startOf(units).add(1,"isoWeek"===units?"week":units).subtract(1,"ms"))},proto.format=function(inputString){inputString||(inputString=this.isUtc()?hooks.defaultFormatUtc:hooks.defaultFormat);var output=formatMoment(this,inputString);return this.localeData().postformat(output)},proto.from=function(time,withoutSuffix){return this.isValid()&&(isMoment(time)&&time.isValid()||createLocal(time).isValid())?createDuration({to:this,from:time}).locale(this.locale()).humanize(!withoutSuffix):this.localeData().invalidDate()},proto.fromNow=function(withoutSuffix){return this.from(createLocal(),withoutSuffix)},proto.to=function(time,withoutSuffix){return this.isValid()&&(isMoment(time)&&time.isValid()||createLocal(time).isValid())?createDuration({from:this,to:time}).locale(this.locale()).humanize(!withoutSuffix):this.localeData().invalidDate()},proto.toNow=function(withoutSuffix){return this.to(createLocal(),withoutSuffix)},proto.get=function(units){return isFunction(this[units=normalizeUnits(units)])?this[units]():this},proto.invalidAt=function(){return getParsingFlags(this).overflow},proto.isAfter=function(input,units){var localInput=isMoment(input)?input:createLocal(input);return!(!this.isValid()||!localInput.isValid())&&("millisecond"===(units=normalizeUnits(isUndefined(units)?"millisecond":units))?this.valueOf()>localInput.valueOf():localInput.valueOf()<this.clone().startOf(units).valueOf())},proto.isBefore=function(input,units){var localInput=isMoment(input)?input:createLocal(input);return!(!this.isValid()||!localInput.isValid())&&("millisecond"===(units=normalizeUnits(isUndefined(units)?"millisecond":units))?this.valueOf()<localInput.valueOf():this.clone().endOf(units).valueOf()<localInput.valueOf())},proto.isBetween=function(from,to,units,inclusivity){return("("===(inclusivity=inclusivity||"()")[0]?this.isAfter(from,units):!this.isBefore(from,units))&&(")"===inclusivity[1]?this.isBefore(to,units):!this.isAfter(to,units))},proto.isSame=function(input,units){var inputMs,localInput=isMoment(input)?input:createLocal(input);return!(!this.isValid()||!localInput.isValid())&&("millisecond"===(units=normalizeUnits(units||"millisecond"))?this.valueOf()===localInput.valueOf():(inputMs=localInput.valueOf(),this.clone().startOf(units).valueOf()<=inputMs&&inputMs<=this.clone().endOf(units).valueOf()))},proto.isSameOrAfter=function(input,units){return this.isSame(input,units)||this.isAfter(input,units)},proto.isSameOrBefore=function(input,units){return this.isSame(input,units)||this.isBefore(input,units)},proto.isValid=function(){return isValid(this)},proto.lang=lang,proto.locale=locale,proto.localeData=localeData,proto.max=prototypeMax,proto.min=prototypeMin,proto.parsingFlags=function(){return extend({},getParsingFlags(this))},proto.set=function(units,value){if("object"==typeof units)for(var prioritized=function(unitsObj){var units=[];for(var u in unitsObj)units.push({unit:u,priority:priorities[u]});return units.sort(function(a,b){return a.priority-b.priority}),units}(units=normalizeObjectUnits(units)),i=0;i<prioritized.length;i++)this[prioritized[i].unit](units[prioritized[i].unit]);else if(isFunction(this[units=normalizeUnits(units)]))return this[units](value);return this},proto.startOf=function(units){switch(units=normalizeUnits(units)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===units&&this.weekday(0),"isoWeek"===units&&this.isoWeekday(1),"quarter"===units&&this.month(3*Math.floor(this.month()/3)),this},proto.subtract=subtract,proto.toArray=function(){var m=this;return[m.year(),m.month(),m.date(),m.hour(),m.minute(),m.second(),m.millisecond()]},proto.toObject=function(){var m=this;return{years:m.year(),months:m.month(),date:m.date(),hours:m.hours(),minutes:m.minutes(),seconds:m.seconds(),milliseconds:m.milliseconds()}},proto.toDate=function(){return new Date(this.valueOf())},proto.toISOString=function(keepOffset){if(!this.isValid())return null;var utc=!0!==keepOffset,m=utc?this.clone().utc():this;return m.year()<0||m.year()>9999?formatMoment(m,utc?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):isFunction(Date.prototype.toISOString)?utc?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",formatMoment(m,"Z")):formatMoment(m,utc?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},proto.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var func="moment",zone="";this.isLocal()||(func=0===this.utcOffset()?"moment.utc":"moment.parseZone",zone="Z");var prefix="["+func+'("]',year=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",suffix=zone+'[")]';return this.format(prefix+year+"-MM-DD[T]HH:mm:ss.SSS"+suffix)},proto.toJSON=function(){return this.isValid()?this.toISOString():null},proto.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},proto.unix=function(){return Math.floor(this.valueOf()/1e3)},proto.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},proto.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},proto.year=getSetYear,proto.isLeapYear=function(){return isLeapYear(this.year())},proto.weekYear=function(input){return getSetWeekYearHelper.call(this,input,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},proto.isoWeekYear=function(input){return getSetWeekYearHelper.call(this,input,this.isoWeek(),this.isoWeekday(),1,4)},proto.quarter=proto.quarters=function(input){return null==input?Math.ceil((this.month()+1)/3):this.month(3*(input-1)+this.month()%3)},proto.month=getSetMonth,proto.daysInMonth=function(){return daysInMonth(this.year(),this.month())},proto.week=proto.weeks=function(input){var week=this.localeData().week(this);return null==input?week:this.add(7*(input-week),"d")},proto.isoWeek=proto.isoWeeks=function(input){var week=weekOfYear(this,1,4).week;return null==input?week:this.add(7*(input-week),"d")},proto.weeksInYear=function(){var weekInfo=this.localeData()._week;return weeksInYear(this.year(),weekInfo.dow,weekInfo.doy)},proto.isoWeeksInYear=function(){return weeksInYear(this.year(),1,4)},proto.date=getSetDayOfMonth,proto.day=proto.days=function(input){if(!this.isValid())return null!=input?this:NaN;var day=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=input?(input=function(input,locale){return"string"!=typeof input?input:isNaN(input)?"number"==typeof(input=locale.weekdaysParse(input))?input:null:parseInt(input,10)}(input,this.localeData()),this.add(input-day,"d")):day},proto.weekday=function(input){if(!this.isValid())return null!=input?this:NaN;var weekday=(this.day()+7-this.localeData()._week.dow)%7;return null==input?weekday:this.add(input-weekday,"d")},proto.isoWeekday=function(input){if(!this.isValid())return null!=input?this:NaN;if(null!=input){var weekday=function(input,locale){return"string"==typeof input?locale.weekdaysParse(input)%7||7:isNaN(input)?null:input}(input,this.localeData());return this.day(this.day()%7?weekday:weekday-7)}return this.day()||7},proto.dayOfYear=function(input){var dayOfYear=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==input?dayOfYear:this.add(input-dayOfYear,"d")},proto.hour=proto.hours=getSetHour,proto.minute=proto.minutes=getSetMinute,proto.second=proto.seconds=getSetSecond,proto.millisecond=proto.milliseconds=getSetMillisecond,proto.utcOffset=function(input,keepLocalTime,keepMinutes){var localAdjust,offset=this._offset||0;if(!this.isValid())return null!=input?this:NaN;if(null!=input){if("string"==typeof input){if(null===(input=offsetFromString(matchShortOffset,input)))return this}else Math.abs(input)<16&&!keepMinutes&&(input*=60);return!this._isUTC&&keepLocalTime&&(localAdjust=getDateOffset(this)),this._offset=input,this._isUTC=!0,null!=localAdjust&&this.add(localAdjust,"m"),offset!==input&&(!keepLocalTime||this._changeInProgress?addSubtract(this,createDuration(input-offset,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,hooks.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?offset:getDateOffset(this)},proto.utc=function(keepLocalTime){return this.utcOffset(0,keepLocalTime)},proto.local=function(keepLocalTime){return this._isUTC&&(this.utcOffset(0,keepLocalTime),this._isUTC=!1,keepLocalTime&&this.subtract(getDateOffset(this),"m")),this},proto.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var tZone=offsetFromString(matchOffset,this._i);null!=tZone?this.utcOffset(tZone):this.utcOffset(0,!0)}return this},proto.hasAlignedHourOffset=function(input){return!!this.isValid()&&(input=input?createLocal(input).utcOffset():0,(this.utcOffset()-input)%60==0)},proto.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},proto.isLocal=function(){return!!this.isValid()&&!this._isUTC},proto.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},proto.isUtc=isUtc,proto.isUTC=isUtc,proto.zoneAbbr=function(){return this._isUTC?"UTC":""},proto.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},proto.dates=deprecate("dates accessor is deprecated. Use date instead.",getSetDayOfMonth),proto.months=deprecate("months accessor is deprecated. Use month instead",getSetMonth),proto.years=deprecate("years accessor is deprecated. Use year instead",getSetYear),proto.zone=deprecate("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(input,keepLocalTime){return null!=input?("string"!=typeof input&&(input=-input),this.utcOffset(input,keepLocalTime),this):-this.utcOffset()}),proto.isDSTShifted=deprecate("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!isUndefined(this._isDSTShifted))return this._isDSTShifted;var c={};if(copyConfig(c,this),(c=prepareConfig(c))._a){var other=c._isUTC?createUTC(c._a):createLocal(c._a);this._isDSTShifted=this.isValid()&&compareArrays(c._a,other.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted});var proto$1=Locale.prototype;function get$1(format,index,field,setter){var locale=getLocale(),utc=createUTC().set(setter,index);return locale[field](utc,format)}function listMonthsImpl(format,index,field){if(isNumber(format)&&(index=format,format=void 0),format=format||"",null!=index)return get$1(format,index,field,"month");var i,out=[];for(i=0;i<12;i++)out[i]=get$1(format,i,field,"month");return out}function listWeekdaysImpl(localeSorted,format,index,field){"boolean"==typeof localeSorted?(isNumber(format)&&(index=format,format=void 0),format=format||""):(index=format=localeSorted,localeSorted=!1,isNumber(format)&&(index=format,format=void 0),format=format||"");var i,locale=getLocale(),shift=localeSorted?locale._week.dow:0;if(null!=index)return get$1(format,(index+shift)%7,field,"day");var out=[];for(i=0;i<7;i++)out[i]=get$1(format,(i+shift)%7,field,"day");return out}proto$1.calendar=function(key,mom,now){var output=this._calendar[key]||this._calendar.sameElse;return isFunction(output)?output.call(mom,now):output},proto$1.longDateFormat=function(key){var format=this._longDateFormat[key],formatUpper=this._longDateFormat[key.toUpperCase()];return format||!formatUpper?format:(this._longDateFormat[key]=formatUpper.replace(/MMMM|MM|DD|dddd/g,function(val){return val.slice(1)}),this._longDateFormat[key])},proto$1.invalidDate=function(){return this._invalidDate},proto$1.ordinal=function(number){return this._ordinal.replace("%d",number)},proto$1.preparse=preParsePostFormat,proto$1.postformat=preParsePostFormat,proto$1.relativeTime=function(number,withoutSuffix,string,isFuture){var output=this._relativeTime[string];return isFunction(output)?output(number,withoutSuffix,string,isFuture):output.replace(/%d/i,number)},proto$1.pastFuture=function(diff,output){var format=this._relativeTime[diff>0?"future":"past"];return isFunction(format)?format(output):format.replace(/%s/i,output)},proto$1.set=function(config){var prop,i;for(i in config)isFunction(prop=config[i])?this[i]=prop:this["_"+i]=prop;this._config=config,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},proto$1.months=function(m,format){return m?isArray(this._months)?this._months[m.month()]:this._months[(this._months.isFormat||MONTHS_IN_FORMAT).test(format)?"format":"standalone"][m.month()]:isArray(this._months)?this._months:this._months.standalone},proto$1.monthsShort=function(m,format){return m?isArray(this._monthsShort)?this._monthsShort[m.month()]:this._monthsShort[MONTHS_IN_FORMAT.test(format)?"format":"standalone"][m.month()]:isArray(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},proto$1.monthsParse=function(monthName,format,strict){var i,mom,regex;if(this._monthsParseExact)return function(monthName,format,strict){var i,ii,mom,llc=monthName.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],i=0;i<12;++i)mom=createUTC([2e3,i]),this._shortMonthsParse[i]=this.monthsShort(mom,"").toLocaleLowerCase(),this._longMonthsParse[i]=this.months(mom,"").toLocaleLowerCase();return strict?"MMM"===format?-1!==(ii=indexOf.call(this._shortMonthsParse,llc))?ii:null:-1!==(ii=indexOf.call(this._longMonthsParse,llc))?ii:null:"MMM"===format?-1!==(ii=indexOf.call(this._shortMonthsParse,llc))?ii:-1!==(ii=indexOf.call(this._longMonthsParse,llc))?ii:null:-1!==(ii=indexOf.call(this._longMonthsParse,llc))?ii:-1!==(ii=indexOf.call(this._shortMonthsParse,llc))?ii:null}.call(this,monthName,format,strict);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),i=0;i<12;i++){if(mom=createUTC([2e3,i]),strict&&!this._longMonthsParse[i]&&(this._longMonthsParse[i]=new RegExp("^"+this.months(mom,"").replace(".","")+"$","i"),this._shortMonthsParse[i]=new RegExp("^"+this.monthsShort(mom,"").replace(".","")+"$","i")),strict||this._monthsParse[i]||(regex="^"+this.months(mom,"")+"|^"+this.monthsShort(mom,""),this._monthsParse[i]=new RegExp(regex.replace(".",""),"i")),strict&&"MMMM"===format&&this._longMonthsParse[i].test(monthName))return i;if(strict&&"MMM"===format&&this._shortMonthsParse[i].test(monthName))return i;if(!strict&&this._monthsParse[i].test(monthName))return i}},proto$1.monthsRegex=function(isStrict){return this._monthsParseExact?(hasOwnProp(this,"_monthsRegex")||computeMonthsParse.call(this),isStrict?this._monthsStrictRegex:this._monthsRegex):(hasOwnProp(this,"_monthsRegex")||(this._monthsRegex=defaultMonthsRegex),this._monthsStrictRegex&&isStrict?this._monthsStrictRegex:this._monthsRegex)},proto$1.monthsShortRegex=function(isStrict){return this._monthsParseExact?(hasOwnProp(this,"_monthsRegex")||computeMonthsParse.call(this),isStrict?this._monthsShortStrictRegex:this._monthsShortRegex):(hasOwnProp(this,"_monthsShortRegex")||(this._monthsShortRegex=defaultMonthsShortRegex),this._monthsShortStrictRegex&&isStrict?this._monthsShortStrictRegex:this._monthsShortRegex)},proto$1.week=function(mom){return weekOfYear(mom,this._week.dow,this._week.doy).week},proto$1.firstDayOfYear=function(){return this._week.doy},proto$1.firstDayOfWeek=function(){return this._week.dow},proto$1.weekdays=function(m,format){return m?isArray(this._weekdays)?this._weekdays[m.day()]:this._weekdays[this._weekdays.isFormat.test(format)?"format":"standalone"][m.day()]:isArray(this._weekdays)?this._weekdays:this._weekdays.standalone},proto$1.weekdaysMin=function(m){return m?this._weekdaysMin[m.day()]:this._weekdaysMin},proto$1.weekdaysShort=function(m){return m?this._weekdaysShort[m.day()]:this._weekdaysShort},proto$1.weekdaysParse=function(weekdayName,format,strict){var i,mom,regex;if(this._weekdaysParseExact)return function(weekdayName,format,strict){var i,ii,mom,llc=weekdayName.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],i=0;i<7;++i)mom=createUTC([2e3,1]).day(i),this._minWeekdaysParse[i]=this.weekdaysMin(mom,"").toLocaleLowerCase(),this._shortWeekdaysParse[i]=this.weekdaysShort(mom,"").toLocaleLowerCase(),this._weekdaysParse[i]=this.weekdays(mom,"").toLocaleLowerCase();return strict?"dddd"===format?-1!==(ii=indexOf.call(this._weekdaysParse,llc))?ii:null:"ddd"===format?-1!==(ii=indexOf.call(this._shortWeekdaysParse,llc))?ii:null:-1!==(ii=indexOf.call(this._minWeekdaysParse,llc))?ii:null:"dddd"===format?-1!==(ii=indexOf.call(this._weekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._shortWeekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._minWeekdaysParse,llc))?ii:null:"ddd"===format?-1!==(ii=indexOf.call(this._shortWeekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._weekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._minWeekdaysParse,llc))?ii:null:-1!==(ii=indexOf.call(this._minWeekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._weekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._shortWeekdaysParse,llc))?ii:null}.call(this,weekdayName,format,strict);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),i=0;i<7;i++){if(mom=createUTC([2e3,1]).day(i),strict&&!this._fullWeekdaysParse[i]&&(this._fullWeekdaysParse[i]=new RegExp("^"+this.weekdays(mom,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[i]=new RegExp("^"+this.weekdaysShort(mom,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[i]=new RegExp("^"+this.weekdaysMin(mom,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[i]||(regex="^"+this.weekdays(mom,"")+"|^"+this.weekdaysShort(mom,"")+"|^"+this.weekdaysMin(mom,""),this._weekdaysParse[i]=new RegExp(regex.replace(".",""),"i")),strict&&"dddd"===format&&this._fullWeekdaysParse[i].test(weekdayName))return i;if(strict&&"ddd"===format&&this._shortWeekdaysParse[i].test(weekdayName))return i;if(strict&&"dd"===format&&this._minWeekdaysParse[i].test(weekdayName))return i;if(!strict&&this._weekdaysParse[i].test(weekdayName))return i}},proto$1.weekdaysRegex=function(isStrict){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),isStrict?this._weekdaysStrictRegex:this._weekdaysRegex):(hasOwnProp(this,"_weekdaysRegex")||(this._weekdaysRegex=defaultWeekdaysRegex),this._weekdaysStrictRegex&&isStrict?this._weekdaysStrictRegex:this._weekdaysRegex)},proto$1.weekdaysShortRegex=function(isStrict){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),isStrict?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(hasOwnProp(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=defaultWeekdaysShortRegex),this._weekdaysShortStrictRegex&&isStrict?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},proto$1.weekdaysMinRegex=function(isStrict){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),isStrict?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(hasOwnProp(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=defaultWeekdaysMinRegex),this._weekdaysMinStrictRegex&&isStrict?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},proto$1.isPM=function(input){return"p"===(input+"").toLowerCase().charAt(0)},proto$1.meridiem=function(hours,minutes,isLower){return hours>11?isLower?"pm":"PM":isLower?"am":"AM"},getSetGlobalLocale("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(number){var b=number%10;return number+(1===toInt(number%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th")}}),hooks.lang=deprecate("moment.lang is deprecated. Use moment.locale instead.",getSetGlobalLocale),hooks.langData=deprecate("moment.langData is deprecated. Use moment.localeData instead.",getLocale);var mathAbs=Math.abs;function addSubtract$1(duration,input,value,direction){var other=createDuration(input,value);return duration._milliseconds+=direction*other._milliseconds,duration._days+=direction*other._days,duration._months+=direction*other._months,duration._bubble()}function absCeil(number){return number<0?Math.floor(number):Math.ceil(number)}function daysToMonths(days){return 4800*days/146097}function monthsToDays(months){return 146097*months/4800}function makeAs(alias){return function(){return this.as(alias)}}var asMilliseconds=makeAs("ms"),asSeconds=makeAs("s"),asMinutes=makeAs("m"),asHours=makeAs("h"),asDays=makeAs("d"),asWeeks=makeAs("w"),asMonths=makeAs("M"),asYears=makeAs("y");function makeGetter(name){return function(){return this.isValid()?this._data[name]:NaN}}var milliseconds=makeGetter("milliseconds"),seconds=makeGetter("seconds"),minutes=makeGetter("minutes"),hours=makeGetter("hours"),days=makeGetter("days"),months=makeGetter("months"),years=makeGetter("years");var round=Math.round,thresholds={ss:44,s:45,m:45,h:22,d:26,M:11};var abs$1=Math.abs;function sign(x){return(x>0)-(x<0)||+x}function toISOString$1(){if(!this.isValid())return this.localeData().invalidDate();var minutes,hours,seconds=abs$1(this._milliseconds)/1e3,days=abs$1(this._days),months=abs$1(this._months);hours=absFloor((minutes=absFloor(seconds/60))/60),seconds%=60,minutes%=60;var Y=absFloor(months/12),M=months%=12,D=days,h=hours,m=minutes,s=seconds?seconds.toFixed(3).replace(/\.?0+$/,""):"",total=this.asSeconds();if(!total)return"P0D";var totalSign=total<0?"-":"",ymSign=sign(this._months)!==sign(total)?"-":"",daysSign=sign(this._days)!==sign(total)?"-":"",hmsSign=sign(this._milliseconds)!==sign(total)?"-":"";return totalSign+"P"+(Y?ymSign+Y+"Y":"")+(M?ymSign+M+"M":"")+(D?daysSign+D+"D":"")+(h||m||s?"T":"")+(h?hmsSign+h+"H":"")+(m?hmsSign+m+"M":"")+(s?hmsSign+s+"S":"")}var proto$2=Duration.prototype;return proto$2.isValid=function(){return this._isValid},proto$2.abs=function(){var data=this._data;return this._milliseconds=mathAbs(this._milliseconds),this._days=mathAbs(this._days),this._months=mathAbs(this._months),data.milliseconds=mathAbs(data.milliseconds),data.seconds=mathAbs(data.seconds),data.minutes=mathAbs(data.minutes),data.hours=mathAbs(data.hours),data.months=mathAbs(data.months),data.years=mathAbs(data.years),this},proto$2.add=function(input,value){return addSubtract$1(this,input,value,1)},proto$2.subtract=function(input,value){return addSubtract$1(this,input,value,-1)},proto$2.as=function(units){if(!this.isValid())return NaN;var days,months,milliseconds=this._milliseconds;if("month"===(units=normalizeUnits(units))||"year"===units)return days=this._days+milliseconds/864e5,months=this._months+daysToMonths(days),"month"===units?months:months/12;switch(days=this._days+Math.round(monthsToDays(this._months)),units){case"week":return days/7+milliseconds/6048e5;case"day":return days+milliseconds/864e5;case"hour":return 24*days+milliseconds/36e5;case"minute":return 1440*days+milliseconds/6e4;case"second":return 86400*days+milliseconds/1e3;case"millisecond":return Math.floor(864e5*days)+milliseconds;default:throw new Error("Unknown unit "+units)}},proto$2.asMilliseconds=asMilliseconds,proto$2.asSeconds=asSeconds,proto$2.asMinutes=asMinutes,proto$2.asHours=asHours,proto$2.asDays=asDays,proto$2.asWeeks=asWeeks,proto$2.asMonths=asMonths,proto$2.asYears=asYears,proto$2.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*toInt(this._months/12):NaN},proto$2._bubble=function(){var seconds,minutes,hours,years,monthsFromDays,milliseconds=this._milliseconds,days=this._days,months=this._months,data=this._data;return milliseconds>=0&&days>=0&&months>=0||milliseconds<=0&&days<=0&&months<=0||(milliseconds+=864e5*absCeil(monthsToDays(months)+days),days=0,months=0),data.milliseconds=milliseconds%1e3,seconds=absFloor(milliseconds/1e3),data.seconds=seconds%60,minutes=absFloor(seconds/60),data.minutes=minutes%60,hours=absFloor(minutes/60),data.hours=hours%24,months+=monthsFromDays=absFloor(daysToMonths(days+=absFloor(hours/24))),days-=absCeil(monthsToDays(monthsFromDays)),years=absFloor(months/12),months%=12,data.days=days,data.months=months,data.years=years,this},proto$2.clone=function(){return createDuration(this)},proto$2.get=function(units){return units=normalizeUnits(units),this.isValid()?this[units+"s"]():NaN},proto$2.milliseconds=milliseconds,proto$2.seconds=seconds,proto$2.minutes=minutes,proto$2.hours=hours,proto$2.days=days,proto$2.weeks=function(){return absFloor(this.days()/7)},proto$2.months=months,proto$2.years=years,proto$2.humanize=function(withSuffix){if(!this.isValid())return this.localeData().invalidDate();var locale=this.localeData(),output=function(posNegDuration,withoutSuffix,locale){var duration=createDuration(posNegDuration).abs(),seconds=round(duration.as("s")),minutes=round(duration.as("m")),hours=round(duration.as("h")),days=round(duration.as("d")),months=round(duration.as("M")),years=round(duration.as("y")),a=seconds<=thresholds.ss&&["s",seconds]||seconds<thresholds.s&&["ss",seconds]||minutes<=1&&["m"]||minutes<thresholds.m&&["mm",minutes]||hours<=1&&["h"]||hours<thresholds.h&&["hh",hours]||days<=1&&["d"]||days<thresholds.d&&["dd",days]||months<=1&&["M"]||months<thresholds.M&&["MM",months]||years<=1&&["y"]||["yy",years];return a[2]=withoutSuffix,a[3]=+posNegDuration>0,a[4]=locale,function(string,number,withoutSuffix,isFuture,locale){return locale.relativeTime(number||1,!!withoutSuffix,string,isFuture)}.apply(null,a)}(this,!withSuffix,locale);return withSuffix&&(output=locale.pastFuture(+this,output)),locale.postformat(output)},proto$2.toISOString=toISOString$1,proto$2.toString=toISOString$1,proto$2.toJSON=toISOString$1,proto$2.locale=locale,proto$2.localeData=localeData,proto$2.toIsoString=deprecate("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",toISOString$1),proto$2.lang=lang,addFormatToken("X",0,0,"unix"),addFormatToken("x",0,0,"valueOf"),addRegexToken("x",matchSigned),addRegexToken("X",/[+-]?\d+(\.\d{1,3})?/),addParseToken("X",function(input,array,config){config._d=new Date(1e3*parseFloat(input,10))}),addParseToken("x",function(input,array,config){config._d=new Date(toInt(input))}),hooks.version="2.22.2",hookCallback=createLocal,hooks.fn=proto,hooks.min=function(){return pickBy("isBefore",[].slice.call(arguments,0))},hooks.max=function(){return pickBy("isAfter",[].slice.call(arguments,0))},hooks.now=function(){return Date.now?Date.now():+new Date},hooks.utc=createUTC,hooks.unix=function(input){return createLocal(1e3*input)},hooks.months=function(format,index){return listMonthsImpl(format,index,"months")},hooks.isDate=isDate,hooks.locale=getSetGlobalLocale,hooks.invalid=createInvalid,hooks.duration=createDuration,hooks.isMoment=isMoment,hooks.weekdays=function(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,"weekdays")},hooks.parseZone=function(){return createLocal.apply(null,arguments).parseZone()},hooks.localeData=getLocale,hooks.isDuration=isDuration,hooks.monthsShort=function(format,index){return listMonthsImpl(format,index,"monthsShort")},hooks.weekdaysMin=function(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,"weekdaysMin")},hooks.defineLocale=defineLocale,hooks.updateLocale=function(name,config){if(null!=config){var locale,tmpLocale,parentConfig=baseConfig;null!=(tmpLocale=loadLocale(name))&&(parentConfig=tmpLocale._config),(locale=new Locale(config=mergeConfigs(parentConfig,config))).parentLocale=locales[name],locales[name]=locale,getSetGlobalLocale(name)}else null!=locales[name]&&(null!=locales[name].parentLocale?locales[name]=locales[name].parentLocale:null!=locales[name]&&delete locales[name]);return locales[name]},hooks.locales=function(){return keys(locales)},hooks.weekdaysShort=function(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,"weekdaysShort")},hooks.normalizeUnits=normalizeUnits,hooks.relativeTimeRounding=function(roundingFunction){return void 0===roundingFunction?round:"function"==typeof roundingFunction&&(round=roundingFunction,!0)},hooks.relativeTimeThreshold=function(threshold,limit){return void 0!==thresholds[threshold]&&(void 0===limit?thresholds[threshold]:(thresholds[threshold]=limit,"s"===threshold&&(thresholds.ss=limit-1),!0))},hooks.calendarFormat=function(myMoment,now){var diff=myMoment.diff(now,"days",!0);return diff<-6?"sameElse":diff<-1?"lastWeek":diff<0?"lastDay":diff<1?"sameDay":diff<2?"nextDay":diff<7?"nextWeek":"sameElse"},hooks.prototype=proto,hooks.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:"YYYY-[W]WW",MONTH:"YYYY-MM"},hooks}),function(global,factory){"object"==typeof module&&"object"==typeof module.exports?module.exports=global.document?factory(global,!0):function(w){if(!w.document)throw new Error("jQuery requires a window with a document");return factory(w)}:factory(global)}("undefined"!=typeof window?window:this,function(window,noGlobal){var arr=[],document=window.document,getProto=Object.getPrototypeOf,slice=arr.slice,concat=arr.concat,push=arr.push,indexOf=arr.indexOf,class2type={},toString=class2type.toString,hasOwn=class2type.hasOwnProperty,fnToString=hasOwn.toString,ObjectFunctionString=fnToString.call(Object),support={},isFunction=function(obj){return"function"==typeof obj&&"number"!=typeof obj.nodeType},isWindow=function(obj){return null!=obj&&obj===obj.window},preservedScriptAttributes={type:!0,src:!0,noModule:!0};function DOMEval(code,doc,node){var i,script=(doc=doc||document).createElement("script");if(script.text=code,node)for(i in preservedScriptAttributes)node[i]&&(script[i]=node[i]);doc.head.appendChild(script).parentNode.removeChild(script)}function toType(obj){return null==obj?obj+"":"object"==typeof obj||"function"==typeof obj?class2type[toString.call(obj)]||"object":typeof obj}var jQuery=function(selector,context){return new jQuery.fn.init(selector,context)},rtrim=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function isArrayLike(obj){var length=!!obj&&"length"in obj&&obj.length,type=toType(obj);return!isFunction(obj)&&!isWindow(obj)&&("array"===type||0===length||"number"==typeof length&&length>0&&length-1 in obj)}jQuery.fn=jQuery.prototype={jquery:"3.3.1",constructor:jQuery,length:0,toArray:function(){return slice.call(this)},get:function(num){return null==num?slice.call(this):num<0?this[num+this.length]:this[num]},pushStack:function(elems){var ret=jQuery.merge(this.constructor(),elems);return ret.prevObject=this,ret},each:function(callback){return jQuery.each(this,callback)},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem)}))},slice:function(){return this.pushStack(slice.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(i){var len=this.length,j=+i+(i<0?len:0);return this.pushStack(j>=0&&j<len?[this[j]]:[])},end:function(){return this.prevObject||this.constructor()},push:push,sort:arr.sort,splice:arr.splice},jQuery.extend=jQuery.fn.extend=function(){var options,name,src,copy,copyIsArray,clone,target=arguments[0]||{},i=1,length=arguments.length,deep=!1;for("boolean"==typeof target&&(deep=target,target=arguments[i]||{},i++),"object"==typeof target||isFunction(target)||(target={}),i===length&&(target=this,i--);i<length;i++)if(null!=(options=arguments[i]))for(name in options)src=target[name],target!==(copy=options[name])&&(deep&&copy&&(jQuery.isPlainObject(copy)||(copyIsArray=Array.isArray(copy)))?(copyIsArray?(copyIsArray=!1,clone=src&&Array.isArray(src)?src:[]):clone=src&&jQuery.isPlainObject(src)?src:{},target[name]=jQuery.extend(deep,clone,copy)):void 0!==copy&&(target[name]=copy));return target},jQuery.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(msg){throw new Error(msg)},noop:function(){},isPlainObject:function(obj){var proto,Ctor;return!(!obj||"[object Object]"!==toString.call(obj))&&(!(proto=getProto(obj))||"function"==typeof(Ctor=hasOwn.call(proto,"constructor")&&proto.constructor)&&fnToString.call(Ctor)===ObjectFunctionString)},isEmptyObject:function(obj){var name;for(name in obj)return!1;return!0},globalEval:function(code){DOMEval(code)},each:function(obj,callback){var length,i=0;if(isArrayLike(obj))for(length=obj.length;i<length&&!1!==callback.call(obj[i],i,obj[i]);i++);else for(i in obj)if(!1===callback.call(obj[i],i,obj[i]))break;return obj},trim:function(text){return null==text?"":(text+"").replace(rtrim,"")},makeArray:function(arr,results){var ret=results||[];return null!=arr&&(isArrayLike(Object(arr))?jQuery.merge(ret,"string"==typeof arr?[arr]:arr):push.call(ret,arr)),ret},inArray:function(elem,arr,i){return null==arr?-1:indexOf.call(arr,elem,i)},merge:function(first,second){for(var len=+second.length,j=0,i=first.length;j<len;j++)first[i++]=second[j];return first.length=i,first},grep:function(elems,callback,invert){for(var matches=[],i=0,length=elems.length,callbackExpect=!invert;i<length;i++)!callback(elems[i],i)!==callbackExpect&&matches.push(elems[i]);return matches},map:function(elems,callback,arg){var length,value,i=0,ret=[];if(isArrayLike(elems))for(length=elems.length;i<length;i++)null!=(value=callback(elems[i],i,arg))&&ret.push(value);else for(i in elems)null!=(value=callback(elems[i],i,arg))&&ret.push(value);return concat.apply([],ret)},guid:1,support:support}),"function"==typeof Symbol&&(jQuery.fn[Symbol.iterator]=arr[Symbol.iterator]),jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(i,name){class2type["[object "+name+"]"]=name.toLowerCase()});var Sizzle=function(window){var i,support,Expr,getText,isXML,tokenize,compile,select,outermostContext,sortInput,hasDuplicate,setDocument,document,docElem,documentIsHTML,rbuggyQSA,rbuggyMatches,matches,contains,expando="sizzle"+1*new Date,preferredDoc=window.document,dirruns=0,done=0,classCache=createCache(),tokenCache=createCache(),compilerCache=createCache(),sortOrder=function(a,b){return a===b&&(hasDuplicate=!0),0},hasOwn={}.hasOwnProperty,arr=[],pop=arr.pop,push_native=arr.push,push=arr.push,slice=arr.slice,indexOf=function(list,elem){for(var i=0,len=list.length;i<len;i++)if(list[i]===elem)return i;return-1},booleans="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",whitespace="[\\x20\\t\\r\\n\\f]",identifier="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",attributes="\\["+whitespace+"*("+identifier+")(?:"+whitespace+"*([*^$|!~]?=)"+whitespace+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+identifier+"))|)"+whitespace+"*\\]",pseudos=":("+identifier+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+attributes+")*)|.*)\\)|)",rwhitespace=new RegExp(whitespace+"+","g"),rtrim=new RegExp("^"+whitespace+"+|((?:^|[^\\\\])(?:\\\\.)*)"+whitespace+"+$","g"),rcomma=new RegExp("^"+whitespace+"*,"+whitespace+"*"),rcombinators=new RegExp("^"+whitespace+"*([>+~]|"+whitespace+")"+whitespace+"*"),rattributeQuotes=new RegExp("="+whitespace+"*([^\\]'\"]*?)"+whitespace+"*\\]","g"),rpseudo=new RegExp(pseudos),ridentifier=new RegExp("^"+identifier+"$"),matchExpr={ID:new RegExp("^#("+identifier+")"),CLASS:new RegExp("^\\.("+identifier+")"),TAG:new RegExp("^("+identifier+"|[*])"),ATTR:new RegExp("^"+attributes),PSEUDO:new RegExp("^"+pseudos),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+whitespace+"*(even|odd|(([+-]|)(\\d*)n|)"+whitespace+"*(?:([+-]|)"+whitespace+"*(\\d+)|))"+whitespace+"*\\)|)","i"),bool:new RegExp("^(?:"+booleans+")$","i"),needsContext:new RegExp("^"+whitespace+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+whitespace+"*((?:-\\d)?\\d*)"+whitespace+"*\\)|)(?=[^-]|$)","i")},rinputs=/^(?:input|select|textarea|button)$/i,rheader=/^h\d$/i,rnative=/^[^{]+\{\s*\[native \w/,rquickExpr=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,rsibling=/[+~]/,runescape=new RegExp("\\\\([\\da-f]{1,6}"+whitespace+"?|("+whitespace+")|.)","ig"),funescape=function(_,escaped,escapedWhitespace){var high="0x"+escaped-65536;return high!=high||escapedWhitespace?escaped:high<0?String.fromCharCode(high+65536):String.fromCharCode(high>>10|55296,1023&high|56320)},rcssescape=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,fcssescape=function(ch,asCodePoint){return asCodePoint?"\0"===ch?"�":ch.slice(0,-1)+"\\"+ch.charCodeAt(ch.length-1).toString(16)+" ":"\\"+ch},unloadHandler=function(){setDocument()},disabledAncestor=addCombinator(function(elem){return!0===elem.disabled&&("form"in elem||"label"in elem)},{dir:"parentNode",next:"legend"});try{push.apply(arr=slice.call(preferredDoc.childNodes),preferredDoc.childNodes),arr[preferredDoc.childNodes.length].nodeType}catch(e){push={apply:arr.length?function(target,els){push_native.apply(target,slice.call(els))}:function(target,els){for(var j=target.length,i=0;target[j++]=els[i++];);target.length=j-1}}}function Sizzle(selector,context,results,seed){var m,i,elem,nid,match,groups,newSelector,newContext=context&&context.ownerDocument,nodeType=context?context.nodeType:9;if(results=results||[],"string"!=typeof selector||!selector||1!==nodeType&&9!==nodeType&&11!==nodeType)return results;if(!seed&&((context?context.ownerDocument||context:preferredDoc)!==document&&setDocument(context),context=context||document,documentIsHTML)){if(11!==nodeType&&(match=rquickExpr.exec(selector)))if(m=match[1]){if(9===nodeType){if(!(elem=context.getElementById(m)))return results;if(elem.id===m)return results.push(elem),results}else if(newContext&&(elem=newContext.getElementById(m))&&contains(context,elem)&&elem.id===m)return results.push(elem),results}else{if(match[2])return push.apply(results,context.getElementsByTagName(selector)),results;if((m=match[3])&&support.getElementsByClassName&&context.getElementsByClassName)return push.apply(results,context.getElementsByClassName(m)),results}if(support.qsa&&!compilerCache[selector+" "]&&(!rbuggyQSA||!rbuggyQSA.test(selector))){if(1!==nodeType)newContext=context,newSelector=selector;else if("object"!==context.nodeName.toLowerCase()){for((nid=context.getAttribute("id"))?nid=nid.replace(rcssescape,fcssescape):context.setAttribute("id",nid=expando),i=(groups=tokenize(selector)).length;i--;)groups[i]="#"+nid+" "+toSelector(groups[i]);newSelector=groups.join(","),newContext=rsibling.test(selector)&&testContext(context.parentNode)||context}if(newSelector)try{return push.apply(results,newContext.querySelectorAll(newSelector)),results}catch(qsaError){}finally{nid===expando&&context.removeAttribute("id")}}}return select(selector.replace(rtrim,"$1"),context,results,seed)}function createCache(){var keys=[];return function cache(key,value){return keys.push(key+" ")>Expr.cacheLength&&delete cache[keys.shift()],cache[key+" "]=value}}function markFunction(fn){return fn[expando]=!0,fn}function assert(fn){var el=document.createElement("fieldset");try{return!!fn(el)}catch(e){return!1}finally{el.parentNode&&el.parentNode.removeChild(el),el=null}}function addHandle(attrs,handler){for(var arr=attrs.split("|"),i=arr.length;i--;)Expr.attrHandle[arr[i]]=handler}function siblingCheck(a,b){var cur=b&&a,diff=cur&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(diff)return diff;if(cur)for(;cur=cur.nextSibling;)if(cur===b)return-1;return a?1:-1}function createInputPseudo(type){return function(elem){return"input"===elem.nodeName.toLowerCase()&&elem.type===type}}function createButtonPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return("input"===name||"button"===name)&&elem.type===type}}function createDisabledPseudo(disabled){return function(elem){return"form"in elem?elem.parentNode&&!1===elem.disabled?"label"in elem?"label"in elem.parentNode?elem.parentNode.disabled===disabled:elem.disabled===disabled:elem.isDisabled===disabled||elem.isDisabled!==!disabled&&disabledAncestor(elem)===disabled:elem.disabled===disabled:"label"in elem&&elem.disabled===disabled}}function createPositionalPseudo(fn){return markFunction(function(argument){return argument=+argument,markFunction(function(seed,matches){for(var j,matchIndexes=fn([],seed.length,argument),i=matchIndexes.length;i--;)seed[j=matchIndexes[i]]&&(seed[j]=!(matches[j]=seed[j]))})})}function testContext(context){return context&&void 0!==context.getElementsByTagName&&context}for(i in support=Sizzle.support={},isXML=Sizzle.isXML=function(elem){var documentElement=elem&&(elem.ownerDocument||elem).documentElement;return!!documentElement&&"HTML"!==documentElement.nodeName},setDocument=Sizzle.setDocument=function(node){var hasCompare,subWindow,doc=node?node.ownerDocument||node:preferredDoc;return doc!==document&&9===doc.nodeType&&doc.documentElement?(docElem=(document=doc).documentElement,documentIsHTML=!isXML(document),preferredDoc!==document&&(subWindow=document.defaultView)&&subWindow.top!==subWindow&&(subWindow.addEventListener?subWindow.addEventListener("unload",unloadHandler,!1):subWindow.attachEvent&&subWindow.attachEvent("onunload",unloadHandler)),support.attributes=assert(function(el){return el.className="i",!el.getAttribute("className")}),support.getElementsByTagName=assert(function(el){return el.appendChild(document.createComment("")),!el.getElementsByTagName("*").length}),support.getElementsByClassName=rnative.test(document.getElementsByClassName),support.getById=assert(function(el){return docElem.appendChild(el).id=expando,!document.getElementsByName||!document.getElementsByName(expando).length}),support.getById?(Expr.filter.ID=function(id){var attrId=id.replace(runescape,funescape);return function(elem){return elem.getAttribute("id")===attrId}},Expr.find.ID=function(id,context){if(void 0!==context.getElementById&&documentIsHTML){var elem=context.getElementById(id);return elem?[elem]:[]}}):(Expr.filter.ID=function(id){var attrId=id.replace(runescape,funescape);return function(elem){var node=void 0!==elem.getAttributeNode&&elem.getAttributeNode("id");return node&&node.value===attrId}},Expr.find.ID=function(id,context){if(void 0!==context.getElementById&&documentIsHTML){var node,i,elems,elem=context.getElementById(id);if(elem){if((node=elem.getAttributeNode("id"))&&node.value===id)return[elem];for(elems=context.getElementsByName(id),i=0;elem=elems[i++];)if((node=elem.getAttributeNode("id"))&&node.value===id)return[elem]}return[]}}),Expr.find.TAG=support.getElementsByTagName?function(tag,context){return void 0!==context.getElementsByTagName?context.getElementsByTagName(tag):support.qsa?context.querySelectorAll(tag):void 0}:function(tag,context){var elem,tmp=[],i=0,results=context.getElementsByTagName(tag);if("*"===tag){for(;elem=results[i++];)1===elem.nodeType&&tmp.push(elem);return tmp}return results},Expr.find.CLASS=support.getElementsByClassName&&function(className,context){if(void 0!==context.getElementsByClassName&&documentIsHTML)return context.getElementsByClassName(className)},rbuggyMatches=[],rbuggyQSA=[],(support.qsa=rnative.test(document.querySelectorAll))&&(assert(function(el){docElem.appendChild(el).innerHTML="<a id='"+expando+"'></a><select id='"+expando+"-\r\\' msallowcapture=''><option selected=''></option></select>",el.querySelectorAll("[msallowcapture^='']").length&&rbuggyQSA.push("[*^$]="+whitespace+"*(?:''|\"\")"),el.querySelectorAll("[selected]").length||rbuggyQSA.push("\\["+whitespace+"*(?:value|"+booleans+")"),el.querySelectorAll("[id~="+expando+"-]").length||rbuggyQSA.push("~="),el.querySelectorAll(":checked").length||rbuggyQSA.push(":checked"),el.querySelectorAll("a#"+expando+"+*").length||rbuggyQSA.push(".#.+[+~]")}),assert(function(el){el.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var input=document.createElement("input");input.setAttribute("type","hidden"),el.appendChild(input).setAttribute("name","D"),el.querySelectorAll("[name=d]").length&&rbuggyQSA.push("name"+whitespace+"*[*^$|!~]?="),2!==el.querySelectorAll(":enabled").length&&rbuggyQSA.push(":enabled",":disabled"),docElem.appendChild(el).disabled=!0,2!==el.querySelectorAll(":disabled").length&&rbuggyQSA.push(":enabled",":disabled"),el.querySelectorAll("*,:x"),rbuggyQSA.push(",.*:")})),(support.matchesSelector=rnative.test(matches=docElem.matches||docElem.webkitMatchesSelector||docElem.mozMatchesSelector||docElem.oMatchesSelector||docElem.msMatchesSelector))&&assert(function(el){support.disconnectedMatch=matches.call(el,"*"),matches.call(el,"[s!='']:x"),rbuggyMatches.push("!=",pseudos)}),rbuggyQSA=rbuggyQSA.length&&new RegExp(rbuggyQSA.join("|")),rbuggyMatches=rbuggyMatches.length&&new RegExp(rbuggyMatches.join("|")),hasCompare=rnative.test(docElem.compareDocumentPosition),contains=hasCompare||rnative.test(docElem.contains)?function(a,b){var adown=9===a.nodeType?a.documentElement:a,bup=b&&b.parentNode;return a===bup||!(!bup||1!==bup.nodeType||!(adown.contains?adown.contains(bup):a.compareDocumentPosition&&16&a.compareDocumentPosition(bup)))}:function(a,b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1},sortOrder=hasCompare?function(a,b){if(a===b)return hasDuplicate=!0,0;var compare=!a.compareDocumentPosition-!b.compareDocumentPosition;return compare||(1&(compare=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1)||!support.sortDetached&&b.compareDocumentPosition(a)===compare?a===document||a.ownerDocument===preferredDoc&&contains(preferredDoc,a)?-1:b===document||b.ownerDocument===preferredDoc&&contains(preferredDoc,b)?1:sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0:4&compare?-1:1)}:function(a,b){if(a===b)return hasDuplicate=!0,0;var cur,i=0,aup=a.parentNode,bup=b.parentNode,ap=[a],bp=[b];if(!aup||!bup)return a===document?-1:b===document?1:aup?-1:bup?1:sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0;if(aup===bup)return siblingCheck(a,b);for(cur=a;cur=cur.parentNode;)ap.unshift(cur);for(cur=b;cur=cur.parentNode;)bp.unshift(cur);for(;ap[i]===bp[i];)i++;return i?siblingCheck(ap[i],bp[i]):ap[i]===preferredDoc?-1:bp[i]===preferredDoc?1:0},document):document},Sizzle.matches=function(expr,elements){return Sizzle(expr,null,null,elements)},Sizzle.matchesSelector=function(elem,expr){if((elem.ownerDocument||elem)!==document&&setDocument(elem),expr=expr.replace(rattributeQuotes,"='$1']"),support.matchesSelector&&documentIsHTML&&!compilerCache[expr+" "]&&(!rbuggyMatches||!rbuggyMatches.test(expr))&&(!rbuggyQSA||!rbuggyQSA.test(expr)))try{var ret=matches.call(elem,expr);if(ret||support.disconnectedMatch||elem.document&&11!==elem.document.nodeType)return ret}catch(e){}return Sizzle(expr,document,null,[elem]).length>0},Sizzle.contains=function(context,elem){return(context.ownerDocument||context)!==document&&setDocument(context),contains(context,elem)},Sizzle.attr=function(elem,name){(elem.ownerDocument||elem)!==document&&setDocument(elem);var fn=Expr.attrHandle[name.toLowerCase()],val=fn&&hasOwn.call(Expr.attrHandle,name.toLowerCase())?fn(elem,name,!documentIsHTML):void 0;return void 0!==val?val:support.attributes||!documentIsHTML?elem.getAttribute(name):(val=elem.getAttributeNode(name))&&val.specified?val.value:null},Sizzle.escape=function(sel){return(sel+"").replace(rcssescape,fcssescape)},Sizzle.error=function(msg){throw new Error("Syntax error, unrecognized expression: "+msg)},Sizzle.uniqueSort=function(results){var elem,duplicates=[],j=0,i=0;if(hasDuplicate=!support.detectDuplicates,sortInput=!support.sortStable&&results.slice(0),results.sort(sortOrder),hasDuplicate){for(;elem=results[i++];)elem===results[i]&&(j=duplicates.push(i));for(;j--;)results.splice(duplicates[j],1)}return sortInput=null,results},getText=Sizzle.getText=function(elem){var node,ret="",i=0,nodeType=elem.nodeType;if(nodeType){if(1===nodeType||9===nodeType||11===nodeType){if("string"==typeof elem.textContent)return elem.textContent;for(elem=elem.firstChild;elem;elem=elem.nextSibling)ret+=getText(elem)}else if(3===nodeType||4===nodeType)return elem.nodeValue}else for(;node=elem[i++];)ret+=getText(node);return ret},(Expr=Sizzle.selectors={cacheLength:50,createPseudo:markFunction,match:matchExpr,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(match){return match[1]=match[1].replace(runescape,funescape),match[3]=(match[3]||match[4]||match[5]||"").replace(runescape,funescape),"~="===match[2]&&(match[3]=" "+match[3]+" "),match.slice(0,4)},CHILD:function(match){return match[1]=match[1].toLowerCase(),"nth"===match[1].slice(0,3)?(match[3]||Sizzle.error(match[0]),match[4]=+(match[4]?match[5]+(match[6]||1):2*("even"===match[3]||"odd"===match[3])),match[5]=+(match[7]+match[8]||"odd"===match[3])):match[3]&&Sizzle.error(match[0]),match},PSEUDO:function(match){var excess,unquoted=!match[6]&&match[2];return matchExpr.CHILD.test(match[0])?null:(match[3]?match[2]=match[4]||match[5]||"":unquoted&&rpseudo.test(unquoted)&&(excess=tokenize(unquoted,!0))&&(excess=unquoted.indexOf(")",unquoted.length-excess)-unquoted.length)&&(match[0]=match[0].slice(0,excess),match[2]=unquoted.slice(0,excess)),match.slice(0,3))}},filter:{TAG:function(nodeNameSelector){var nodeName=nodeNameSelector.replace(runescape,funescape).toLowerCase();return"*"===nodeNameSelector?function(){return!0}:function(elem){return elem.nodeName&&elem.nodeName.toLowerCase()===nodeName}},CLASS:function(className){var pattern=classCache[className+" "];return pattern||(pattern=new RegExp("(^|"+whitespace+")"+className+"("+whitespace+"|$)"))&&classCache(className,function(elem){return pattern.test("string"==typeof elem.className&&elem.className||void 0!==elem.getAttribute&&elem.getAttribute("class")||"")})},ATTR:function(name,operator,check){return function(elem){var result=Sizzle.attr(elem,name);return null==result?"!="===operator:!operator||(result+="","="===operator?result===check:"!="===operator?result!==check:"^="===operator?check&&0===result.indexOf(check):"*="===operator?check&&result.indexOf(check)>-1:"$="===operator?check&&result.slice(-check.length)===check:"~="===operator?(" "+result.replace(rwhitespace," ")+" ").indexOf(check)>-1:"|="===operator&&(result===check||result.slice(0,check.length+1)===check+"-"))}},CHILD:function(type,what,argument,first,last){var simple="nth"!==type.slice(0,3),forward="last"!==type.slice(-4),ofType="of-type"===what;return 1===first&&0===last?function(elem){return!!elem.parentNode}:function(elem,context,xml){var cache,uniqueCache,outerCache,node,nodeIndex,start,dir=simple!==forward?"nextSibling":"previousSibling",parent=elem.parentNode,name=ofType&&elem.nodeName.toLowerCase(),useCache=!xml&&!ofType,diff=!1;if(parent){if(simple){for(;dir;){for(node=elem;node=node[dir];)if(ofType?node.nodeName.toLowerCase()===name:1===node.nodeType)return!1;start=dir="only"===type&&!start&&"nextSibling"}return!0}if(start=[forward?parent.firstChild:parent.lastChild],forward&&useCache){for(diff=(nodeIndex=(cache=(uniqueCache=(outerCache=(node=parent)[expando]||(node[expando]={}))[node.uniqueID]||(outerCache[node.uniqueID]={}))[type]||[])[0]===dirruns&&cache[1])&&cache[2],node=nodeIndex&&parent.childNodes[nodeIndex];node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop();)if(1===node.nodeType&&++diff&&node===elem){uniqueCache[type]=[dirruns,nodeIndex,diff];break}}else if(useCache&&(diff=nodeIndex=(cache=(uniqueCache=(outerCache=(node=elem)[expando]||(node[expando]={}))[node.uniqueID]||(outerCache[node.uniqueID]={}))[type]||[])[0]===dirruns&&cache[1]),!1===diff)for(;(node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop())&&((ofType?node.nodeName.toLowerCase()!==name:1!==node.nodeType)||!++diff||(useCache&&((uniqueCache=(outerCache=node[expando]||(node[expando]={}))[node.uniqueID]||(outerCache[node.uniqueID]={}))[type]=[dirruns,diff]),node!==elem)););return(diff-=last)===first||diff%first==0&&diff/first>=0}}},PSEUDO:function(pseudo,argument){var args,fn=Expr.pseudos[pseudo]||Expr.setFilters[pseudo.toLowerCase()]||Sizzle.error("unsupported pseudo: "+pseudo);return fn[expando]?fn(argument):fn.length>1?(args=[pseudo,pseudo,"",argument],Expr.setFilters.hasOwnProperty(pseudo.toLowerCase())?markFunction(function(seed,matches){for(var idx,matched=fn(seed,argument),i=matched.length;i--;)seed[idx=indexOf(seed,matched[i])]=!(matches[idx]=matched[i])}):function(elem){return fn(elem,0,args)}):fn}},pseudos:{not:markFunction(function(selector){var input=[],results=[],matcher=compile(selector.replace(rtrim,"$1"));return matcher[expando]?markFunction(function(seed,matches,context,xml){for(var elem,unmatched=matcher(seed,null,xml,[]),i=seed.length;i--;)(elem=unmatched[i])&&(seed[i]=!(matches[i]=elem))}):function(elem,context,xml){return input[0]=elem,matcher(input,null,xml,results),input[0]=null,!results.pop()}}),has:markFunction(function(selector){return function(elem){return Sizzle(selector,elem).length>0}}),contains:markFunction(function(text){return text=text.replace(runescape,funescape),function(elem){return(elem.textContent||elem.innerText||getText(elem)).indexOf(text)>-1}}),lang:markFunction(function(lang){return ridentifier.test(lang||"")||Sizzle.error("unsupported lang: "+lang),lang=lang.replace(runescape,funescape).toLowerCase(),function(elem){var elemLang;do{if(elemLang=documentIsHTML?elem.lang:elem.getAttribute("xml:lang")||elem.getAttribute("lang"))return(elemLang=elemLang.toLowerCase())===lang||0===elemLang.indexOf(lang+"-")}while((elem=elem.parentNode)&&1===elem.nodeType);return!1}}),target:function(elem){var hash=window.location&&window.location.hash;return hash&&hash.slice(1)===elem.id},root:function(elem){return elem===docElem},focus:function(elem){return elem===document.activeElement&&(!document.hasFocus||document.hasFocus())&&!!(elem.type||elem.href||~elem.tabIndex)},enabled:createDisabledPseudo(!1),disabled:createDisabledPseudo(!0),checked:function(elem){var nodeName=elem.nodeName.toLowerCase();return"input"===nodeName&&!!elem.checked||"option"===nodeName&&!!elem.selected},selected:function(elem){return elem.parentNode&&elem.parentNode.selectedIndex,!0===elem.selected},empty:function(elem){for(elem=elem.firstChild;elem;elem=elem.nextSibling)if(elem.nodeType<6)return!1;return!0},parent:function(elem){return!Expr.pseudos.empty(elem)},header:function(elem){return rheader.test(elem.nodeName)},input:function(elem){return rinputs.test(elem.nodeName)},button:function(elem){var name=elem.nodeName.toLowerCase();return"input"===name&&"button"===elem.type||"button"===name},text:function(elem){var attr;return"input"===elem.nodeName.toLowerCase()&&"text"===elem.type&&(null==(attr=elem.getAttribute("type"))||"text"===attr.toLowerCase())},first:createPositionalPseudo(function(){return[0]}),last:createPositionalPseudo(function(matchIndexes,length){return[length-1]}),eq:createPositionalPseudo(function(matchIndexes,length,argument){return[argument<0?argument+length:argument]}),even:createPositionalPseudo(function(matchIndexes,length){for(var i=0;i<length;i+=2)matchIndexes.push(i);return matchIndexes}),odd:createPositionalPseudo(function(matchIndexes,length){for(var i=1;i<length;i+=2)matchIndexes.push(i);return matchIndexes}),lt:createPositionalPseudo(function(matchIndexes,length,argument){for(var i=argument<0?argument+length:argument;--i>=0;)matchIndexes.push(i);return matchIndexes}),gt:createPositionalPseudo(function(matchIndexes,length,argument){for(var i=argument<0?argument+length:argument;++i<length;)matchIndexes.push(i);return matchIndexes})}}).pseudos.nth=Expr.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})Expr.pseudos[i]=createInputPseudo(i);for(i in{submit:!0,reset:!0})Expr.pseudos[i]=createButtonPseudo(i);function setFilters(){}function toSelector(tokens){for(var i=0,len=tokens.length,selector="";i<len;i++)selector+=tokens[i].value;return selector}function addCombinator(matcher,combinator,base){var dir=combinator.dir,skip=combinator.next,key=skip||dir,checkNonElements=base&&"parentNode"===key,doneName=done++;return combinator.first?function(elem,context,xml){for(;elem=elem[dir];)if(1===elem.nodeType||checkNonElements)return matcher(elem,context,xml);return!1}:function(elem,context,xml){var oldCache,uniqueCache,outerCache,newCache=[dirruns,doneName];if(xml){for(;elem=elem[dir];)if((1===elem.nodeType||checkNonElements)&&matcher(elem,context,xml))return!0}else for(;elem=elem[dir];)if(1===elem.nodeType||checkNonElements)if(uniqueCache=(outerCache=elem[expando]||(elem[expando]={}))[elem.uniqueID]||(outerCache[elem.uniqueID]={}),skip&&skip===elem.nodeName.toLowerCase())elem=elem[dir]||elem;else{if((oldCache=uniqueCache[key])&&oldCache[0]===dirruns&&oldCache[1]===doneName)return newCache[2]=oldCache[2];if(uniqueCache[key]=newCache,newCache[2]=matcher(elem,context,xml))return!0}return!1}}function elementMatcher(matchers){return matchers.length>1?function(elem,context,xml){for(var i=matchers.length;i--;)if(!matchers[i](elem,context,xml))return!1;return!0}:matchers[0]}function condense(unmatched,map,filter,context,xml){for(var elem,newUnmatched=[],i=0,len=unmatched.length,mapped=null!=map;i<len;i++)(elem=unmatched[i])&&(filter&&!filter(elem,context,xml)||(newUnmatched.push(elem),mapped&&map.push(i)));return newUnmatched}function setMatcher(preFilter,selector,matcher,postFilter,postFinder,postSelector){return postFilter&&!postFilter[expando]&&(postFilter=setMatcher(postFilter)),postFinder&&!postFinder[expando]&&(postFinder=setMatcher(postFinder,postSelector)),markFunction(function(seed,results,context,xml){var temp,i,elem,preMap=[],postMap=[],preexisting=results.length,elems=seed||function(selector,contexts,results){for(var i=0,len=contexts.length;i<len;i++)Sizzle(selector,contexts[i],results);return results}(selector||"*",context.nodeType?[context]:context,[]),matcherIn=!preFilter||!seed&&selector?elems:condense(elems,preMap,preFilter,context,xml),matcherOut=matcher?postFinder||(seed?preFilter:preexisting||postFilter)?[]:results:matcherIn;if(matcher&&matcher(matcherIn,matcherOut,context,xml),postFilter)for(temp=condense(matcherOut,postMap),postFilter(temp,[],context,xml),i=temp.length;i--;)(elem=temp[i])&&(matcherOut[postMap[i]]=!(matcherIn[postMap[i]]=elem));if(seed){if(postFinder||preFilter){if(postFinder){for(temp=[],i=matcherOut.length;i--;)(elem=matcherOut[i])&&temp.push(matcherIn[i]=elem);postFinder(null,matcherOut=[],temp,xml)}for(i=matcherOut.length;i--;)(elem=matcherOut[i])&&(temp=postFinder?indexOf(seed,elem):preMap[i])>-1&&(seed[temp]=!(results[temp]=elem))}}else matcherOut=condense(matcherOut===results?matcherOut.splice(preexisting,matcherOut.length):matcherOut),postFinder?postFinder(null,results,matcherOut,xml):push.apply(results,matcherOut)})}function matcherFromTokens(tokens){for(var checkContext,matcher,j,len=tokens.length,leadingRelative=Expr.relative[tokens[0].type],implicitRelative=leadingRelative||Expr.relative[" "],i=leadingRelative?1:0,matchContext=addCombinator(function(elem){return elem===checkContext},implicitRelative,!0),matchAnyContext=addCombinator(function(elem){return indexOf(checkContext,elem)>-1},implicitRelative,!0),matchers=[function(elem,context,xml){var ret=!leadingRelative&&(xml||context!==outermostContext)||((checkContext=context).nodeType?matchContext(elem,context,xml):matchAnyContext(elem,context,xml));return checkContext=null,ret}];i<len;i++)if(matcher=Expr.relative[tokens[i].type])matchers=[addCombinator(elementMatcher(matchers),matcher)];else{if((matcher=Expr.filter[tokens[i].type].apply(null,tokens[i].matches))[expando]){for(j=++i;j<len&&!Expr.relative[tokens[j].type];j++);return setMatcher(i>1&&elementMatcher(matchers),i>1&&toSelector(tokens.slice(0,i-1).concat({value:" "===tokens[i-2].type?"*":""})).replace(rtrim,"$1"),matcher,i<j&&matcherFromTokens(tokens.slice(i,j)),j<len&&matcherFromTokens(tokens=tokens.slice(j)),j<len&&toSelector(tokens))}matchers.push(matcher)}return elementMatcher(matchers)}return setFilters.prototype=Expr.filters=Expr.pseudos,Expr.setFilters=new setFilters,tokenize=Sizzle.tokenize=function(selector,parseOnly){var matched,match,tokens,type,soFar,groups,preFilters,cached=tokenCache[selector+" "];if(cached)return parseOnly?0:cached.slice(0);for(soFar=selector,groups=[],preFilters=Expr.preFilter;soFar;){for(type in matched&&!(match=rcomma.exec(soFar))||(match&&(soFar=soFar.slice(match[0].length)||soFar),groups.push(tokens=[])),matched=!1,(match=rcombinators.exec(soFar))&&(matched=match.shift(),tokens.push({value:matched,type:match[0].replace(rtrim," ")}),soFar=soFar.slice(matched.length)),Expr.filter)!(match=matchExpr[type].exec(soFar))||preFilters[type]&&!(match=preFilters[type](match))||(matched=match.shift(),tokens.push({value:matched,type:type,matches:match}),soFar=soFar.slice(matched.length));if(!matched)break}return parseOnly?soFar.length:soFar?Sizzle.error(selector):tokenCache(selector,groups).slice(0)},compile=Sizzle.compile=function(selector,match){var i,setMatchers=[],elementMatchers=[],cached=compilerCache[selector+" "];if(!cached){for(match||(match=tokenize(selector)),i=match.length;i--;)(cached=matcherFromTokens(match[i]))[expando]?setMatchers.push(cached):elementMatchers.push(cached);(cached=compilerCache(selector,function(elementMatchers,setMatchers){var bySet=setMatchers.length>0,byElement=elementMatchers.length>0,superMatcher=function(seed,context,xml,results,outermost){var elem,j,matcher,matchedCount=0,i="0",unmatched=seed&&[],setMatched=[],contextBackup=outermostContext,elems=seed||byElement&&Expr.find.TAG("*",outermost),dirrunsUnique=dirruns+=null==contextBackup?1:Math.random()||.1,len=elems.length;for(outermost&&(outermostContext=context===document||context||outermost);i!==len&&null!=(elem=elems[i]);i++){if(byElement&&elem){for(j=0,context||elem.ownerDocument===document||(setDocument(elem),xml=!documentIsHTML);matcher=elementMatchers[j++];)if(matcher(elem,context||document,xml)){results.push(elem);break}outermost&&(dirruns=dirrunsUnique)}bySet&&((elem=!matcher&&elem)&&matchedCount--,seed&&unmatched.push(elem))}if(matchedCount+=i,bySet&&i!==matchedCount){for(j=0;matcher=setMatchers[j++];)matcher(unmatched,setMatched,context,xml);if(seed){if(matchedCount>0)for(;i--;)unmatched[i]||setMatched[i]||(setMatched[i]=pop.call(results));setMatched=condense(setMatched)}push.apply(results,setMatched),outermost&&!seed&&setMatched.length>0&&matchedCount+setMatchers.length>1&&Sizzle.uniqueSort(results)}return outermost&&(dirruns=dirrunsUnique,outermostContext=contextBackup),unmatched};return bySet?markFunction(superMatcher):superMatcher}(elementMatchers,setMatchers))).selector=selector}return cached},select=Sizzle.select=function(selector,context,results,seed){var i,tokens,token,type,find,compiled="function"==typeof selector&&selector,match=!seed&&tokenize(selector=compiled.selector||selector);if(results=results||[],1===match.length){if((tokens=match[0]=match[0].slice(0)).length>2&&"ID"===(token=tokens[0]).type&&9===context.nodeType&&documentIsHTML&&Expr.relative[tokens[1].type]){if(!(context=(Expr.find.ID(token.matches[0].replace(runescape,funescape),context)||[])[0]))return results;compiled&&(context=context.parentNode),selector=selector.slice(tokens.shift().value.length)}for(i=matchExpr.needsContext.test(selector)?0:tokens.length;i--&&(token=tokens[i],!Expr.relative[type=token.type]);)if((find=Expr.find[type])&&(seed=find(token.matches[0].replace(runescape,funescape),rsibling.test(tokens[0].type)&&testContext(context.parentNode)||context))){if(tokens.splice(i,1),!(selector=seed.length&&toSelector(tokens)))return push.apply(results,seed),results;break}}return(compiled||compile(selector,match))(seed,context,!documentIsHTML,results,!context||rsibling.test(selector)&&testContext(context.parentNode)||context),results},support.sortStable=expando.split("").sort(sortOrder).join("")===expando,support.detectDuplicates=!!hasDuplicate,setDocument(),support.sortDetached=assert(function(el){return 1&el.compareDocumentPosition(document.createElement("fieldset"))}),assert(function(el){return el.innerHTML="<a href='#'></a>","#"===el.firstChild.getAttribute("href")})||addHandle("type|href|height|width",function(elem,name,isXML){if(!isXML)return elem.getAttribute(name,"type"===name.toLowerCase()?1:2)}),support.attributes&&assert(function(el){return el.innerHTML="<input/>",el.firstChild.setAttribute("value",""),""===el.firstChild.getAttribute("value")})||addHandle("value",function(elem,name,isXML){if(!isXML&&"input"===elem.nodeName.toLowerCase())return elem.defaultValue}),assert(function(el){return null==el.getAttribute("disabled")})||addHandle(booleans,function(elem,name,isXML){var val;if(!isXML)return!0===elem[name]?name.toLowerCase():(val=elem.getAttributeNode(name))&&val.specified?val.value:null}),Sizzle}(window);jQuery.find=Sizzle,jQuery.expr=Sizzle.selectors,jQuery.expr[":"]=jQuery.expr.pseudos,jQuery.uniqueSort=jQuery.unique=Sizzle.uniqueSort,jQuery.text=Sizzle.getText,jQuery.isXMLDoc=Sizzle.isXML,jQuery.contains=Sizzle.contains,jQuery.escapeSelector=Sizzle.escape;var dir=function(elem,dir,until){for(var matched=[],truncate=void 0!==until;(elem=elem[dir])&&9!==elem.nodeType;)if(1===elem.nodeType){if(truncate&&jQuery(elem).is(until))break;matched.push(elem)}return matched},siblings=function(n,elem){for(var matched=[];n;n=n.nextSibling)1===n.nodeType&&n!==elem&&matched.push(n);return matched},rneedsContext=jQuery.expr.match.needsContext;function nodeName(elem,name){return elem.nodeName&&elem.nodeName.toLowerCase()===name.toLowerCase()}var rsingleTag=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function winnow(elements,qualifier,not){return isFunction(qualifier)?jQuery.grep(elements,function(elem,i){return!!qualifier.call(elem,i,elem)!==not}):qualifier.nodeType?jQuery.grep(elements,function(elem){return elem===qualifier!==not}):"string"!=typeof qualifier?jQuery.grep(elements,function(elem){return indexOf.call(qualifier,elem)>-1!==not}):jQuery.filter(qualifier,elements,not)}jQuery.filter=function(expr,elems,not){var elem=elems[0];return not&&(expr=":not("+expr+")"),1===elems.length&&1===elem.nodeType?jQuery.find.matchesSelector(elem,expr)?[elem]:[]:jQuery.find.matches(expr,jQuery.grep(elems,function(elem){return 1===elem.nodeType}))},jQuery.fn.extend({find:function(selector){var i,ret,len=this.length,self=this;if("string"!=typeof selector)return this.pushStack(jQuery(selector).filter(function(){for(i=0;i<len;i++)if(jQuery.contains(self[i],this))return!0}));for(ret=this.pushStack([]),i=0;i<len;i++)jQuery.find(selector,self[i],ret);return len>1?jQuery.uniqueSort(ret):ret},filter:function(selector){return this.pushStack(winnow(this,selector||[],!1))},not:function(selector){return this.pushStack(winnow(this,selector||[],!0))},is:function(selector){return!!winnow(this,"string"==typeof selector&&rneedsContext.test(selector)?jQuery(selector):selector||[],!1).length}});var rootjQuery,rquickExpr=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(jQuery.fn.init=function(selector,context,root){var match,elem;if(!selector)return this;if(root=root||rootjQuery,"string"==typeof selector){if(!(match="<"===selector[0]&&">"===selector[selector.length-1]&&selector.length>=3?[null,selector,null]:rquickExpr.exec(selector))||!match[1]&&context)return!context||context.jquery?(context||root).find(selector):this.constructor(context).find(selector);if(match[1]){if(context=context instanceof jQuery?context[0]:context,jQuery.merge(this,jQuery.parseHTML(match[1],context&&context.nodeType?context.ownerDocument||context:document,!0)),rsingleTag.test(match[1])&&jQuery.isPlainObject(context))for(match in context)isFunction(this[match])?this[match](context[match]):this.attr(match,context[match]);return this}return(elem=document.getElementById(match[2]))&&(this[0]=elem,this.length=1),this}return selector.nodeType?(this[0]=selector,this.length=1,this):isFunction(selector)?void 0!==root.ready?root.ready(selector):selector(jQuery):jQuery.makeArray(selector,this)}).prototype=jQuery.fn,rootjQuery=jQuery(document);var rparentsprev=/^(?:parents|prev(?:Until|All))/,guaranteedUnique={children:!0,contents:!0,next:!0,prev:!0};function sibling(cur,dir){for(;(cur=cur[dir])&&1!==cur.nodeType;);return cur}jQuery.fn.extend({has:function(target){var targets=jQuery(target,this),l=targets.length;return this.filter(function(){for(var i=0;i<l;i++)if(jQuery.contains(this,targets[i]))return!0})},closest:function(selectors,context){var cur,i=0,l=this.length,matched=[],targets="string"!=typeof selectors&&jQuery(selectors);if(!rneedsContext.test(selectors))for(;i<l;i++)for(cur=this[i];cur&&cur!==context;cur=cur.parentNode)if(cur.nodeType<11&&(targets?targets.index(cur)>-1:1===cur.nodeType&&jQuery.find.matchesSelector(cur,selectors))){matched.push(cur);break}return this.pushStack(matched.length>1?jQuery.uniqueSort(matched):matched)},index:function(elem){return elem?"string"==typeof elem?indexOf.call(jQuery(elem),this[0]):indexOf.call(this,elem.jquery?elem[0]:elem):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(selector,context){return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(),jQuery(selector,context))))},addBack:function(selector){return this.add(null==selector?this.prevObject:this.prevObject.filter(selector))}}),jQuery.each({parent:function(elem){var parent=elem.parentNode;return parent&&11!==parent.nodeType?parent:null},parents:function(elem){return dir(elem,"parentNode")},parentsUntil:function(elem,i,until){return dir(elem,"parentNode",until)},next:function(elem){return sibling(elem,"nextSibling")},prev:function(elem){return sibling(elem,"previousSibling")},nextAll:function(elem){return dir(elem,"nextSibling")},prevAll:function(elem){return dir(elem,"previousSibling")},nextUntil:function(elem,i,until){return dir(elem,"nextSibling",until)},prevUntil:function(elem,i,until){return dir(elem,"previousSibling",until)},siblings:function(elem){return siblings((elem.parentNode||{}).firstChild,elem)},children:function(elem){return siblings(elem.firstChild)},contents:function(elem){return nodeName(elem,"iframe")?elem.contentDocument:(nodeName(elem,"template")&&(elem=elem.content||elem),jQuery.merge([],elem.childNodes))}},function(name,fn){jQuery.fn[name]=function(until,selector){var matched=jQuery.map(this,fn,until);return"Until"!==name.slice(-5)&&(selector=until),selector&&"string"==typeof selector&&(matched=jQuery.filter(selector,matched)),this.length>1&&(guaranteedUnique[name]||jQuery.uniqueSort(matched),rparentsprev.test(name)&&matched.reverse()),this.pushStack(matched)}});var rnothtmlwhite=/[^\x20\t\r\n\f]+/g;function Identity(v){return v}function Thrower(ex){throw ex}function adoptValue(value,resolve,reject,noValue){var method;try{value&&isFunction(method=value.promise)?method.call(value).done(resolve).fail(reject):value&&isFunction(method=value.then)?method.call(value,resolve,reject):resolve.apply(void 0,[value].slice(noValue))}catch(value){reject.apply(void 0,[value])}}jQuery.Callbacks=function(options){options="string"==typeof options?function(options){var object={};return jQuery.each(options.match(rnothtmlwhite)||[],function(_,flag){object[flag]=!0}),object}(options):jQuery.extend({},options);var firing,memory,fired,locked,list=[],queue=[],firingIndex=-1,fire=function(){for(locked=locked||options.once,fired=firing=!0;queue.length;firingIndex=-1)for(memory=queue.shift();++firingIndex<list.length;)!1===list[firingIndex].apply(memory[0],memory[1])&&options.stopOnFalse&&(firingIndex=list.length,memory=!1);options.memory||(memory=!1),firing=!1,locked&&(list=memory?[]:"")},self={add:function(){return list&&(memory&&!firing&&(firingIndex=list.length-1,queue.push(memory)),function add(args){jQuery.each(args,function(_,arg){isFunction(arg)?options.unique&&self.has(arg)||list.push(arg):arg&&arg.length&&"string"!==toType(arg)&&add(arg)})}(arguments),memory&&!firing&&fire()),this},remove:function(){return jQuery.each(arguments,function(_,arg){for(var index;(index=jQuery.inArray(arg,list,index))>-1;)list.splice(index,1),index<=firingIndex&&firingIndex--}),this},has:function(fn){return fn?jQuery.inArray(fn,list)>-1:list.length>0},empty:function(){return list&&(list=[]),this},disable:function(){return locked=queue=[],list=memory="",this},disabled:function(){return!list},lock:function(){return locked=queue=[],memory||firing||(list=memory=""),this},locked:function(){return!!locked},fireWith:function(context,args){return locked||(args=[context,(args=args||[]).slice?args.slice():args],queue.push(args),firing||fire()),this},fire:function(){return self.fireWith(this,arguments),this},fired:function(){return!!fired}};return self},jQuery.extend({Deferred:function(func){var tuples=[["notify","progress",jQuery.Callbacks("memory"),jQuery.Callbacks("memory"),2],["resolve","done",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),0,"resolved"],["reject","fail",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),1,"rejected"]],state="pending",promise={state:function(){return state},always:function(){return deferred.done(arguments).fail(arguments),this},catch:function(fn){return promise.then(null,fn)},pipe:function(){var fns=arguments;return jQuery.Deferred(function(newDefer){jQuery.each(tuples,function(i,tuple){var fn=isFunction(fns[tuple[4]])&&fns[tuple[4]];deferred[tuple[1]](function(){var returned=fn&&fn.apply(this,arguments);returned&&isFunction(returned.promise)?returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject):newDefer[tuple[0]+"With"](this,fn?[returned]:arguments)})}),fns=null}).promise()},then:function(onFulfilled,onRejected,onProgress){var maxDepth=0;function resolve(depth,deferred,handler,special){return function(){var that=this,args=arguments,mightThrow=function(){var returned,then;if(!(depth<maxDepth)){if((returned=handler.apply(that,args))===deferred.promise())throw new TypeError("Thenable self-resolution");then=returned&&("object"==typeof returned||"function"==typeof returned)&&returned.then,isFunction(then)?special?then.call(returned,resolve(maxDepth,deferred,Identity,special),resolve(maxDepth,deferred,Thrower,special)):(maxDepth++,then.call(returned,resolve(maxDepth,deferred,Identity,special),resolve(maxDepth,deferred,Thrower,special),resolve(maxDepth,deferred,Identity,deferred.notifyWith))):(handler!==Identity&&(that=void 0,args=[returned]),(special||deferred.resolveWith)(that,args))}},process=special?mightThrow:function(){try{mightThrow()}catch(e){jQuery.Deferred.exceptionHook&&jQuery.Deferred.exceptionHook(e,process.stackTrace),depth+1>=maxDepth&&(handler!==Thrower&&(that=void 0,args=[e]),deferred.rejectWith(that,args))}};depth?process():(jQuery.Deferred.getStackHook&&(process.stackTrace=jQuery.Deferred.getStackHook()),window.setTimeout(process))}}return jQuery.Deferred(function(newDefer){tuples[0][3].add(resolve(0,newDefer,isFunction(onProgress)?onProgress:Identity,newDefer.notifyWith)),tuples[1][3].add(resolve(0,newDefer,isFunction(onFulfilled)?onFulfilled:Identity)),tuples[2][3].add(resolve(0,newDefer,isFunction(onRejected)?onRejected:Thrower))}).promise()},promise:function(obj){return null!=obj?jQuery.extend(obj,promise):promise}},deferred={};return jQuery.each(tuples,function(i,tuple){var list=tuple[2],stateString=tuple[5];promise[tuple[1]]=list.add,stateString&&list.add(function(){state=stateString},tuples[3-i][2].disable,tuples[3-i][3].disable,tuples[0][2].lock,tuples[0][3].lock),list.add(tuple[3].fire),deferred[tuple[0]]=function(){return deferred[tuple[0]+"With"](this===deferred?void 0:this,arguments),this},deferred[tuple[0]+"With"]=list.fireWith}),promise.promise(deferred),func&&func.call(deferred,deferred),deferred},when:function(singleValue){var remaining=arguments.length,i=remaining,resolveContexts=Array(i),resolveValues=slice.call(arguments),master=jQuery.Deferred(),updateFunc=function(i){return function(value){resolveContexts[i]=this,resolveValues[i]=arguments.length>1?slice.call(arguments):value,--remaining||master.resolveWith(resolveContexts,resolveValues)}};if(remaining<=1&&(adoptValue(singleValue,master.done(updateFunc(i)).resolve,master.reject,!remaining),"pending"===master.state()||isFunction(resolveValues[i]&&resolveValues[i].then)))return master.then();for(;i--;)adoptValue(resolveValues[i],updateFunc(i),master.reject);return master.promise()}});var rerrorNames=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;jQuery.Deferred.exceptionHook=function(error,stack){window.console&&window.console.warn&&error&&rerrorNames.test(error.name)&&window.console.warn("jQuery.Deferred exception: "+error.message,error.stack,stack)},jQuery.readyException=function(error){window.setTimeout(function(){throw error})};var readyList=jQuery.Deferred();function completed(){document.removeEventListener("DOMContentLoaded",completed),window.removeEventListener("load",completed),jQuery.ready()}jQuery.fn.ready=function(fn){return readyList.then(fn).catch(function(error){jQuery.readyException(error)}),this},jQuery.extend({isReady:!1,readyWait:1,ready:function(wait){(!0===wait?--jQuery.readyWait:jQuery.isReady)||(jQuery.isReady=!0,!0!==wait&&--jQuery.readyWait>0||readyList.resolveWith(document,[jQuery]))}}),jQuery.ready.then=readyList.then,"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?window.setTimeout(jQuery.ready):(document.addEventListener("DOMContentLoaded",completed),window.addEventListener("load",completed));var access=function(elems,fn,key,value,chainable,emptyGet,raw){var i=0,len=elems.length,bulk=null==key;if("object"===toType(key))for(i in chainable=!0,key)access(elems,fn,i,key[i],!0,emptyGet,raw);else if(void 0!==value&&(chainable=!0,isFunction(value)||(raw=!0),bulk&&(raw?(fn.call(elems,value),fn=null):(bulk=fn,fn=function(elem,key,value){return bulk.call(jQuery(elem),value)})),fn))for(;i<len;i++)fn(elems[i],key,raw?value:value.call(elems[i],i,fn(elems[i],key)));return chainable?elems:bulk?fn.call(elems):len?fn(elems[0],key):emptyGet},rmsPrefix=/^-ms-/,rdashAlpha=/-([a-z])/g;function fcamelCase(all,letter){return letter.toUpperCase()}function camelCase(string){return string.replace(rmsPrefix,"ms-").replace(rdashAlpha,fcamelCase)}var acceptData=function(owner){return 1===owner.nodeType||9===owner.nodeType||!+owner.nodeType};function Data(){this.expando=jQuery.expando+Data.uid++}Data.uid=1,Data.prototype={cache:function(owner){var value=owner[this.expando];return value||(value={},acceptData(owner)&&(owner.nodeType?owner[this.expando]=value:Object.defineProperty(owner,this.expando,{value:value,configurable:!0}))),value},set:function(owner,data,value){var prop,cache=this.cache(owner);if("string"==typeof data)cache[camelCase(data)]=value;else for(prop in data)cache[camelCase(prop)]=data[prop];return cache},get:function(owner,key){return void 0===key?this.cache(owner):owner[this.expando]&&owner[this.expando][camelCase(key)]},access:function(owner,key,value){return void 0===key||key&&"string"==typeof key&&void 0===value?this.get(owner,key):(this.set(owner,key,value),void 0!==value?value:key)},remove:function(owner,key){var i,cache=owner[this.expando];if(void 0!==cache){if(void 0!==key){i=(key=Array.isArray(key)?key.map(camelCase):(key=camelCase(key))in cache?[key]:key.match(rnothtmlwhite)||[]).length;for(;i--;)delete cache[key[i]]}(void 0===key||jQuery.isEmptyObject(cache))&&(owner.nodeType?owner[this.expando]=void 0:delete owner[this.expando])}},hasData:function(owner){var cache=owner[this.expando];return void 0!==cache&&!jQuery.isEmptyObject(cache)}};var dataPriv=new Data,dataUser=new Data,rbrace=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,rmultiDash=/[A-Z]/g;function dataAttr(elem,key,data){var name;if(void 0===data&&1===elem.nodeType)if(name="data-"+key.replace(rmultiDash,"-$&").toLowerCase(),"string"==typeof(data=elem.getAttribute(name))){try{data=function(data){return"true"===data||"false"!==data&&("null"===data?null:data===+data+""?+data:rbrace.test(data)?JSON.parse(data):data)}(data)}catch(e){}dataUser.set(elem,key,data)}else data=void 0;return data}jQuery.extend({hasData:function(elem){return dataUser.hasData(elem)||dataPriv.hasData(elem)},data:function(elem,name,data){return dataUser.access(elem,name,data)},removeData:function(elem,name){dataUser.remove(elem,name)},_data:function(elem,name,data){return dataPriv.access(elem,name,data)},_removeData:function(elem,name){dataPriv.remove(elem,name)}}),jQuery.fn.extend({data:function(key,value){var i,name,data,elem=this[0],attrs=elem&&elem.attributes;if(void 0===key){if(this.length&&(data=dataUser.get(elem),1===elem.nodeType&&!dataPriv.get(elem,"hasDataAttrs"))){for(i=attrs.length;i--;)attrs[i]&&0===(name=attrs[i].name).indexOf("data-")&&(name=camelCase(name.slice(5)),dataAttr(elem,name,data[name]));dataPriv.set(elem,"hasDataAttrs",!0)}return data}return"object"==typeof key?this.each(function(){dataUser.set(this,key)}):access(this,function(value){var data;if(elem&&void 0===value)return void 0!==(data=dataUser.get(elem,key))?data:void 0!==(data=dataAttr(elem,key))?data:void 0;this.each(function(){dataUser.set(this,key,value)})},null,value,arguments.length>1,null,!0)},removeData:function(key){return this.each(function(){dataUser.remove(this,key)})}}),jQuery.extend({queue:function(elem,type,data){var queue;if(elem)return type=(type||"fx")+"queue",queue=dataPriv.get(elem,type),data&&(!queue||Array.isArray(data)?queue=dataPriv.access(elem,type,jQuery.makeArray(data)):queue.push(data)),queue||[]},dequeue:function(elem,type){type=type||"fx";var queue=jQuery.queue(elem,type),startLength=queue.length,fn=queue.shift(),hooks=jQuery._queueHooks(elem,type);"inprogress"===fn&&(fn=queue.shift(),startLength--),fn&&("fx"===type&&queue.unshift("inprogress"),delete hooks.stop,fn.call(elem,function(){jQuery.dequeue(elem,type)},hooks)),!startLength&&hooks&&hooks.empty.fire()},_queueHooks:function(elem,type){var key=type+"queueHooks";return dataPriv.get(elem,key)||dataPriv.access(elem,key,{empty:jQuery.Callbacks("once memory").add(function(){dataPriv.remove(elem,[type+"queue",key])})})}}),jQuery.fn.extend({queue:function(type,data){var setter=2;return"string"!=typeof type&&(data=type,type="fx",setter--),arguments.length<setter?jQuery.queue(this[0],type):void 0===data?this:this.each(function(){var queue=jQuery.queue(this,type,data);jQuery._queueHooks(this,type),"fx"===type&&"inprogress"!==queue[0]&&jQuery.dequeue(this,type)})},dequeue:function(type){return this.each(function(){jQuery.dequeue(this,type)})},clearQueue:function(type){return this.queue(type||"fx",[])},promise:function(type,obj){var tmp,count=1,defer=jQuery.Deferred(),elements=this,i=this.length,resolve=function(){--count||defer.resolveWith(elements,[elements])};for("string"!=typeof type&&(obj=type,type=void 0),type=type||"fx";i--;)(tmp=dataPriv.get(elements[i],type+"queueHooks"))&&tmp.empty&&(count++,tmp.empty.add(resolve));return resolve(),defer.promise(obj)}});var pnum=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,rcssNum=new RegExp("^(?:([+-])=|)("+pnum+")([a-z%]*)$","i"),cssExpand=["Top","Right","Bottom","Left"],isHiddenWithinTree=function(elem,el){return"none"===(elem=el||elem).style.display||""===elem.style.display&&jQuery.contains(elem.ownerDocument,elem)&&"none"===jQuery.css(elem,"display")},swap=function(elem,options,callback,args){var ret,name,old={};for(name in options)old[name]=elem.style[name],elem.style[name]=options[name];for(name in ret=callback.apply(elem,args||[]),options)elem.style[name]=old[name];return ret};function adjustCSS(elem,prop,valueParts,tween){var adjusted,scale,maxIterations=20,currentValue=tween?function(){return tween.cur()}:function(){return jQuery.css(elem,prop,"")},initial=currentValue(),unit=valueParts&&valueParts[3]||(jQuery.cssNumber[prop]?"":"px"),initialInUnit=(jQuery.cssNumber[prop]||"px"!==unit&&+initial)&&rcssNum.exec(jQuery.css(elem,prop));if(initialInUnit&&initialInUnit[3]!==unit){for(initial/=2,unit=unit||initialInUnit[3],initialInUnit=+initial||1;maxIterations--;)jQuery.style(elem,prop,initialInUnit+unit),(1-scale)*(1-(scale=currentValue()/initial||.5))<=0&&(maxIterations=0),initialInUnit/=scale;initialInUnit*=2,jQuery.style(elem,prop,initialInUnit+unit),valueParts=valueParts||[]}return valueParts&&(initialInUnit=+initialInUnit||+initial||0,adjusted=valueParts[1]?initialInUnit+(valueParts[1]+1)*valueParts[2]:+valueParts[2],tween&&(tween.unit=unit,tween.start=initialInUnit,tween.end=adjusted)),adjusted}var defaultDisplayMap={};function getDefaultDisplay(elem){var temp,doc=elem.ownerDocument,nodeName=elem.nodeName,display=defaultDisplayMap[nodeName];return display||(temp=doc.body.appendChild(doc.createElement(nodeName)),display=jQuery.css(temp,"display"),temp.parentNode.removeChild(temp),"none"===display&&(display="block"),defaultDisplayMap[nodeName]=display,display)}function showHide(elements,show){for(var display,elem,values=[],index=0,length=elements.length;index<length;index++)(elem=elements[index]).style&&(display=elem.style.display,show?("none"===display&&(values[index]=dataPriv.get(elem,"display")||null,values[index]||(elem.style.display="")),""===elem.style.display&&isHiddenWithinTree(elem)&&(values[index]=getDefaultDisplay(elem))):"none"!==display&&(values[index]="none",dataPriv.set(elem,"display",display)));for(index=0;index<length;index++)null!=values[index]&&(elements[index].style.display=values[index]);return elements}jQuery.fn.extend({show:function(){return showHide(this,!0)},hide:function(){return showHide(this)},toggle:function(state){return"boolean"==typeof state?state?this.show():this.hide():this.each(function(){isHiddenWithinTree(this)?jQuery(this).show():jQuery(this).hide()})}});var rcheckableType=/^(?:checkbox|radio)$/i,rtagName=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,rscriptType=/^$|^module$|\/(?:java|ecma)script/i,wrapMap={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function getAll(context,tag){var ret;return ret=void 0!==context.getElementsByTagName?context.getElementsByTagName(tag||"*"):void 0!==context.querySelectorAll?context.querySelectorAll(tag||"*"):[],void 0===tag||tag&&nodeName(context,tag)?jQuery.merge([context],ret):ret}function setGlobalEval(elems,refElements){for(var i=0,l=elems.length;i<l;i++)dataPriv.set(elems[i],"globalEval",!refElements||dataPriv.get(refElements[i],"globalEval"))}wrapMap.optgroup=wrapMap.option,wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.thead,wrapMap.th=wrapMap.td;var div,input,rhtml=/<|&#?\w+;/;function buildFragment(elems,context,scripts,selection,ignored){for(var elem,tmp,tag,wrap,contains,j,fragment=context.createDocumentFragment(),nodes=[],i=0,l=elems.length;i<l;i++)if((elem=elems[i])||0===elem)if("object"===toType(elem))jQuery.merge(nodes,elem.nodeType?[elem]:elem);else if(rhtml.test(elem)){for(tmp=tmp||fragment.appendChild(context.createElement("div")),tag=(rtagName.exec(elem)||["",""])[1].toLowerCase(),wrap=wrapMap[tag]||wrapMap._default,tmp.innerHTML=wrap[1]+jQuery.htmlPrefilter(elem)+wrap[2],j=wrap[0];j--;)tmp=tmp.lastChild;jQuery.merge(nodes,tmp.childNodes),(tmp=fragment.firstChild).textContent=""}else nodes.push(context.createTextNode(elem));for(fragment.textContent="",i=0;elem=nodes[i++];)if(selection&&jQuery.inArray(elem,selection)>-1)ignored&&ignored.push(elem);else if(contains=jQuery.contains(elem.ownerDocument,elem),tmp=getAll(fragment.appendChild(elem),"script"),contains&&setGlobalEval(tmp),scripts)for(j=0;elem=tmp[j++];)rscriptType.test(elem.type||"")&&scripts.push(elem);return fragment}div=document.createDocumentFragment().appendChild(document.createElement("div")),(input=document.createElement("input")).setAttribute("type","radio"),input.setAttribute("checked","checked"),input.setAttribute("name","t"),div.appendChild(input),support.checkClone=div.cloneNode(!0).cloneNode(!0).lastChild.checked,div.innerHTML="<textarea>x</textarea>",support.noCloneChecked=!!div.cloneNode(!0).lastChild.defaultValue;var documentElement=document.documentElement,rkeyEvent=/^key/,rmouseEvent=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,rtypenamespace=/^([^.]*)(?:\.(.+)|)/;function returnTrue(){return!0}function returnFalse(){return!1}function safeActiveElement(){try{return document.activeElement}catch(err){}}function on(elem,types,selector,data,fn,one){var origFn,type;if("object"==typeof types){for(type in"string"!=typeof selector&&(data=data||selector,selector=void 0),types)on(elem,type,selector,data,types[type],one);return elem}if(null==data&&null==fn?(fn=selector,data=selector=void 0):null==fn&&("string"==typeof selector?(fn=data,data=void 0):(fn=data,data=selector,selector=void 0)),!1===fn)fn=returnFalse;else if(!fn)return elem;return 1===one&&(origFn=fn,(fn=function(event){return jQuery().off(event),origFn.apply(this,arguments)}).guid=origFn.guid||(origFn.guid=jQuery.guid++)),elem.each(function(){jQuery.event.add(this,types,fn,data,selector)})}jQuery.event={global:{},add:function(elem,types,handler,data,selector){var handleObjIn,eventHandle,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.get(elem);if(elemData)for(handler.handler&&(handler=(handleObjIn=handler).handler,selector=handleObjIn.selector),selector&&jQuery.find.matchesSelector(documentElement,selector),handler.guid||(handler.guid=jQuery.guid++),(events=elemData.events)||(events=elemData.events={}),(eventHandle=elemData.handle)||(eventHandle=elemData.handle=function(e){return void 0!==jQuery&&jQuery.event.triggered!==e.type?jQuery.event.dispatch.apply(elem,arguments):void 0}),t=(types=(types||"").match(rnothtmlwhite)||[""]).length;t--;)type=origType=(tmp=rtypenamespace.exec(types[t])||[])[1],namespaces=(tmp[2]||"").split(".").sort(),type&&(special=jQuery.event.special[type]||{},type=(selector?special.delegateType:special.bindType)||type,special=jQuery.event.special[type]||{},handleObj=jQuery.extend({type:type,origType:origType,data:data,handler:handler,guid:handler.guid,selector:selector,needsContext:selector&&jQuery.expr.match.needsContext.test(selector),namespace:namespaces.join(".")},handleObjIn),(handlers=events[type])||((handlers=events[type]=[]).delegateCount=0,special.setup&&!1!==special.setup.call(elem,data,namespaces,eventHandle)||elem.addEventListener&&elem.addEventListener(type,eventHandle)),special.add&&(special.add.call(elem,handleObj),handleObj.handler.guid||(handleObj.handler.guid=handler.guid)),selector?handlers.splice(handlers.delegateCount++,0,handleObj):handlers.push(handleObj),jQuery.event.global[type]=!0)},remove:function(elem,types,handler,selector,mappedTypes){var j,origCount,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.hasData(elem)&&dataPriv.get(elem);if(elemData&&(events=elemData.events)){for(t=(types=(types||"").match(rnothtmlwhite)||[""]).length;t--;)if(type=origType=(tmp=rtypenamespace.exec(types[t])||[])[1],namespaces=(tmp[2]||"").split(".").sort(),type){for(special=jQuery.event.special[type]||{},handlers=events[type=(selector?special.delegateType:special.bindType)||type]||[],tmp=tmp[2]&&new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"),origCount=j=handlers.length;j--;)handleObj=handlers[j],!mappedTypes&&origType!==handleObj.origType||handler&&handler.guid!==handleObj.guid||tmp&&!tmp.test(handleObj.namespace)||selector&&selector!==handleObj.selector&&("**"!==selector||!handleObj.selector)||(handlers.splice(j,1),handleObj.selector&&handlers.delegateCount--,special.remove&&special.remove.call(elem,handleObj));origCount&&!handlers.length&&(special.teardown&&!1!==special.teardown.call(elem,namespaces,elemData.handle)||jQuery.removeEvent(elem,type,elemData.handle),delete events[type])}else for(type in events)jQuery.event.remove(elem,type+types[t],handler,selector,!0);jQuery.isEmptyObject(events)&&dataPriv.remove(elem,"handle events")}},dispatch:function(nativeEvent){var i,j,ret,matched,handleObj,handlerQueue,event=jQuery.event.fix(nativeEvent),args=new Array(arguments.length),handlers=(dataPriv.get(this,"events")||{})[event.type]||[],special=jQuery.event.special[event.type]||{};for(args[0]=event,i=1;i<arguments.length;i++)args[i]=arguments[i];if(event.delegateTarget=this,!special.preDispatch||!1!==special.preDispatch.call(this,event)){for(handlerQueue=jQuery.event.handlers.call(this,event,handlers),i=0;(matched=handlerQueue[i++])&&!event.isPropagationStopped();)for(event.currentTarget=matched.elem,j=0;(handleObj=matched.handlers[j++])&&!event.isImmediatePropagationStopped();)event.rnamespace&&!event.rnamespace.test(handleObj.namespace)||(event.handleObj=handleObj,event.data=handleObj.data,void 0!==(ret=((jQuery.event.special[handleObj.origType]||{}).handle||handleObj.handler).apply(matched.elem,args))&&!1===(event.result=ret)&&(event.preventDefault(),event.stopPropagation()));return special.postDispatch&&special.postDispatch.call(this,event),event.result}},handlers:function(event,handlers){var i,handleObj,sel,matchedHandlers,matchedSelectors,handlerQueue=[],delegateCount=handlers.delegateCount,cur=event.target;if(delegateCount&&cur.nodeType&&!("click"===event.type&&event.button>=1))for(;cur!==this;cur=cur.parentNode||this)if(1===cur.nodeType&&("click"!==event.type||!0!==cur.disabled)){for(matchedHandlers=[],matchedSelectors={},i=0;i<delegateCount;i++)void 0===matchedSelectors[sel=(handleObj=handlers[i]).selector+" "]&&(matchedSelectors[sel]=handleObj.needsContext?jQuery(sel,this).index(cur)>-1:jQuery.find(sel,this,null,[cur]).length),matchedSelectors[sel]&&matchedHandlers.push(handleObj);matchedHandlers.length&&handlerQueue.push({elem:cur,handlers:matchedHandlers})}return cur=this,delegateCount<handlers.length&&handlerQueue.push({elem:cur,handlers:handlers.slice(delegateCount)}),handlerQueue},addProp:function(name,hook){Object.defineProperty(jQuery.Event.prototype,name,{enumerable:!0,configurable:!0,get:isFunction(hook)?function(){if(this.originalEvent)return hook(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[name]},set:function(value){Object.defineProperty(this,name,{enumerable:!0,configurable:!0,writable:!0,value:value})}})},fix:function(originalEvent){return originalEvent[jQuery.expando]?originalEvent:new jQuery.Event(originalEvent)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==safeActiveElement()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===safeActiveElement()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&nodeName(this,"input"))return this.click(),!1},_default:function(event){return nodeName(event.target,"a")}},beforeunload:{postDispatch:function(event){void 0!==event.result&&event.originalEvent&&(event.originalEvent.returnValue=event.result)}}}},jQuery.removeEvent=function(elem,type,handle){elem.removeEventListener&&elem.removeEventListener(type,handle)},jQuery.Event=function(src,props){if(!(this instanceof jQuery.Event))return new jQuery.Event(src,props);src&&src.type?(this.originalEvent=src,this.type=src.type,this.isDefaultPrevented=src.defaultPrevented||void 0===src.defaultPrevented&&!1===src.returnValue?returnTrue:returnFalse,this.target=src.target&&3===src.target.nodeType?src.target.parentNode:src.target,this.currentTarget=src.currentTarget,this.relatedTarget=src.relatedTarget):this.type=src,props&&jQuery.extend(this,props),this.timeStamp=src&&src.timeStamp||Date.now(),this[jQuery.expando]=!0},jQuery.Event.prototype={constructor:jQuery.Event,isDefaultPrevented:returnFalse,isPropagationStopped:returnFalse,isImmediatePropagationStopped:returnFalse,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=returnTrue,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=returnTrue,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=returnTrue,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},jQuery.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(event){var button=event.button;return null==event.which&&rkeyEvent.test(event.type)?null!=event.charCode?event.charCode:event.keyCode:!event.which&&void 0!==button&&rmouseEvent.test(event.type)?1&button?1:2&button?3:4&button?2:0:event.which}},jQuery.event.addProp),jQuery.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(orig,fix){jQuery.event.special[orig]={delegateType:fix,bindType:fix,handle:function(event){var ret,related=event.relatedTarget,handleObj=event.handleObj;return related&&(related===this||jQuery.contains(this,related))||(event.type=handleObj.origType,ret=handleObj.handler.apply(this,arguments),event.type=fix),ret}}}),jQuery.fn.extend({on:function(types,selector,data,fn){return on(this,types,selector,data,fn)},one:function(types,selector,data,fn){return on(this,types,selector,data,fn,1)},off:function(types,selector,fn){var handleObj,type;if(types&&types.preventDefault&&types.handleObj)return handleObj=types.handleObj,jQuery(types.delegateTarget).off(handleObj.namespace?handleObj.origType+"."+handleObj.namespace:handleObj.origType,handleObj.selector,handleObj.handler),this;if("object"==typeof types){for(type in types)this.off(type,selector,types[type]);return this}return!1!==selector&&"function"!=typeof selector||(fn=selector,selector=void 0),!1===fn&&(fn=returnFalse),this.each(function(){jQuery.event.remove(this,types,fn,selector)})}});var rxhtmlTag=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,rnoInnerhtml=/<script|<style|<link/i,rchecked=/checked\s*(?:[^=]|=\s*.checked.)/i,rcleanScript=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function manipulationTarget(elem,content){return nodeName(elem,"table")&&nodeName(11!==content.nodeType?content:content.firstChild,"tr")&&jQuery(elem).children("tbody")[0]||elem}function disableScript(elem){return elem.type=(null!==elem.getAttribute("type"))+"/"+elem.type,elem}function restoreScript(elem){return"true/"===(elem.type||"").slice(0,5)?elem.type=elem.type.slice(5):elem.removeAttribute("type"),elem}function cloneCopyEvent(src,dest){var i,l,type,pdataOld,pdataCur,udataOld,udataCur,events;if(1===dest.nodeType){if(dataPriv.hasData(src)&&(pdataOld=dataPriv.access(src),pdataCur=dataPriv.set(dest,pdataOld),events=pdataOld.events))for(type in delete pdataCur.handle,pdataCur.events={},events)for(i=0,l=events[type].length;i<l;i++)jQuery.event.add(dest,type,events[type][i]);dataUser.hasData(src)&&(udataOld=dataUser.access(src),udataCur=jQuery.extend({},udataOld),dataUser.set(dest,udataCur))}}function domManip(collection,args,callback,ignored){args=concat.apply([],args);var fragment,first,scripts,hasScripts,node,doc,i=0,l=collection.length,iNoClone=l-1,value=args[0],valueIsFunction=isFunction(value);if(valueIsFunction||l>1&&"string"==typeof value&&!support.checkClone&&rchecked.test(value))return collection.each(function(index){var self=collection.eq(index);valueIsFunction&&(args[0]=value.call(this,index,self.html())),domManip(self,args,callback,ignored)});if(l&&(first=(fragment=buildFragment(args,collection[0].ownerDocument,!1,collection,ignored)).firstChild,1===fragment.childNodes.length&&(fragment=first),first||ignored)){for(hasScripts=(scripts=jQuery.map(getAll(fragment,"script"),disableScript)).length;i<l;i++)node=fragment,i!==iNoClone&&(node=jQuery.clone(node,!0,!0),hasScripts&&jQuery.merge(scripts,getAll(node,"script"))),callback.call(collection[i],node,i);if(hasScripts)for(doc=scripts[scripts.length-1].ownerDocument,jQuery.map(scripts,restoreScript),i=0;i<hasScripts;i++)node=scripts[i],rscriptType.test(node.type||"")&&!dataPriv.access(node,"globalEval")&&jQuery.contains(doc,node)&&(node.src&&"module"!==(node.type||"").toLowerCase()?jQuery._evalUrl&&jQuery._evalUrl(node.src):DOMEval(node.textContent.replace(rcleanScript,""),doc,node))}return collection}function remove(elem,selector,keepData){for(var node,nodes=selector?jQuery.filter(selector,elem):elem,i=0;null!=(node=nodes[i]);i++)keepData||1!==node.nodeType||jQuery.cleanData(getAll(node)),node.parentNode&&(keepData&&jQuery.contains(node.ownerDocument,node)&&setGlobalEval(getAll(node,"script")),node.parentNode.removeChild(node));return elem}jQuery.extend({htmlPrefilter:function(html){return html.replace(rxhtmlTag,"<$1></$2>")},clone:function(elem,dataAndEvents,deepDataAndEvents){var i,l,srcElements,destElements,src,dest,nodeName,clone=elem.cloneNode(!0),inPage=jQuery.contains(elem.ownerDocument,elem);if(!(support.noCloneChecked||1!==elem.nodeType&&11!==elem.nodeType||jQuery.isXMLDoc(elem)))for(destElements=getAll(clone),i=0,l=(srcElements=getAll(elem)).length;i<l;i++)src=srcElements[i],dest=destElements[i],void 0,"input"===(nodeName=dest.nodeName.toLowerCase())&&rcheckableType.test(src.type)?dest.checked=src.checked:"input"!==nodeName&&"textarea"!==nodeName||(dest.defaultValue=src.defaultValue);if(dataAndEvents)if(deepDataAndEvents)for(srcElements=srcElements||getAll(elem),destElements=destElements||getAll(clone),i=0,l=srcElements.length;i<l;i++)cloneCopyEvent(srcElements[i],destElements[i]);else cloneCopyEvent(elem,clone);return(destElements=getAll(clone,"script")).length>0&&setGlobalEval(destElements,!inPage&&getAll(elem,"script")),clone},cleanData:function(elems){for(var data,elem,type,special=jQuery.event.special,i=0;void 0!==(elem=elems[i]);i++)if(acceptData(elem)){if(data=elem[dataPriv.expando]){if(data.events)for(type in data.events)special[type]?jQuery.event.remove(elem,type):jQuery.removeEvent(elem,type,data.handle);elem[dataPriv.expando]=void 0}elem[dataUser.expando]&&(elem[dataUser.expando]=void 0)}}}),jQuery.fn.extend({detach:function(selector){return remove(this,selector,!0)},remove:function(selector){return remove(this,selector)},text:function(value){return access(this,function(value){return void 0===value?jQuery.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=value)})},null,value,arguments.length)},append:function(){return domManip(this,arguments,function(elem){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||manipulationTarget(this,elem).appendChild(elem)})},prepend:function(){return domManip(this,arguments,function(elem){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var target=manipulationTarget(this,elem);target.insertBefore(elem,target.firstChild)}})},before:function(){return domManip(this,arguments,function(elem){this.parentNode&&this.parentNode.insertBefore(elem,this)})},after:function(){return domManip(this,arguments,function(elem){this.parentNode&&this.parentNode.insertBefore(elem,this.nextSibling)})},empty:function(){for(var elem,i=0;null!=(elem=this[i]);i++)1===elem.nodeType&&(jQuery.cleanData(getAll(elem,!1)),elem.textContent="");return this},clone:function(dataAndEvents,deepDataAndEvents){return dataAndEvents=null!=dataAndEvents&&dataAndEvents,deepDataAndEvents=null==deepDataAndEvents?dataAndEvents:deepDataAndEvents,this.map(function(){return jQuery.clone(this,dataAndEvents,deepDataAndEvents)})},html:function(value){return access(this,function(value){var elem=this[0]||{},i=0,l=this.length;if(void 0===value&&1===elem.nodeType)return elem.innerHTML;if("string"==typeof value&&!rnoInnerhtml.test(value)&&!wrapMap[(rtagName.exec(value)||["",""])[1].toLowerCase()]){value=jQuery.htmlPrefilter(value);try{for(;i<l;i++)1===(elem=this[i]||{}).nodeType&&(jQuery.cleanData(getAll(elem,!1)),elem.innerHTML=value);elem=0}catch(e){}}elem&&this.empty().append(value)},null,value,arguments.length)},replaceWith:function(){var ignored=[];return domManip(this,arguments,function(elem){var parent=this.parentNode;jQuery.inArray(this,ignored)<0&&(jQuery.cleanData(getAll(this)),parent&&parent.replaceChild(elem,this))},ignored)}}),jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(selector){for(var elems,ret=[],insert=jQuery(selector),last=insert.length-1,i=0;i<=last;i++)elems=i===last?this:this.clone(!0),jQuery(insert[i])[original](elems),push.apply(ret,elems.get());return this.pushStack(ret)}});var rnumnonpx=new RegExp("^("+pnum+")(?!px)[a-z%]+$","i"),getStyles=function(elem){var view=elem.ownerDocument.defaultView;return view&&view.opener||(view=window),view.getComputedStyle(elem)},rboxStyle=new RegExp(cssExpand.join("|"),"i");function curCSS(elem,name,computed){var width,minWidth,maxWidth,ret,style=elem.style;return(computed=computed||getStyles(elem))&&(""!==(ret=computed.getPropertyValue(name)||computed[name])||jQuery.contains(elem.ownerDocument,elem)||(ret=jQuery.style(elem,name)),!support.pixelBoxStyles()&&rnumnonpx.test(ret)&&rboxStyle.test(name)&&(width=style.width,minWidth=style.minWidth,maxWidth=style.maxWidth,style.minWidth=style.maxWidth=style.width=ret,ret=computed.width,style.width=width,style.minWidth=minWidth,style.maxWidth=maxWidth)),void 0!==ret?ret+"":ret}function addGetHookIf(conditionFn,hookFn){return{get:function(){if(!conditionFn())return(this.get=hookFn).apply(this,arguments);delete this.get}}}!function(){function computeStyleTests(){if(div){container.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",div.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",documentElement.appendChild(container).appendChild(div);var divStyle=window.getComputedStyle(div);pixelPositionVal="1%"!==divStyle.top,reliableMarginLeftVal=12===roundPixelMeasures(divStyle.marginLeft),div.style.right="60%",pixelBoxStylesVal=36===roundPixelMeasures(divStyle.right),boxSizingReliableVal=36===roundPixelMeasures(divStyle.width),div.style.position="absolute",scrollboxSizeVal=36===div.offsetWidth||"absolute",documentElement.removeChild(container),div=null}}function roundPixelMeasures(measure){return Math.round(parseFloat(measure))}var pixelPositionVal,boxSizingReliableVal,scrollboxSizeVal,pixelBoxStylesVal,reliableMarginLeftVal,container=document.createElement("div"),div=document.createElement("div");div.style&&(div.style.backgroundClip="content-box",div.cloneNode(!0).style.backgroundClip="",support.clearCloneStyle="content-box"===div.style.backgroundClip,jQuery.extend(support,{boxSizingReliable:function(){return computeStyleTests(),boxSizingReliableVal},pixelBoxStyles:function(){return computeStyleTests(),pixelBoxStylesVal},pixelPosition:function(){return computeStyleTests(),pixelPositionVal},reliableMarginLeft:function(){return computeStyleTests(),reliableMarginLeftVal},scrollboxSize:function(){return computeStyleTests(),scrollboxSizeVal}}))}();var rdisplayswap=/^(none|table(?!-c[ea]).+)/,rcustomProp=/^--/,cssShow={position:"absolute",visibility:"hidden",display:"block"},cssNormalTransform={letterSpacing:"0",fontWeight:"400"},cssPrefixes=["Webkit","Moz","ms"],emptyStyle=document.createElement("div").style;function finalPropName(name){var ret=jQuery.cssProps[name];return ret||(ret=jQuery.cssProps[name]=function(name){if(name in emptyStyle)return name;for(var capName=name[0].toUpperCase()+name.slice(1),i=cssPrefixes.length;i--;)if((name=cssPrefixes[i]+capName)in emptyStyle)return name}(name)||name),ret}function setPositiveNumber(elem,value,subtract){var matches=rcssNum.exec(value);return matches?Math.max(0,matches[2]-(subtract||0))+(matches[3]||"px"):value}function boxModelAdjustment(elem,dimension,box,isBorderBox,styles,computedVal){var i="width"===dimension?1:0,extra=0,delta=0;if(box===(isBorderBox?"border":"content"))return 0;for(;i<4;i+=2)"margin"===box&&(delta+=jQuery.css(elem,box+cssExpand[i],!0,styles)),isBorderBox?("content"===box&&(delta-=jQuery.css(elem,"padding"+cssExpand[i],!0,styles)),"margin"!==box&&(delta-=jQuery.css(elem,"border"+cssExpand[i]+"Width",!0,styles))):(delta+=jQuery.css(elem,"padding"+cssExpand[i],!0,styles),"padding"!==box?delta+=jQuery.css(elem,"border"+cssExpand[i]+"Width",!0,styles):extra+=jQuery.css(elem,"border"+cssExpand[i]+"Width",!0,styles));return!isBorderBox&&computedVal>=0&&(delta+=Math.max(0,Math.ceil(elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)]-computedVal-delta-extra-.5))),delta}function getWidthOrHeight(elem,dimension,extra){var styles=getStyles(elem),val=curCSS(elem,dimension,styles),isBorderBox="border-box"===jQuery.css(elem,"boxSizing",!1,styles),valueIsBorderBox=isBorderBox;if(rnumnonpx.test(val)){if(!extra)return val;val="auto"}return valueIsBorderBox=valueIsBorderBox&&(support.boxSizingReliable()||val===elem.style[dimension]),("auto"===val||!parseFloat(val)&&"inline"===jQuery.css(elem,"display",!1,styles))&&(val=elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)],valueIsBorderBox=!0),(val=parseFloat(val)||0)+boxModelAdjustment(elem,dimension,extra||(isBorderBox?"border":"content"),valueIsBorderBox,styles,val)+"px"}function Tween(elem,options,prop,end,easing){return new Tween.prototype.init(elem,options,prop,end,easing)}jQuery.extend({cssHooks:{opacity:{get:function(elem,computed){if(computed){var ret=curCSS(elem,"opacity");return""===ret?"1":ret}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(elem,name,value,extra){if(elem&&3!==elem.nodeType&&8!==elem.nodeType&&elem.style){var ret,type,hooks,origName=camelCase(name),isCustomProp=rcustomProp.test(name),style=elem.style;if(isCustomProp||(name=finalPropName(origName)),hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName],void 0===value)return hooks&&"get"in hooks&&void 0!==(ret=hooks.get(elem,!1,extra))?ret:style[name];"string"===(type=typeof value)&&(ret=rcssNum.exec(value))&&ret[1]&&(value=adjustCSS(elem,name,ret),type="number"),null!=value&&value==value&&("number"===type&&(value+=ret&&ret[3]||(jQuery.cssNumber[origName]?"":"px")),support.clearCloneStyle||""!==value||0!==name.indexOf("background")||(style[name]="inherit"),hooks&&"set"in hooks&&void 0===(value=hooks.set(elem,value,extra))||(isCustomProp?style.setProperty(name,value):style[name]=value))}},css:function(elem,name,extra,styles){var val,num,hooks,origName=camelCase(name);return rcustomProp.test(name)||(name=finalPropName(origName)),(hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName])&&"get"in hooks&&(val=hooks.get(elem,!0,extra)),void 0===val&&(val=curCSS(elem,name,styles)),"normal"===val&&name in cssNormalTransform&&(val=cssNormalTransform[name]),""===extra||extra?(num=parseFloat(val),!0===extra||isFinite(num)?num||0:val):val}}),jQuery.each(["height","width"],function(i,dimension){jQuery.cssHooks[dimension]={get:function(elem,computed,extra){if(computed)return!rdisplayswap.test(jQuery.css(elem,"display"))||elem.getClientRects().length&&elem.getBoundingClientRect().width?getWidthOrHeight(elem,dimension,extra):swap(elem,cssShow,function(){return getWidthOrHeight(elem,dimension,extra)})},set:function(elem,value,extra){var matches,styles=getStyles(elem),isBorderBox="border-box"===jQuery.css(elem,"boxSizing",!1,styles),subtract=extra&&boxModelAdjustment(elem,dimension,extra,isBorderBox,styles);return isBorderBox&&support.scrollboxSize()===styles.position&&(subtract-=Math.ceil(elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)]-parseFloat(styles[dimension])-boxModelAdjustment(elem,dimension,"border",!1,styles)-.5)),subtract&&(matches=rcssNum.exec(value))&&"px"!==(matches[3]||"px")&&(elem.style[dimension]=value,value=jQuery.css(elem,dimension)),setPositiveNumber(0,value,subtract)}}}),jQuery.cssHooks.marginLeft=addGetHookIf(support.reliableMarginLeft,function(elem,computed){if(computed)return(parseFloat(curCSS(elem,"marginLeft"))||elem.getBoundingClientRect().left-swap(elem,{marginLeft:0},function(){return elem.getBoundingClientRect().left}))+"px"}),jQuery.each({margin:"",padding:"",border:"Width"},function(prefix,suffix){jQuery.cssHooks[prefix+suffix]={expand:function(value){for(var i=0,expanded={},parts="string"==typeof value?value.split(" "):[value];i<4;i++)expanded[prefix+cssExpand[i]+suffix]=parts[i]||parts[i-2]||parts[0];return expanded}},"margin"!==prefix&&(jQuery.cssHooks[prefix+suffix].set=setPositiveNumber)}),jQuery.fn.extend({css:function(name,value){return access(this,function(elem,name,value){var styles,len,map={},i=0;if(Array.isArray(name)){for(styles=getStyles(elem),len=name.length;i<len;i++)map[name[i]]=jQuery.css(elem,name[i],!1,styles);return map}return void 0!==value?jQuery.style(elem,name,value):jQuery.css(elem,name)},name,value,arguments.length>1)}}),jQuery.Tween=Tween,Tween.prototype={constructor:Tween,init:function(elem,options,prop,end,easing,unit){this.elem=elem,this.prop=prop,this.easing=easing||jQuery.easing._default,this.options=options,this.start=this.now=this.cur(),this.end=end,this.unit=unit||(jQuery.cssNumber[prop]?"":"px")},cur:function(){var hooks=Tween.propHooks[this.prop];return hooks&&hooks.get?hooks.get(this):Tween.propHooks._default.get(this)},run:function(percent){var eased,hooks=Tween.propHooks[this.prop];return this.options.duration?this.pos=eased=jQuery.easing[this.easing](percent,this.options.duration*percent,0,1,this.options.duration):this.pos=eased=percent,this.now=(this.end-this.start)*eased+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),hooks&&hooks.set?hooks.set(this):Tween.propHooks._default.set(this),this}},Tween.prototype.init.prototype=Tween.prototype,Tween.propHooks={_default:{get:function(tween){var result;return 1!==tween.elem.nodeType||null!=tween.elem[tween.prop]&&null==tween.elem.style[tween.prop]?tween.elem[tween.prop]:(result=jQuery.css(tween.elem,tween.prop,""))&&"auto"!==result?result:0},set:function(tween){jQuery.fx.step[tween.prop]?jQuery.fx.step[tween.prop](tween):1!==tween.elem.nodeType||null==tween.elem.style[jQuery.cssProps[tween.prop]]&&!jQuery.cssHooks[tween.prop]?tween.elem[tween.prop]=tween.now:jQuery.style(tween.elem,tween.prop,tween.now+tween.unit)}}},Tween.propHooks.scrollTop=Tween.propHooks.scrollLeft={set:function(tween){tween.elem.nodeType&&tween.elem.parentNode&&(tween.elem[tween.prop]=tween.now)}},jQuery.easing={linear:function(p){return p},swing:function(p){return.5-Math.cos(p*Math.PI)/2},_default:"swing"},jQuery.fx=Tween.prototype.init,jQuery.fx.step={};var fxNow,inProgress,rfxtypes=/^(?:toggle|show|hide)$/,rrun=/queueHooks$/;function schedule(){inProgress&&(!1===document.hidden&&window.requestAnimationFrame?window.requestAnimationFrame(schedule):window.setTimeout(schedule,jQuery.fx.interval),jQuery.fx.tick())}function createFxNow(){return window.setTimeout(function(){fxNow=void 0}),fxNow=Date.now()}function genFx(type,includeWidth){var which,i=0,attrs={height:type};for(includeWidth=includeWidth?1:0;i<4;i+=2-includeWidth)attrs["margin"+(which=cssExpand[i])]=attrs["padding"+which]=type;return includeWidth&&(attrs.opacity=attrs.width=type),attrs}function createTween(value,prop,animation){for(var tween,collection=(Animation.tweeners[prop]||[]).concat(Animation.tweeners["*"]),index=0,length=collection.length;index<length;index++)if(tween=collection[index].call(animation,prop,value))return tween}function Animation(elem,properties,options){var result,stopped,index=0,length=Animation.prefilters.length,deferred=jQuery.Deferred().always(function(){delete tick.elem}),tick=function(){if(stopped)return!1;for(var currentTime=fxNow||createFxNow(),remaining=Math.max(0,animation.startTime+animation.duration-currentTime),percent=1-(remaining/animation.duration||0),index=0,length=animation.tweens.length;index<length;index++)animation.tweens[index].run(percent);return deferred.notifyWith(elem,[animation,percent,remaining]),percent<1&&length?remaining:(length||deferred.notifyWith(elem,[animation,1,0]),deferred.resolveWith(elem,[animation]),!1)},animation=deferred.promise({elem:elem,props:jQuery.extend({},properties),opts:jQuery.extend(!0,{specialEasing:{},easing:jQuery.easing._default},options),originalProperties:properties,originalOptions:options,startTime:fxNow||createFxNow(),duration:options.duration,tweens:[],createTween:function(prop,end){var tween=jQuery.Tween(elem,animation.opts,prop,end,animation.opts.specialEasing[prop]||animation.opts.easing);return animation.tweens.push(tween),tween},stop:function(gotoEnd){var index=0,length=gotoEnd?animation.tweens.length:0;if(stopped)return this;for(stopped=!0;index<length;index++)animation.tweens[index].run(1);return gotoEnd?(deferred.notifyWith(elem,[animation,1,0]),deferred.resolveWith(elem,[animation,gotoEnd])):deferred.rejectWith(elem,[animation,gotoEnd]),this}}),props=animation.props;for(!function(props,specialEasing){var index,name,easing,value,hooks;for(index in props)if(easing=specialEasing[name=camelCase(index)],value=props[index],Array.isArray(value)&&(easing=value[1],value=props[index]=value[0]),index!==name&&(props[name]=value,delete props[index]),(hooks=jQuery.cssHooks[name])&&"expand"in hooks)for(index in value=hooks.expand(value),delete props[name],value)index in props||(props[index]=value[index],specialEasing[index]=easing);else specialEasing[name]=easing}(props,animation.opts.specialEasing);index<length;index++)if(result=Animation.prefilters[index].call(animation,elem,props,animation.opts))return isFunction(result.stop)&&(jQuery._queueHooks(animation.elem,animation.opts.queue).stop=result.stop.bind(result)),result;return jQuery.map(props,createTween,animation),isFunction(animation.opts.start)&&animation.opts.start.call(elem,animation),animation.progress(animation.opts.progress).done(animation.opts.done,animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always),jQuery.fx.timer(jQuery.extend(tick,{elem:elem,anim:animation,queue:animation.opts.queue})),animation}jQuery.Animation=jQuery.extend(Animation,{tweeners:{"*":[function(prop,value){var tween=this.createTween(prop,value);return adjustCSS(tween.elem,prop,rcssNum.exec(value),tween),tween}]},tweener:function(props,callback){isFunction(props)?(callback=props,props=["*"]):props=props.match(rnothtmlwhite);for(var prop,index=0,length=props.length;index<length;index++)prop=props[index],Animation.tweeners[prop]=Animation.tweeners[prop]||[],Animation.tweeners[prop].unshift(callback)},prefilters:[function(elem,props,opts){var prop,value,toggle,hooks,oldfire,propTween,restoreDisplay,display,isBox="width"in props||"height"in props,anim=this,orig={},style=elem.style,hidden=elem.nodeType&&isHiddenWithinTree(elem),dataShow=dataPriv.get(elem,"fxshow");for(prop in opts.queue||(null==(hooks=jQuery._queueHooks(elem,"fx")).unqueued&&(hooks.unqueued=0,oldfire=hooks.empty.fire,hooks.empty.fire=function(){hooks.unqueued||oldfire()}),hooks.unqueued++,anim.always(function(){anim.always(function(){hooks.unqueued--,jQuery.queue(elem,"fx").length||hooks.empty.fire()})})),props)if(value=props[prop],rfxtypes.test(value)){if(delete props[prop],toggle=toggle||"toggle"===value,value===(hidden?"hide":"show")){if("show"!==value||!dataShow||void 0===dataShow[prop])continue;hidden=!0}orig[prop]=dataShow&&dataShow[prop]||jQuery.style(elem,prop)}if((propTween=!jQuery.isEmptyObject(props))||!jQuery.isEmptyObject(orig))for(prop in isBox&&1===elem.nodeType&&(opts.overflow=[style.overflow,style.overflowX,style.overflowY],null==(restoreDisplay=dataShow&&dataShow.display)&&(restoreDisplay=dataPriv.get(elem,"display")),"none"===(display=jQuery.css(elem,"display"))&&(restoreDisplay?display=restoreDisplay:(showHide([elem],!0),restoreDisplay=elem.style.display||restoreDisplay,display=jQuery.css(elem,"display"),showHide([elem]))),("inline"===display||"inline-block"===display&&null!=restoreDisplay)&&"none"===jQuery.css(elem,"float")&&(propTween||(anim.done(function(){style.display=restoreDisplay}),null==restoreDisplay&&(display=style.display,restoreDisplay="none"===display?"":display)),style.display="inline-block")),opts.overflow&&(style.overflow="hidden",anim.always(function(){style.overflow=opts.overflow[0],style.overflowX=opts.overflow[1],style.overflowY=opts.overflow[2]})),propTween=!1,orig)propTween||(dataShow?"hidden"in dataShow&&(hidden=dataShow.hidden):dataShow=dataPriv.access(elem,"fxshow",{display:restoreDisplay}),toggle&&(dataShow.hidden=!hidden),hidden&&showHide([elem],!0),anim.done(function(){for(prop in hidden||showHide([elem]),dataPriv.remove(elem,"fxshow"),orig)jQuery.style(elem,prop,orig[prop])})),propTween=createTween(hidden?dataShow[prop]:0,prop,anim),prop in dataShow||(dataShow[prop]=propTween.start,hidden&&(propTween.end=propTween.start,propTween.start=0))}],prefilter:function(callback,prepend){prepend?Animation.prefilters.unshift(callback):Animation.prefilters.push(callback)}}),jQuery.speed=function(speed,easing,fn){var opt=speed&&"object"==typeof speed?jQuery.extend({},speed):{complete:fn||!fn&&easing||isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&!isFunction(easing)&&easing};return jQuery.fx.off?opt.duration=0:"number"!=typeof opt.duration&&(opt.duration in jQuery.fx.speeds?opt.duration=jQuery.fx.speeds[opt.duration]:opt.duration=jQuery.fx.speeds._default),null!=opt.queue&&!0!==opt.queue||(opt.queue="fx"),opt.old=opt.complete,opt.complete=function(){isFunction(opt.old)&&opt.old.call(this),opt.queue&&jQuery.dequeue(this,opt.queue)},opt},jQuery.fn.extend({fadeTo:function(speed,to,easing,callback){return this.filter(isHiddenWithinTree).css("opacity",0).show().end().animate({opacity:to},speed,easing,callback)},animate:function(prop,speed,easing,callback){var empty=jQuery.isEmptyObject(prop),optall=jQuery.speed(speed,easing,callback),doAnimation=function(){var anim=Animation(this,jQuery.extend({},prop),optall);(empty||dataPriv.get(this,"finish"))&&anim.stop(!0)};return doAnimation.finish=doAnimation,empty||!1===optall.queue?this.each(doAnimation):this.queue(optall.queue,doAnimation)},stop:function(type,clearQueue,gotoEnd){var stopQueue=function(hooks){var stop=hooks.stop;delete hooks.stop,stop(gotoEnd)};return"string"!=typeof type&&(gotoEnd=clearQueue,clearQueue=type,type=void 0),clearQueue&&!1!==type&&this.queue(type||"fx",[]),this.each(function(){var dequeue=!0,index=null!=type&&type+"queueHooks",timers=jQuery.timers,data=dataPriv.get(this);if(index)data[index]&&data[index].stop&&stopQueue(data[index]);else for(index in data)data[index]&&data[index].stop&&rrun.test(index)&&stopQueue(data[index]);for(index=timers.length;index--;)timers[index].elem!==this||null!=type&&timers[index].queue!==type||(timers[index].anim.stop(gotoEnd),dequeue=!1,timers.splice(index,1));!dequeue&&gotoEnd||jQuery.dequeue(this,type)})},finish:function(type){return!1!==type&&(type=type||"fx"),this.each(function(){var index,data=dataPriv.get(this),queue=data[type+"queue"],hooks=data[type+"queueHooks"],timers=jQuery.timers,length=queue?queue.length:0;for(data.finish=!0,jQuery.queue(this,type,[]),hooks&&hooks.stop&&hooks.stop.call(this,!0),index=timers.length;index--;)timers[index].elem===this&&timers[index].queue===type&&(timers[index].anim.stop(!0),timers.splice(index,1));for(index=0;index<length;index++)queue[index]&&queue[index].finish&&queue[index].finish.call(this);delete data.finish})}}),jQuery.each(["toggle","show","hide"],function(i,name){var cssFn=jQuery.fn[name];jQuery.fn[name]=function(speed,easing,callback){return null==speed||"boolean"==typeof speed?cssFn.apply(this,arguments):this.animate(genFx(name,!0),speed,easing,callback)}}),jQuery.each({slideDown:genFx("show"),slideUp:genFx("hide"),slideToggle:genFx("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(name,props){jQuery.fn[name]=function(speed,easing,callback){return this.animate(props,speed,easing,callback)}}),jQuery.timers=[],jQuery.fx.tick=function(){var timer,i=0,timers=jQuery.timers;for(fxNow=Date.now();i<timers.length;i++)(timer=timers[i])()||timers[i]!==timer||timers.splice(i--,1);timers.length||jQuery.fx.stop(),fxNow=void 0},jQuery.fx.timer=function(timer){jQuery.timers.push(timer),jQuery.fx.start()},jQuery.fx.interval=13,jQuery.fx.start=function(){inProgress||(inProgress=!0,schedule())},jQuery.fx.stop=function(){inProgress=null},jQuery.fx.speeds={slow:600,fast:200,_default:400},jQuery.fn.delay=function(time,type){return time=jQuery.fx&&jQuery.fx.speeds[time]||time,type=type||"fx",this.queue(type,function(next,hooks){var timeout=window.setTimeout(next,time);hooks.stop=function(){window.clearTimeout(timeout)}})},function(){var input=document.createElement("input"),opt=document.createElement("select").appendChild(document.createElement("option"));input.type="checkbox",support.checkOn=""!==input.value,support.optSelected=opt.selected,(input=document.createElement("input")).value="t",input.type="radio",support.radioValue="t"===input.value}();var boolHook,attrHandle=jQuery.expr.attrHandle;jQuery.fn.extend({attr:function(name,value){return access(this,jQuery.attr,name,value,arguments.length>1)},removeAttr:function(name){return this.each(function(){jQuery.removeAttr(this,name)})}}),jQuery.extend({attr:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(3!==nType&&8!==nType&&2!==nType)return void 0===elem.getAttribute?jQuery.prop(elem,name,value):(1===nType&&jQuery.isXMLDoc(elem)||(hooks=jQuery.attrHooks[name.toLowerCase()]||(jQuery.expr.match.bool.test(name)?boolHook:void 0)),void 0!==value?null===value?void jQuery.removeAttr(elem,name):hooks&&"set"in hooks&&void 0!==(ret=hooks.set(elem,value,name))?ret:(elem.setAttribute(name,value+""),value):hooks&&"get"in hooks&&null!==(ret=hooks.get(elem,name))?ret:null==(ret=jQuery.find.attr(elem,name))?void 0:ret)},attrHooks:{type:{set:function(elem,value){if(!support.radioValue&&"radio"===value&&nodeName(elem,"input")){var val=elem.value;return elem.setAttribute("type",value),val&&(elem.value=val),value}}}},removeAttr:function(elem,value){var name,i=0,attrNames=value&&value.match(rnothtmlwhite);if(attrNames&&1===elem.nodeType)for(;name=attrNames[i++];)elem.removeAttribute(name)}}),boolHook={set:function(elem,value,name){return!1===value?jQuery.removeAttr(elem,name):elem.setAttribute(name,name),name}},jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g),function(i,name){var getter=attrHandle[name]||jQuery.find.attr;attrHandle[name]=function(elem,name,isXML){var ret,handle,lowercaseName=name.toLowerCase();return isXML||(handle=attrHandle[lowercaseName],attrHandle[lowercaseName]=ret,ret=null!=getter(elem,name,isXML)?lowercaseName:null,attrHandle[lowercaseName]=handle),ret}});var rfocusable=/^(?:input|select|textarea|button)$/i,rclickable=/^(?:a|area)$/i;function stripAndCollapse(value){return(value.match(rnothtmlwhite)||[]).join(" ")}function getClass(elem){return elem.getAttribute&&elem.getAttribute("class")||""}function classesToArray(value){return Array.isArray(value)?value:"string"==typeof value&&value.match(rnothtmlwhite)||[]}jQuery.fn.extend({prop:function(name,value){return access(this,jQuery.prop,name,value,arguments.length>1)},removeProp:function(name){return this.each(function(){delete this[jQuery.propFix[name]||name]})}}),jQuery.extend({prop:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(3!==nType&&8!==nType&&2!==nType)return 1===nType&&jQuery.isXMLDoc(elem)||(name=jQuery.propFix[name]||name,hooks=jQuery.propHooks[name]),void 0!==value?hooks&&"set"in hooks&&void 0!==(ret=hooks.set(elem,value,name))?ret:elem[name]=value:hooks&&"get"in hooks&&null!==(ret=hooks.get(elem,name))?ret:elem[name]},propHooks:{tabIndex:{get:function(elem){var tabindex=jQuery.find.attr(elem,"tabindex");return tabindex?parseInt(tabindex,10):rfocusable.test(elem.nodeName)||rclickable.test(elem.nodeName)&&elem.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),support.optSelected||(jQuery.propHooks.selected={get:function(elem){var parent=elem.parentNode;return parent&&parent.parentNode&&parent.parentNode.selectedIndex,null},set:function(elem){var parent=elem.parentNode;parent&&(parent.selectedIndex,parent.parentNode&&parent.parentNode.selectedIndex)}}),jQuery.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){jQuery.propFix[this.toLowerCase()]=this}),jQuery.fn.extend({addClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(isFunction(value))return this.each(function(j){jQuery(this).addClass(value.call(this,j,getClass(this)))});if((classes=classesToArray(value)).length)for(;elem=this[i++];)if(curValue=getClass(elem),cur=1===elem.nodeType&&" "+stripAndCollapse(curValue)+" "){for(j=0;clazz=classes[j++];)cur.indexOf(" "+clazz+" ")<0&&(cur+=clazz+" ");curValue!==(finalValue=stripAndCollapse(cur))&&elem.setAttribute("class",finalValue)}return this},removeClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(isFunction(value))return this.each(function(j){jQuery(this).removeClass(value.call(this,j,getClass(this)))});if(!arguments.length)return this.attr("class","");if((classes=classesToArray(value)).length)for(;elem=this[i++];)if(curValue=getClass(elem),cur=1===elem.nodeType&&" "+stripAndCollapse(curValue)+" "){for(j=0;clazz=classes[j++];)for(;cur.indexOf(" "+clazz+" ")>-1;)cur=cur.replace(" "+clazz+" "," ");curValue!==(finalValue=stripAndCollapse(cur))&&elem.setAttribute("class",finalValue)}return this},toggleClass:function(value,stateVal){var type=typeof value,isValidValue="string"===type||Array.isArray(value);return"boolean"==typeof stateVal&&isValidValue?stateVal?this.addClass(value):this.removeClass(value):isFunction(value)?this.each(function(i){jQuery(this).toggleClass(value.call(this,i,getClass(this),stateVal),stateVal)}):this.each(function(){var className,i,self,classNames;if(isValidValue)for(i=0,self=jQuery(this),classNames=classesToArray(value);className=classNames[i++];)self.hasClass(className)?self.removeClass(className):self.addClass(className);else void 0!==value&&"boolean"!==type||((className=getClass(this))&&dataPriv.set(this,"__className__",className),this.setAttribute&&this.setAttribute("class",className||!1===value?"":dataPriv.get(this,"__className__")||""))})},hasClass:function(selector){var className,elem,i=0;for(className=" "+selector+" ";elem=this[i++];)if(1===elem.nodeType&&(" "+stripAndCollapse(getClass(elem))+" ").indexOf(className)>-1)return!0;return!1}});var rreturn=/\r/g;jQuery.fn.extend({val:function(value){var hooks,ret,valueIsFunction,elem=this[0];return arguments.length?(valueIsFunction=isFunction(value),this.each(function(i){var val;1===this.nodeType&&(null==(val=valueIsFunction?value.call(this,i,jQuery(this).val()):value)?val="":"number"==typeof val?val+="":Array.isArray(val)&&(val=jQuery.map(val,function(value){return null==value?"":value+""})),(hooks=jQuery.valHooks[this.type]||jQuery.valHooks[this.nodeName.toLowerCase()])&&"set"in hooks&&void 0!==hooks.set(this,val,"value")||(this.value=val))})):elem?(hooks=jQuery.valHooks[elem.type]||jQuery.valHooks[elem.nodeName.toLowerCase()])&&"get"in hooks&&void 0!==(ret=hooks.get(elem,"value"))?ret:"string"==typeof(ret=elem.value)?ret.replace(rreturn,""):null==ret?"":ret:void 0}}),jQuery.extend({valHooks:{option:{get:function(elem){var val=jQuery.find.attr(elem,"value");return null!=val?val:stripAndCollapse(jQuery.text(elem))}},select:{get:function(elem){var value,option,i,options=elem.options,index=elem.selectedIndex,one="select-one"===elem.type,values=one?null:[],max=one?index+1:options.length;for(i=index<0?max:one?index:0;i<max;i++)if(((option=options[i]).selected||i===index)&&!option.disabled&&(!option.parentNode.disabled||!nodeName(option.parentNode,"optgroup"))){if(value=jQuery(option).val(),one)return value;values.push(value)}return values},set:function(elem,value){for(var optionSet,option,options=elem.options,values=jQuery.makeArray(value),i=options.length;i--;)((option=options[i]).selected=jQuery.inArray(jQuery.valHooks.option.get(option),values)>-1)&&(optionSet=!0);return optionSet||(elem.selectedIndex=-1),values}}}}),jQuery.each(["radio","checkbox"],function(){jQuery.valHooks[this]={set:function(elem,value){if(Array.isArray(value))return elem.checked=jQuery.inArray(jQuery(elem).val(),value)>-1}},support.checkOn||(jQuery.valHooks[this].get=function(elem){return null===elem.getAttribute("value")?"on":elem.value})}),support.focusin="onfocusin"in window;var rfocusMorph=/^(?:focusinfocus|focusoutblur)$/,stopPropagationCallback=function(e){e.stopPropagation()};jQuery.extend(jQuery.event,{trigger:function(event,data,elem,onlyHandlers){var i,cur,tmp,bubbleType,ontype,handle,special,lastElement,eventPath=[elem||document],type=hasOwn.call(event,"type")?event.type:event,namespaces=hasOwn.call(event,"namespace")?event.namespace.split("."):[];if(cur=lastElement=tmp=elem=elem||document,3!==elem.nodeType&&8!==elem.nodeType&&!rfocusMorph.test(type+jQuery.event.triggered)&&(type.indexOf(".")>-1&&(type=(namespaces=type.split(".")).shift(),namespaces.sort()),ontype=type.indexOf(":")<0&&"on"+type,(event=event[jQuery.expando]?event:new jQuery.Event(type,"object"==typeof event&&event)).isTrigger=onlyHandlers?2:3,event.namespace=namespaces.join("."),event.rnamespace=event.namespace?new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,event.result=void 0,event.target||(event.target=elem),data=null==data?[event]:jQuery.makeArray(data,[event]),special=jQuery.event.special[type]||{},onlyHandlers||!special.trigger||!1!==special.trigger.apply(elem,data))){if(!onlyHandlers&&!special.noBubble&&!isWindow(elem)){for(bubbleType=special.delegateType||type,rfocusMorph.test(bubbleType+type)||(cur=cur.parentNode);cur;cur=cur.parentNode)eventPath.push(cur),tmp=cur;tmp===(elem.ownerDocument||document)&&eventPath.push(tmp.defaultView||tmp.parentWindow||window)}for(i=0;(cur=eventPath[i++])&&!event.isPropagationStopped();)lastElement=cur,event.type=i>1?bubbleType:special.bindType||type,(handle=(dataPriv.get(cur,"events")||{})[event.type]&&dataPriv.get(cur,"handle"))&&handle.apply(cur,data),(handle=ontype&&cur[ontype])&&handle.apply&&acceptData(cur)&&(event.result=handle.apply(cur,data),!1===event.result&&event.preventDefault());return event.type=type,onlyHandlers||event.isDefaultPrevented()||special._default&&!1!==special._default.apply(eventPath.pop(),data)||!acceptData(elem)||ontype&&isFunction(elem[type])&&!isWindow(elem)&&((tmp=elem[ontype])&&(elem[ontype]=null),jQuery.event.triggered=type,event.isPropagationStopped()&&lastElement.addEventListener(type,stopPropagationCallback),elem[type](),event.isPropagationStopped()&&lastElement.removeEventListener(type,stopPropagationCallback),jQuery.event.triggered=void 0,tmp&&(elem[ontype]=tmp)),event.result}},simulate:function(type,elem,event){var e=jQuery.extend(new jQuery.Event,event,{type:type,isSimulated:!0});jQuery.event.trigger(e,null,elem)}}),jQuery.fn.extend({trigger:function(type,data){return this.each(function(){jQuery.event.trigger(type,data,this)})},triggerHandler:function(type,data){var elem=this[0];if(elem)return jQuery.event.trigger(type,data,elem,!0)}}),support.focusin||jQuery.each({focus:"focusin",blur:"focusout"},function(orig,fix){var handler=function(event){jQuery.event.simulate(fix,event.target,jQuery.event.fix(event))};jQuery.event.special[fix]={setup:function(){var doc=this.ownerDocument||this,attaches=dataPriv.access(doc,fix);attaches||doc.addEventListener(orig,handler,!0),dataPriv.access(doc,fix,(attaches||0)+1)},teardown:function(){var doc=this.ownerDocument||this,attaches=dataPriv.access(doc,fix)-1;attaches?dataPriv.access(doc,fix,attaches):(doc.removeEventListener(orig,handler,!0),dataPriv.remove(doc,fix))}}});var location=window.location,nonce=Date.now(),rquery=/\?/;jQuery.parseXML=function(data){var xml;if(!data||"string"!=typeof data)return null;try{xml=(new window.DOMParser).parseFromString(data,"text/xml")}catch(e){xml=void 0}return xml&&!xml.getElementsByTagName("parsererror").length||jQuery.error("Invalid XML: "+data),xml};var rbracket=/\[\]$/,rCRLF=/\r?\n/g,rsubmitterTypes=/^(?:submit|button|image|reset|file)$/i,rsubmittable=/^(?:input|select|textarea|keygen)/i;function buildParams(prefix,obj,traditional,add){var name;if(Array.isArray(obj))jQuery.each(obj,function(i,v){traditional||rbracket.test(prefix)?add(prefix,v):buildParams(prefix+"["+("object"==typeof v&&null!=v?i:"")+"]",v,traditional,add)});else if(traditional||"object"!==toType(obj))add(prefix,obj);else for(name in obj)buildParams(prefix+"["+name+"]",obj[name],traditional,add)}jQuery.param=function(a,traditional){var prefix,s=[],add=function(key,valueOrFunction){var value=isFunction(valueOrFunction)?valueOrFunction():valueOrFunction;s[s.length]=encodeURIComponent(key)+"="+encodeURIComponent(null==value?"":value)};if(Array.isArray(a)||a.jquery&&!jQuery.isPlainObject(a))jQuery.each(a,function(){add(this.name,this.value)});else for(prefix in a)buildParams(prefix,a[prefix],traditional,add);return s.join("&")},jQuery.fn.extend({serialize:function(){return jQuery.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var elements=jQuery.prop(this,"elements");return elements?jQuery.makeArray(elements):this}).filter(function(){var type=this.type;return this.name&&!jQuery(this).is(":disabled")&&rsubmittable.test(this.nodeName)&&!rsubmitterTypes.test(type)&&(this.checked||!rcheckableType.test(type))}).map(function(i,elem){var val=jQuery(this).val();return null==val?null:Array.isArray(val)?jQuery.map(val,function(val){return{name:elem.name,value:val.replace(rCRLF,"\r\n")}}):{name:elem.name,value:val.replace(rCRLF,"\r\n")}}).get()}});var r20=/%20/g,rhash=/#.*$/,rantiCache=/([?&])_=[^&]*/,rheaders=/^(.*?):[ \t]*([^\r\n]*)$/gm,rnoContent=/^(?:GET|HEAD)$/,rprotocol=/^\/\//,prefilters={},transports={},allTypes="*/".concat("*"),originAnchor=document.createElement("a");function addToPrefiltersOrTransports(structure){return function(dataTypeExpression,func){"string"!=typeof dataTypeExpression&&(func=dataTypeExpression,dataTypeExpression="*");var dataType,i=0,dataTypes=dataTypeExpression.toLowerCase().match(rnothtmlwhite)||[];if(isFunction(func))for(;dataType=dataTypes[i++];)"+"===dataType[0]?(dataType=dataType.slice(1)||"*",(structure[dataType]=structure[dataType]||[]).unshift(func)):(structure[dataType]=structure[dataType]||[]).push(func)}}function inspectPrefiltersOrTransports(structure,options,originalOptions,jqXHR){var inspected={},seekingTransport=structure===transports;function inspect(dataType){var selected;return inspected[dataType]=!0,jQuery.each(structure[dataType]||[],function(_,prefilterOrFactory){var dataTypeOrTransport=prefilterOrFactory(options,originalOptions,jqXHR);return"string"!=typeof dataTypeOrTransport||seekingTransport||inspected[dataTypeOrTransport]?seekingTransport?!(selected=dataTypeOrTransport):void 0:(options.dataTypes.unshift(dataTypeOrTransport),inspect(dataTypeOrTransport),!1)}),selected}return inspect(options.dataTypes[0])||!inspected["*"]&&inspect("*")}function ajaxExtend(target,src){var key,deep,flatOptions=jQuery.ajaxSettings.flatOptions||{};for(key in src)void 0!==src[key]&&((flatOptions[key]?target:deep||(deep={}))[key]=src[key]);return deep&&jQuery.extend(!0,target,deep),target}originAnchor.href=location.href,jQuery.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:location.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(location.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":allTypes,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":jQuery.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(target,settings){return settings?ajaxExtend(ajaxExtend(target,jQuery.ajaxSettings),settings):ajaxExtend(jQuery.ajaxSettings,target)},ajaxPrefilter:addToPrefiltersOrTransports(prefilters),ajaxTransport:addToPrefiltersOrTransports(transports),ajax:function(url,options){"object"==typeof url&&(options=url,url=void 0),options=options||{};var transport,cacheURL,responseHeadersString,responseHeaders,timeoutTimer,urlAnchor,completed,fireGlobals,i,uncached,s=jQuery.ajaxSetup({},options),callbackContext=s.context||s,globalEventContext=s.context&&(callbackContext.nodeType||callbackContext.jquery)?jQuery(callbackContext):jQuery.event,deferred=jQuery.Deferred(),completeDeferred=jQuery.Callbacks("once memory"),statusCode=s.statusCode||{},requestHeaders={},requestHeadersNames={},strAbort="canceled",jqXHR={readyState:0,getResponseHeader:function(key){var match;if(completed){if(!responseHeaders)for(responseHeaders={};match=rheaders.exec(responseHeadersString);)responseHeaders[match[1].toLowerCase()]=match[2];match=responseHeaders[key.toLowerCase()]}return null==match?null:match},getAllResponseHeaders:function(){return completed?responseHeadersString:null},setRequestHeader:function(name,value){return null==completed&&(name=requestHeadersNames[name.toLowerCase()]=requestHeadersNames[name.toLowerCase()]||name,requestHeaders[name]=value),this},overrideMimeType:function(type){return null==completed&&(s.mimeType=type),this},statusCode:function(map){var code;if(map)if(completed)jqXHR.always(map[jqXHR.status]);else for(code in map)statusCode[code]=[statusCode[code],map[code]];return this},abort:function(statusText){var finalText=statusText||strAbort;return transport&&transport.abort(finalText),done(0,finalText),this}};if(deferred.promise(jqXHR),s.url=((url||s.url||location.href)+"").replace(rprotocol,location.protocol+"//"),s.type=options.method||options.type||s.method||s.type,s.dataTypes=(s.dataType||"*").toLowerCase().match(rnothtmlwhite)||[""],null==s.crossDomain){urlAnchor=document.createElement("a");try{urlAnchor.href=s.url,urlAnchor.href=urlAnchor.href,s.crossDomain=originAnchor.protocol+"//"+originAnchor.host!=urlAnchor.protocol+"//"+urlAnchor.host}catch(e){s.crossDomain=!0}}if(s.data&&s.processData&&"string"!=typeof s.data&&(s.data=jQuery.param(s.data,s.traditional)),inspectPrefiltersOrTransports(prefilters,s,options,jqXHR),completed)return jqXHR;for(i in(fireGlobals=jQuery.event&&s.global)&&0==jQuery.active++&&jQuery.event.trigger("ajaxStart"),s.type=s.type.toUpperCase(),s.hasContent=!rnoContent.test(s.type),cacheURL=s.url.replace(rhash,""),s.hasContent?s.data&&s.processData&&0===(s.contentType||"").indexOf("application/x-www-form-urlencoded")&&(s.data=s.data.replace(r20,"+")):(uncached=s.url.slice(cacheURL.length),s.data&&(s.processData||"string"==typeof s.data)&&(cacheURL+=(rquery.test(cacheURL)?"&":"?")+s.data,delete s.data),!1===s.cache&&(cacheURL=cacheURL.replace(rantiCache,"$1"),uncached=(rquery.test(cacheURL)?"&":"?")+"_="+nonce+++uncached),s.url=cacheURL+uncached),s.ifModified&&(jQuery.lastModified[cacheURL]&&jqXHR.setRequestHeader("If-Modified-Since",jQuery.lastModified[cacheURL]),jQuery.etag[cacheURL]&&jqXHR.setRequestHeader("If-None-Match",jQuery.etag[cacheURL])),(s.data&&s.hasContent&&!1!==s.contentType||options.contentType)&&jqXHR.setRequestHeader("Content-Type",s.contentType),jqXHR.setRequestHeader("Accept",s.dataTypes[0]&&s.accepts[s.dataTypes[0]]?s.accepts[s.dataTypes[0]]+("*"!==s.dataTypes[0]?", "+allTypes+"; q=0.01":""):s.accepts["*"]),s.headers)jqXHR.setRequestHeader(i,s.headers[i]);if(s.beforeSend&&(!1===s.beforeSend.call(callbackContext,jqXHR,s)||completed))return jqXHR.abort();if(strAbort="abort",completeDeferred.add(s.complete),jqXHR.done(s.success),jqXHR.fail(s.error),transport=inspectPrefiltersOrTransports(transports,s,options,jqXHR)){if(jqXHR.readyState=1,fireGlobals&&globalEventContext.trigger("ajaxSend",[jqXHR,s]),completed)return jqXHR;s.async&&s.timeout>0&&(timeoutTimer=window.setTimeout(function(){jqXHR.abort("timeout")},s.timeout));try{completed=!1,transport.send(requestHeaders,done)}catch(e){if(completed)throw e;done(-1,e)}}else done(-1,"No Transport");function done(status,nativeStatusText,responses,headers){var isSuccess,success,error,response,modified,statusText=nativeStatusText;completed||(completed=!0,timeoutTimer&&window.clearTimeout(timeoutTimer),transport=void 0,responseHeadersString=headers||"",jqXHR.readyState=status>0?4:0,isSuccess=status>=200&&status<300||304===status,responses&&(response=function(s,jqXHR,responses){for(var ct,type,finalDataType,firstDataType,contents=s.contents,dataTypes=s.dataTypes;"*"===dataTypes[0];)dataTypes.shift(),void 0===ct&&(ct=s.mimeType||jqXHR.getResponseHeader("Content-Type"));if(ct)for(type in contents)if(contents[type]&&contents[type].test(ct)){dataTypes.unshift(type);break}if(dataTypes[0]in responses)finalDataType=dataTypes[0];else{for(type in responses){if(!dataTypes[0]||s.converters[type+" "+dataTypes[0]]){finalDataType=type;break}firstDataType||(firstDataType=type)}finalDataType=finalDataType||firstDataType}if(finalDataType)return finalDataType!==dataTypes[0]&&dataTypes.unshift(finalDataType),responses[finalDataType]}(s,jqXHR,responses)),response=function(s,response,jqXHR,isSuccess){var conv2,current,conv,tmp,prev,converters={},dataTypes=s.dataTypes.slice();if(dataTypes[1])for(conv in s.converters)converters[conv.toLowerCase()]=s.converters[conv];for(current=dataTypes.shift();current;)if(s.responseFields[current]&&(jqXHR[s.responseFields[current]]=response),!prev&&isSuccess&&s.dataFilter&&(response=s.dataFilter(response,s.dataType)),prev=current,current=dataTypes.shift())if("*"===current)current=prev;else if("*"!==prev&&prev!==current){if(!(conv=converters[prev+" "+current]||converters["* "+current]))for(conv2 in converters)if((tmp=conv2.split(" "))[1]===current&&(conv=converters[prev+" "+tmp[0]]||converters["* "+tmp[0]])){!0===conv?conv=converters[conv2]:!0!==converters[conv2]&&(current=tmp[0],dataTypes.unshift(tmp[1]));break}if(!0!==conv)if(conv&&s.throws)response=conv(response);else try{response=conv(response)}catch(e){return{state:"parsererror",error:conv?e:"No conversion from "+prev+" to "+current}}}return{state:"success",data:response}}(s,response,jqXHR,isSuccess),isSuccess?(s.ifModified&&((modified=jqXHR.getResponseHeader("Last-Modified"))&&(jQuery.lastModified[cacheURL]=modified),(modified=jqXHR.getResponseHeader("etag"))&&(jQuery.etag[cacheURL]=modified)),204===status||"HEAD"===s.type?statusText="nocontent":304===status?statusText="notmodified":(statusText=response.state,success=response.data,isSuccess=!(error=response.error))):(error=statusText,!status&&statusText||(statusText="error",status<0&&(status=0))),jqXHR.status=status,jqXHR.statusText=(nativeStatusText||statusText)+"",isSuccess?deferred.resolveWith(callbackContext,[success,statusText,jqXHR]):deferred.rejectWith(callbackContext,[jqXHR,statusText,error]),jqXHR.statusCode(statusCode),statusCode=void 0,fireGlobals&&globalEventContext.trigger(isSuccess?"ajaxSuccess":"ajaxError",[jqXHR,s,isSuccess?success:error]),completeDeferred.fireWith(callbackContext,[jqXHR,statusText]),fireGlobals&&(globalEventContext.trigger("ajaxComplete",[jqXHR,s]),--jQuery.active||jQuery.event.trigger("ajaxStop")))}return jqXHR},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json")},getScript:function(url,callback){return jQuery.get(url,void 0,callback,"script")}}),jQuery.each(["get","post"],function(i,method){jQuery[method]=function(url,data,callback,type){return isFunction(data)&&(type=type||callback,callback=data,data=void 0),jQuery.ajax(jQuery.extend({url:url,type:method,dataType:type,data:data,success:callback},jQuery.isPlainObject(url)&&url))}}),jQuery._evalUrl=function(url){return jQuery.ajax({url:url,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},jQuery.fn.extend({wrapAll:function(html){var wrap;return this[0]&&(isFunction(html)&&(html=html.call(this[0])),wrap=jQuery(html,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&wrap.insertBefore(this[0]),wrap.map(function(){for(var elem=this;elem.firstElementChild;)elem=elem.firstElementChild;return elem}).append(this)),this},wrapInner:function(html){return isFunction(html)?this.each(function(i){jQuery(this).wrapInner(html.call(this,i))}):this.each(function(){var self=jQuery(this),contents=self.contents();contents.length?contents.wrapAll(html):self.append(html)})},wrap:function(html){var htmlIsFunction=isFunction(html);return this.each(function(i){jQuery(this).wrapAll(htmlIsFunction?html.call(this,i):html)})},unwrap:function(selector){return this.parent(selector).not("body").each(function(){jQuery(this).replaceWith(this.childNodes)}),this}}),jQuery.expr.pseudos.hidden=function(elem){return!jQuery.expr.pseudos.visible(elem)},jQuery.expr.pseudos.visible=function(elem){return!!(elem.offsetWidth||elem.offsetHeight||elem.getClientRects().length)},jQuery.ajaxSettings.xhr=function(){try{return new window.XMLHttpRequest}catch(e){}};var xhrSuccessStatus={0:200,1223:204},xhrSupported=jQuery.ajaxSettings.xhr();support.cors=!!xhrSupported&&"withCredentials"in xhrSupported,support.ajax=xhrSupported=!!xhrSupported,jQuery.ajaxTransport(function(options){var callback,errorCallback;if(support.cors||xhrSupported&&!options.crossDomain)return{send:function(headers,complete){var i,xhr=options.xhr();if(xhr.open(options.type,options.url,options.async,options.username,options.password),options.xhrFields)for(i in options.xhrFields)xhr[i]=options.xhrFields[i];for(i in options.mimeType&&xhr.overrideMimeType&&xhr.overrideMimeType(options.mimeType),options.crossDomain||headers["X-Requested-With"]||(headers["X-Requested-With"]="XMLHttpRequest"),headers)xhr.setRequestHeader(i,headers[i]);callback=function(type){return function(){callback&&(callback=errorCallback=xhr.onload=xhr.onerror=xhr.onabort=xhr.ontimeout=xhr.onreadystatechange=null,"abort"===type?xhr.abort():"error"===type?"number"!=typeof xhr.status?complete(0,"error"):complete(xhr.status,xhr.statusText):complete(xhrSuccessStatus[xhr.status]||xhr.status,xhr.statusText,"text"!==(xhr.responseType||"text")||"string"!=typeof xhr.responseText?{binary:xhr.response}:{text:xhr.responseText},xhr.getAllResponseHeaders()))}},xhr.onload=callback(),errorCallback=xhr.onerror=xhr.ontimeout=callback("error"),void 0!==xhr.onabort?xhr.onabort=errorCallback:xhr.onreadystatechange=function(){4===xhr.readyState&&window.setTimeout(function(){callback&&errorCallback()})},callback=callback("abort");try{xhr.send(options.hasContent&&options.data||null)}catch(e){if(callback)throw e}},abort:function(){callback&&callback()}}}),jQuery.ajaxPrefilter(function(s){s.crossDomain&&(s.contents.script=!1)}),jQuery.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(text){return jQuery.globalEval(text),text}}}),jQuery.ajaxPrefilter("script",function(s){void 0===s.cache&&(s.cache=!1),s.crossDomain&&(s.type="GET")}),jQuery.ajaxTransport("script",function(s){var script,callback;if(s.crossDomain)return{send:function(_,complete){script=jQuery("<script>").prop({charset:s.scriptCharset,src:s.url}).on("load error",callback=function(evt){script.remove(),callback=null,evt&&complete("error"===evt.type?404:200,evt.type)}),document.head.appendChild(script[0])},abort:function(){callback&&callback()}}});var body,oldCallbacks=[],rjsonp=/(=)\?(?=&|$)|\?\?/;jQuery.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var callback=oldCallbacks.pop()||jQuery.expando+"_"+nonce++;return this[callback]=!0,callback}}),jQuery.ajaxPrefilter("json jsonp",function(s,originalSettings,jqXHR){var callbackName,overwritten,responseContainer,jsonProp=!1!==s.jsonp&&(rjsonp.test(s.url)?"url":"string"==typeof s.data&&0===(s.contentType||"").indexOf("application/x-www-form-urlencoded")&&rjsonp.test(s.data)&&"data");if(jsonProp||"jsonp"===s.dataTypes[0])return callbackName=s.jsonpCallback=isFunction(s.jsonpCallback)?s.jsonpCallback():s.jsonpCallback,jsonProp?s[jsonProp]=s[jsonProp].replace(rjsonp,"$1"+callbackName):!1!==s.jsonp&&(s.url+=(rquery.test(s.url)?"&":"?")+s.jsonp+"="+callbackName),s.converters["script json"]=function(){return responseContainer||jQuery.error(callbackName+" was not called"),responseContainer[0]},s.dataTypes[0]="json",overwritten=window[callbackName],window[callbackName]=function(){responseContainer=arguments},jqXHR.always(function(){void 0===overwritten?jQuery(window).removeProp(callbackName):window[callbackName]=overwritten,s[callbackName]&&(s.jsonpCallback=originalSettings.jsonpCallback,oldCallbacks.push(callbackName)),responseContainer&&isFunction(overwritten)&&overwritten(responseContainer[0]),responseContainer=overwritten=void 0}),"script"}),support.createHTMLDocument=((body=document.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===body.childNodes.length),jQuery.parseHTML=function(data,context,keepScripts){return"string"!=typeof data?[]:("boolean"==typeof context&&(keepScripts=context,context=!1),context||(support.createHTMLDocument?((base=(context=document.implementation.createHTMLDocument("")).createElement("base")).href=document.location.href,context.head.appendChild(base)):context=document),parsed=rsingleTag.exec(data),scripts=!keepScripts&&[],parsed?[context.createElement(parsed[1])]:(parsed=buildFragment([data],context,scripts),scripts&&scripts.length&&jQuery(scripts).remove(),jQuery.merge([],parsed.childNodes)));var base,parsed,scripts},jQuery.fn.load=function(url,params,callback){var selector,type,response,self=this,off=url.indexOf(" ");return off>-1&&(selector=stripAndCollapse(url.slice(off)),url=url.slice(0,off)),isFunction(params)?(callback=params,params=void 0):params&&"object"==typeof params&&(type="POST"),self.length>0&&jQuery.ajax({url:url,type:type||"GET",dataType:"html",data:params}).done(function(responseText){response=arguments,self.html(selector?jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector):responseText)}).always(callback&&function(jqXHR,status){self.each(function(){callback.apply(this,response||[jqXHR.responseText,status,jqXHR])})}),this},jQuery.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(i,type){jQuery.fn[type]=function(fn){return this.on(type,fn)}}),jQuery.expr.pseudos.animated=function(elem){return jQuery.grep(jQuery.timers,function(fn){return elem===fn.elem}).length},jQuery.offset={setOffset:function(elem,options,i){var curPosition,curLeft,curCSSTop,curTop,curOffset,curCSSLeft,position=jQuery.css(elem,"position"),curElem=jQuery(elem),props={};"static"===position&&(elem.style.position="relative"),curOffset=curElem.offset(),curCSSTop=jQuery.css(elem,"top"),curCSSLeft=jQuery.css(elem,"left"),("absolute"===position||"fixed"===position)&&(curCSSTop+curCSSLeft).indexOf("auto")>-1?(curTop=(curPosition=curElem.position()).top,curLeft=curPosition.left):(curTop=parseFloat(curCSSTop)||0,curLeft=parseFloat(curCSSLeft)||0),isFunction(options)&&(options=options.call(elem,i,jQuery.extend({},curOffset))),null!=options.top&&(props.top=options.top-curOffset.top+curTop),null!=options.left&&(props.left=options.left-curOffset.left+curLeft),"using"in options?options.using.call(elem,props):curElem.css(props)}},jQuery.fn.extend({offset:function(options){if(arguments.length)return void 0===options?this:this.each(function(i){jQuery.offset.setOffset(this,options,i)});var rect,win,elem=this[0];return elem?elem.getClientRects().length?(rect=elem.getBoundingClientRect(),win=elem.ownerDocument.defaultView,{top:rect.top+win.pageYOffset,left:rect.left+win.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var offsetParent,offset,doc,elem=this[0],parentOffset={top:0,left:0};if("fixed"===jQuery.css(elem,"position"))offset=elem.getBoundingClientRect();else{for(offset=this.offset(),doc=elem.ownerDocument,offsetParent=elem.offsetParent||doc.documentElement;offsetParent&&(offsetParent===doc.body||offsetParent===doc.documentElement)&&"static"===jQuery.css(offsetParent,"position");)offsetParent=offsetParent.parentNode;offsetParent&&offsetParent!==elem&&1===offsetParent.nodeType&&((parentOffset=jQuery(offsetParent).offset()).top+=jQuery.css(offsetParent,"borderTopWidth",!0),parentOffset.left+=jQuery.css(offsetParent,"borderLeftWidth",!0))}return{top:offset.top-parentOffset.top-jQuery.css(elem,"marginTop",!0),left:offset.left-parentOffset.left-jQuery.css(elem,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var offsetParent=this.offsetParent;offsetParent&&"static"===jQuery.css(offsetParent,"position");)offsetParent=offsetParent.offsetParent;return offsetParent||documentElement})}}),jQuery.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(method,prop){var top="pageYOffset"===prop;jQuery.fn[method]=function(val){return access(this,function(elem,method,val){var win;if(isWindow(elem)?win=elem:9===elem.nodeType&&(win=elem.defaultView),void 0===val)return win?win[prop]:elem[method];win?win.scrollTo(top?win.pageXOffset:val,top?val:win.pageYOffset):elem[method]=val},method,val,arguments.length)}}),jQuery.each(["top","left"],function(i,prop){jQuery.cssHooks[prop]=addGetHookIf(support.pixelPosition,function(elem,computed){if(computed)return computed=curCSS(elem,prop),rnumnonpx.test(computed)?jQuery(elem).position()[prop]+"px":computed})}),jQuery.each({Height:"height",Width:"width"},function(name,type){jQuery.each({padding:"inner"+name,content:type,"":"outer"+name},function(defaultExtra,funcName){jQuery.fn[funcName]=function(margin,value){var chainable=arguments.length&&(defaultExtra||"boolean"!=typeof margin),extra=defaultExtra||(!0===margin||!0===value?"margin":"border");return access(this,function(elem,type,value){var doc;return isWindow(elem)?0===funcName.indexOf("outer")?elem["inner"+name]:elem.document.documentElement["client"+name]:9===elem.nodeType?(doc=elem.documentElement,Math.max(elem.body["scroll"+name],doc["scroll"+name],elem.body["offset"+name],doc["offset"+name],doc["client"+name])):void 0===value?jQuery.css(elem,type,extra):jQuery.style(elem,type,value,extra)},type,chainable?margin:void 0,chainable)}})}),jQuery.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(i,name){jQuery.fn[name]=function(data,fn){return arguments.length>0?this.on(name,null,data,fn):this.trigger(name)}}),jQuery.fn.extend({hover:function(fnOver,fnOut){return this.mouseenter(fnOver).mouseleave(fnOut||fnOver)}}),jQuery.fn.extend({bind:function(types,data,fn){return this.on(types,null,data,fn)},unbind:function(types,fn){return this.off(types,null,fn)},delegate:function(selector,types,data,fn){return this.on(types,selector,data,fn)},undelegate:function(selector,types,fn){return 1===arguments.length?this.off(selector,"**"):this.off(types,selector||"**",fn)}}),jQuery.proxy=function(fn,context){var tmp,args,proxy;if("string"==typeof context&&(tmp=fn[context],context=fn,fn=tmp),isFunction(fn))return args=slice.call(arguments,2),(proxy=function(){return fn.apply(context||this,args.concat(slice.call(arguments)))}).guid=fn.guid=fn.guid||jQuery.guid++,proxy},jQuery.holdReady=function(hold){hold?jQuery.readyWait++:jQuery.ready(!0)},jQuery.isArray=Array.isArray,jQuery.parseJSON=JSON.parse,jQuery.nodeName=nodeName,jQuery.isFunction=isFunction,jQuery.isWindow=isWindow,jQuery.camelCase=camelCase,jQuery.type=toType,jQuery.now=Date.now,jQuery.isNumeric=function(obj){var type=jQuery.type(obj);return("number"===type||"string"===type)&&!isNaN(obj-parseFloat(obj))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return jQuery});var _jQuery=window.jQuery,_$=window.$;return jQuery.noConflict=function(deep){return window.$===jQuery&&(window.$=_$),deep&&window.jQuery===jQuery&&(window.jQuery=_jQuery),jQuery},noGlobal||(window.jQuery=window.$=jQuery),jQuery}),function(root,factory){"function"==typeof define&&define.amd?define(["moment"],factory):"object"==typeof module&&module.exports?module.exports=factory(require("moment")):factory(root.moment)}(this,function(moment){var cachedGuess,zones={},links={},names={},guesses={},momentVersion=moment.version.split("."),major=+momentVersion[0],minor=+momentVersion[1];function charCodeToInt(charCode){return charCode>96?charCode-87:charCode>64?charCode-29:charCode-48}function unpackBase60(string){var i=0,parts=string.split("."),whole=parts[0],fractional=parts[1]||"",multiplier=1,out=0,sign=1;for(45===string.charCodeAt(0)&&(i=1,sign=-1);i<whole.length;i++)out=60*out+charCodeToInt(whole.charCodeAt(i));for(i=0;i<fractional.length;i++)multiplier/=60,out+=charCodeToInt(fractional.charCodeAt(i))*multiplier;return out*sign}function arrayToInt(array){for(var i=0;i<array.length;i++)array[i]=unpackBase60(array[i])}function mapIndices(source,indices){var i,out=[];for(i=0;i<indices.length;i++)out[i]=source[indices[i]];return out}function unpack(string){var data=string.split("|"),offsets=data[2].split(" "),indices=data[3].split(""),untils=data[4].split(" ");return arrayToInt(offsets),arrayToInt(indices),arrayToInt(untils),function(array,length){for(var i=0;i<length;i++)array[i]=Math.round((array[i-1]||0)+6e4*array[i]);array[length-1]=1/0}(untils,indices.length),{name:data[0],abbrs:mapIndices(data[1].split(" "),indices),offsets:mapIndices(offsets,indices),untils:untils,population:0|data[5]}}function Zone(packedString){packedString&&this._set(unpack(packedString))}function OffsetAt(at){var timeString=at.toTimeString(),abbr=timeString.match(/\([a-z ]+\)/i);"GMT"===(abbr=abbr&&abbr[0]?(abbr=abbr[0].match(/[A-Z]/g))?abbr.join(""):void 0:(abbr=timeString.match(/[A-Z]{3,5}/g))?abbr[0]:void 0)&&(abbr=void 0),this.at=+at,this.abbr=abbr,this.offset=at.getTimezoneOffset()}function ZoneScore(zone){this.zone=zone,this.offsetScore=0,this.abbrScore=0}function findChange(low,high){for(var mid,diff;diff=6e4*((high.at-low.at)/12e4|0);)(mid=new OffsetAt(new Date(low.at+diff))).offset===low.offset?low=mid:high=mid;return low}function sortZoneScores(a,b){return a.offsetScore!==b.offsetScore?a.offsetScore-b.offsetScore:a.abbrScore!==b.abbrScore?a.abbrScore-b.abbrScore:b.zone.population-a.zone.population}function addToGuesses(name,offsets){var i,offset;for(arrayToInt(offsets),i=0;i<offsets.length;i++)offset=offsets[i],guesses[offset]=guesses[offset]||{},guesses[offset][name]=!0}function guessesForUserOffsets(offsets){var i,j,guessesOffset,offsetsLength=offsets.length,filteredGuesses={},out=[];for(i=0;i<offsetsLength;i++)for(j in guessesOffset=guesses[offsets[i].offset]||{})guessesOffset.hasOwnProperty(j)&&(filteredGuesses[j]=!0);for(i in filteredGuesses)filteredGuesses.hasOwnProperty(i)&&out.push(names[i]);return out}function rebuildGuess(){try{var intlName=Intl.DateTimeFormat().resolvedOptions().timeZone;if(intlName&&intlName.length>3){var name=names[normalizeName(intlName)];if(name)return name;logError("Moment Timezone found "+intlName+" from the Intl api, but did not have that data loaded.")}}catch(e){}var zoneScore,i,j,offsets=function(){var change,next,i,startYear=(new Date).getFullYear()-2,last=new OffsetAt(new Date(startYear,0,1)),offsets=[last];for(i=1;i<48;i++)(next=new OffsetAt(new Date(startYear,i,1))).offset!==last.offset&&(change=findChange(last,next),offsets.push(change),offsets.push(new OffsetAt(new Date(change.at+6e4)))),last=next;for(i=0;i<4;i++)offsets.push(new OffsetAt(new Date(startYear+i,0,1))),offsets.push(new OffsetAt(new Date(startYear+i,6,1)));return offsets}(),offsetsLength=offsets.length,guesses=guessesForUserOffsets(offsets),zoneScores=[];for(i=0;i<guesses.length;i++){for(zoneScore=new ZoneScore(getZone(guesses[i]),offsetsLength),j=0;j<offsetsLength;j++)zoneScore.scoreOffsetAt(offsets[j]);zoneScores.push(zoneScore)}return zoneScores.sort(sortZoneScores),zoneScores.length>0?zoneScores[0].zone.name:void 0}function normalizeName(name){return(name||"").toLowerCase().replace(/\//g,"_")}function addZone(packed){var i,name,split,normalized;for("string"==typeof packed&&(packed=[packed]),i=0;i<packed.length;i++)normalized=normalizeName(name=(split=packed[i].split("|"))[0]),zones[normalized]=packed[i],names[normalized]=name,addToGuesses(normalized,split[2].split(" "))}function getZone(name,caller){name=normalizeName(name);var link,zone=zones[name];return zone instanceof Zone?zone:"string"==typeof zone?(zone=new Zone(zone),zones[name]=zone,zone):links[name]&&caller!==getZone&&(link=getZone(links[name],getZone))?((zone=zones[name]=new Zone)._set(link),zone.name=names[name],zone):null}function addLink(aliases){var i,alias,normal0,normal1;for("string"==typeof aliases&&(aliases=[aliases]),i=0;i<aliases.length;i++)normal0=normalizeName((alias=aliases[i].split("|"))[0]),normal1=normalizeName(alias[1]),links[normal0]=normal1,names[normal0]=alias[0],links[normal1]=normal0,names[normal1]=alias[1]}function loadData(data){addZone(data.zones),addLink(data.links),tz.dataVersion=data.version}function needsOffset(m){var isUnixTimestamp="X"===m._f||"x"===m._f;return!(!m._a||void 0!==m._tzm||isUnixTimestamp)}function logError(message){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(message)}function tz(input){var args=Array.prototype.slice.call(arguments,0,-1),name=arguments[arguments.length-1],zone=getZone(name),out=moment.utc.apply(null,args);return zone&&!moment.isMoment(input)&&needsOffset(out)&&out.add(zone.parse(out),"minutes"),out.tz(name),out}(major<2||2===major&&minor<6)&&logError("Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js "+moment.version+". See momentjs.com"),Zone.prototype={_set:function(unpacked){this.name=unpacked.name,this.abbrs=unpacked.abbrs,this.untils=unpacked.untils,this.offsets=unpacked.offsets,this.population=unpacked.population},_index:function(timestamp){var i,target=+timestamp,untils=this.untils;for(i=0;i<untils.length;i++)if(target<untils[i])return i},parse:function(timestamp){var offset,offsetNext,offsetPrev,i,target=+timestamp,offsets=this.offsets,untils=this.untils,max=untils.length-1;for(i=0;i<max;i++)if(offset=offsets[i],offsetNext=offsets[i+1],offsetPrev=offsets[i?i-1:i],offset<offsetNext&&tz.moveAmbiguousForward?offset=offsetNext:offset>offsetPrev&&tz.moveInvalidForward&&(offset=offsetPrev),target<untils[i]-6e4*offset)return offsets[i];return offsets[max]},abbr:function(mom){return this.abbrs[this._index(mom)]},offset:function(mom){return logError("zone.offset has been deprecated in favor of zone.utcOffset"),this.offsets[this._index(mom)]},utcOffset:function(mom){return this.offsets[this._index(mom)]}},ZoneScore.prototype.scoreOffsetAt=function(offsetAt){this.offsetScore+=Math.abs(this.zone.utcOffset(offsetAt.at)-offsetAt.offset),this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g,"")!==offsetAt.abbr&&this.abbrScore++},tz.version="0.5.17",tz.dataVersion="",tz._zones=zones,tz._links=links,tz._names=names,tz.add=addZone,tz.link=addLink,tz.load=loadData,tz.zone=getZone,tz.zoneExists=function zoneExists(name){return zoneExists.didShowError||(zoneExists.didShowError=!0,logError("moment.tz.zoneExists('"+name+"') has been deprecated in favor of !moment.tz.zone('"+name+"')")),!!getZone(name)},tz.guess=function(ignoreCache){return cachedGuess&&!ignoreCache||(cachedGuess=rebuildGuess()),cachedGuess},tz.names=function(){var i,out=[];for(i in names)names.hasOwnProperty(i)&&(zones[i]||zones[links[i]])&&names[i]&&out.push(names[i]);return out.sort()},tz.Zone=Zone,tz.unpack=unpack,tz.unpackBase60=unpackBase60,tz.needsOffset=needsOffset,tz.moveInvalidForward=!0,tz.moveAmbiguousForward=!1;var old,fn=moment.fn;function abbrWrap(old){return function(){return this._z?this._z.abbr(this):old.call(this)}}moment.tz=tz,moment.defaultZone=null,moment.updateOffset=function(mom,keepTime){var offset,zone=moment.defaultZone;void 0===mom._z&&(zone&&needsOffset(mom)&&!mom._isUTC&&(mom._d=moment.utc(mom._a)._d,mom.utc().add(zone.parse(mom),"minutes")),mom._z=zone),mom._z&&(offset=mom._z.utcOffset(mom),Math.abs(offset)<16&&(offset/=60),void 0!==mom.utcOffset?mom.utcOffset(-offset,keepTime):mom.zone(offset,keepTime))},fn.tz=function(name,keepTime){return name?(this._z=getZone(name),this._z?moment.updateOffset(this,keepTime):logError("Moment Timezone has no data for "+name+". See http://momentjs.com/timezone/docs/#/data-loading/."),this):this._z?this._z.name:void 0},fn.zoneName=abbrWrap(fn.zoneName),fn.zoneAbbr=abbrWrap(fn.zoneAbbr),fn.utc=(old=fn.utc,function(){return this._z=null,old.apply(this,arguments)}),moment.tz.setDefault=function(name){return(major<2||2===major&&minor<9)&&logError("Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js "+moment.version+"."),moment.defaultZone=name?getZone(name):null,moment};var momentProperties=moment.momentProperties;return"[object Array]"===Object.prototype.toString.call(momentProperties)?(momentProperties.push("_z"),momentProperties.push("_a")):momentProperties&&(momentProperties._z=null),loadData({version:"2018e",zones:["Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5","Africa/Accra|LMT GMT +0020|.Q 0 -k|012121212121212121212121212121212121212121212121|-26BbX.8 6tzX.8 MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE|41e5","Africa/Nairobi|LMT EAT +0230 +0245|-2r.g -30 -2u -2J|01231|-1F3Cr.g 3Dzr.g okMu MFXJ|47e5","Africa/Algiers|PMT WET WEST CET CEST|-9.l 0 -10 -10 -20|0121212121212121343431312123431213|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5","Africa/Lagos|LMT WAT|-d.A -10|01|-22y0d.A|17e6","Africa/Bissau|LMT -01 GMT|12.k 10 0|012|-2ldX0 2xoo0|39e4","Africa/Maputo|LMT CAT|-2a.k -20|01|-2GJea.k|26e5","Africa/Cairo|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1bIO0 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0|15e6","Africa/Casablanca|LMT WET WEST CET|u.k 0 -10 -10|0121212121212121213121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0|32e5","Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|010101010101010101010232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-25KN0 11z0 drd0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1y7o0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|85e3","Africa/El_Aaiun|LMT -01 WET WEST|Q.M 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0|20e4","Africa/Johannesburg|SAST SAST SAST|-1u -20 -30|012121|-2GJdu 1Ajdu 1cL0 1cN0 1cL0|84e5","Africa/Juba|LMT CAT CAST EAT|-26.s -20 -30 -30|01212121212121212121212121212121213|-1yW26.s 1zK06.s 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0","Africa/Khartoum|LMT CAT CAST EAT|-2a.8 -20 -30 -30|012121212121212121212121212121212131|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 HjL0|51e5","Africa/Monrovia|MMT MMT GMT|H.8 I.u 0|012|-23Lzg.Q 28G01.m|11e5","Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0|13e5","Africa/Sao_Tome|LMT GMT WAT|A.J 0 -10|012|-2le00 4i6N0","Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5","Africa/Tunis|PMT CET CEST|-9.l -10 -20|0121212121212121212121212121212121|-2nco9.l 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5","Africa/Windhoek|+0130 SAST SAST CAT WAT|-1u -20 -30 -20 -10|01213434343434343434343434343434343434343434343434343|-2GJdu 1Ajdu 1cL0 1SqL0 9Io0 16P0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4","America/Adak|NST NWT NPT BST BDT AHST HST HDT|b0 a0 a0 b0 a0 a0 a0 90|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326","America/Anchorage|AST AWT APT AHST AHDT YST AKST AKDT|a0 90 90 a0 90 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T00 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4","America/Port_of_Spain|LMT AST|46.4 40|01|-2kNvR.U|43e3","America/Araguaina|LMT -03 -02|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4","America/Argentina/Buenos_Aires|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 A4p0 uL0 1qN0 WL0","America/Argentina/Catamarca|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 7B0 8zb0 uL0","America/Argentina/Cordoba|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0 1qN0 WL0","America/Argentina/Jujuy|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 A4p0 uL0","America/Argentina/La_Rioja|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0","America/Argentina/Mendoza|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232312121321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 ri10 Op0 7TX0 uL0","America/Argentina/Rio_Gallegos|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0","America/Argentina/Salta|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0","America/Argentina/San_Juan|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rld0 m10 8lb0 uL0","America/Argentina/San_Luis|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121212321212|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 vDb0 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0","America/Argentina/Tucuman|CMT -04 -03 -02|4g.M 40 30 20|0121212121212121212121212121212121212121212323232313232123232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 4N0 8BX0 uL0 1qN0 WL0","America/Argentina/Ushuaia|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rkN0 8p0 8zb0 uL0","America/Curacao|LMT -0430 AST|4z.L 4u 40|012|-2kV7o.d 28KLS.d|15e4","America/Asuncion|AMT -04 -03|3O.E 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-1x589.k 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0|28e5","America/Atikokan|CST CDT CWT CPT EST|60 50 50 50 50|0101234|-25TQ0 1in0 Rnb0 3je0 8x30 iw0|28e2","America/Bahia_Banderas|LMT MST CST PST MDT CDT|71 70 60 80 60 50|0121212131414141414141414141414141414152525252525252525252525252525252525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|84e3","America/Bahia|LMT -03 -02|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5","America/Barbados|LMT BMT AST ADT|3W.t 3W.t 40 30|01232323232|-1Q0I1.v jsM0 1ODC1.v IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4","America/Belem|LMT -03 -02|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|20e5","America/Belize|LMT CST -0530 CDT|5Q.M 60 5u 50|01212121212121212121212121212121212121212121212121213131|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1f0Mu qn0 lxB0 mn0|57e3","America/Blanc-Sablon|AST ADT AWT APT|40 30 30 30|010230|-25TS0 1in0 UGp0 8x50 iu0|11e2","America/Boa_Vista|LMT -04 -03|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2","America/Bogota|BMT -05 -04|4U.g 50 40|0121|-2eb73.I 38yo3.I 2en0|90e5","America/Boise|PST PDT MST MWT MPT MDT|80 70 70 60 60 60|0101023425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-261q0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4","America/Cambridge_Bay|-00 MST MWT MPT MDDT MDT CST CDT EST|0 70 60 60 50 60 60 50 50|0123141515151515151515151515151515151515151515678651515151515151515151515151515151515151515151515151515151515151515151515151|-21Jc0 RO90 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2","America/Campo_Grande|LMT -04 -03|3C.s 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0 1HB0 FX0 1HB0 IL0 1HB0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0 IL0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1Kp0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0|77e4","America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG0 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4","America/Caracas|CMT -0430 -04|4r.E 4u 40|01212|-2kV7w.k 28KM2.k 1IwOu kqo0|29e5","America/Cayenne|LMT -04 -03|3t.k 40 30|012|-2mrwu.E 2gWou.E|58e3","America/Panama|CMT EST|5j.A 50|01|-2uduE.o|15e5","America/Chicago|CST CDT EST CWT CPT|60 50 50 50 50|01010101010101010101010101010101010102010101010103401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5","America/Chihuahua|LMT MST CST CDT MDT|74.k 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|81e4","America/Costa_Rica|SJMT CST CDT|5A.d 60 50|0121212121|-1Xd6n.L 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5","America/Creston|MST PST|70 80|010|-29DR0 43B0|53e2","America/Cuiaba|LMT -04 -03|3I.k 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0 1HB0 FX0 1HB0 IL0 1HB0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0 IL0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1Kp0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0|54e4","America/Danmarkshavn|LMT -03 -02 GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8","America/Dawson_Creek|PST PDT PWT PPT MST|80 70 70 70 70|0102301010101010101010101010101010101010101010101010101014|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0|12e3","America/Dawson|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|13e2","America/Denver|MST MDT MWT MPT|70 60 60 60|01010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5","America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|012342525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 XQp0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5","America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|01212121212121341212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 LFB0 1cL0 3Cp0 1cL0 66N0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5","America/Eirunepe|LMT -05 -04|4D.s 50 40|0121212121212121212121212121212121|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3","America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0|11e5","America/Tijuana|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOO0 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5","America/Fort_Nelson|PST PDT PWT PPT MST|80 70 70 70 70|01023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2","America/Fort_Wayne|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010101023010101010101010101040454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Fortaleza|LMT -03 -02|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5","America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3","America/Godthab|LMT -03 -02|3q.U 30 20|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e3","America/Goose_Bay|NST NDT NST NDT NWT NPT AST ADT ADDT|3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|010232323232323245232323232323232323232323232323232323232326767676767676767676767676767676767676767676768676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-25TSt.8 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2","America/Grand_Turk|KMT EST EDT AST|57.a 50 40 40|01212121212121212121212121212121212121212121212121212121212121212121212121232121212121212121212121212121212121212121|-2l1uQ.O 2HHBQ.O 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 5Ip0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2","America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5","America/Guayaquil|QMT -05 -04|5e 50 40|0121|-1yVSK 2uILK rz0|27e5","America/Guyana|LMT -0345 -03 -04|3Q.E 3J 30 40|0123|-2dvU7.k 2r6LQ.k Bxbf|80e4","America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4","America/Havana|HMT CST CDT|5t.A 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Meuu.o 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5","America/Hermosillo|LMT MST CST PST MDT|7n.Q 70 60 80 60|0121212131414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0|64e4","America/Indiana/Knox|CST CDT CWT CPT EST|60 50 50 50 50|0101023010101010101010101010101010101040101010101010101010101010101010101010101010101010141010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Marengo|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010104545454545414545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Petersburg|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010104010101010101010101010141014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Tell_City|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Vevay|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010102304545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Vincennes|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Winamac|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010101010454541054545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Inuvik|-00 PST PDDT MST MDT|0 80 60 70 60|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-FnA0 tWU0 1fA0 wPe0 2pz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2","America/Iqaluit|-00 EWT EPT EST EDDT EDT CST CDT|0 40 40 50 30 40 60 50|01234353535353535353535353535353535353535353567353535353535353535353535353535353535353535353535353535353535353535353535353|-16K00 7nX0 iv0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2","America/Jamaica|KMT EST EDT|57.a 50 40|0121212121212121212121|-2l1uQ.O 2uM1Q.O 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4","America/Juneau|PST PWT PPT PDT YDT YST AKST AKDT|80 70 70 70 80 90 90 80|01203030303030303030303030403030356767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3","America/Kentucky/Louisville|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101010102301010101010101010101010101454545454545414545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 Bb0 10N0 2bB0 8in0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Kentucky/Monticello|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/La_Paz|CMT BST -04|4w.A 3w.A 40|012|-1x37r.o 13b0|19e5","America/Lima|LMT -05 -04|58.A 50 40|0121212121212121|-2tyGP.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6","America/Los_Angeles|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp1 1VaX 3dA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6","America/Maceio|LMT -03 -02|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4","America/Managua|MMT CST EST CDT|5J.c 60 50 50|0121313121213131|-1quie.M 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5","America/Manaus|LMT -04 -03|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5","America/Martinique|FFMT AST ADT|44.k 40 30|0121|-2mPTT.E 2LPbT.E 19X0|39e4","America/Matamoros|LMT CST CDT|6E 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4","America/Mazatlan|LMT MST CST PST MDT|75.E 70 60 80 60|0121212131414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|44e4","America/Menominee|CST CDT CWT CPT EST|60 50 50 50 50|01010230101041010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2","America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|11e5","America/Metlakatla|PST PWT PPT PDT AKST AKDT|80 70 70 70 90 80|0120303030303030303030303030303030454545454545454545454545454545454545454545454|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2","America/Mexico_City|LMT MST CST CDT CWT|6A.A 70 60 50 50|012121232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|20e6","America/Miquelon|LMT AST -03 -02|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mKkf.k 2LTAf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2","America/Moncton|EST AST ADT AWT APT|50 40 30 30 30|012121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsH0 CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3","America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|41e5","America/Montevideo|LMT MMT -04 -03 -0330 -0230 -02 -0130|3I.P 3I.P 40 30 3u 2u 20 1u|012343434343434343434343435353636353636375363636363636363636363636363636363636363636363|-2tRUf.9 sVc0 8jcf.9 1db0 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1fAu 1cLu 1o0u 11zu NAu 3jXu zXu Dq0u 19Xu pcu jz0 cm10 19X0 6tB0 1fbu 3o0u jX0 4vB0 xz0 3Cp0 mmu 1a10 IMu Db0 4c10 uL0 1Nd0 An0 1SN0 uL0 mp0 28L0 iPB0 un0 1SN0 xz0 1zd0 Lz0 1zd0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5","America/Toronto|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101012301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1nX0 11z0 1o10 11z0 1o10 1qL0 11D0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5","America/Nassau|LMT EST EDT|59.u 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2kNuO.u 26XdO.u 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|24e4","America/New_York|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6","America/Nipigon|EST EDT EWT EPT|50 40 40 40|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 Rnb0 3je0 8x40 iv0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|16e2","America/Nome|NST NWT NPT BST BDT YST AKST AKDT|b0 a0 a0 b0 a0 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2","America/Noronha|LMT -02 -01|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2","America/North_Dakota/Beulah|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/North_Dakota/Center|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/North_Dakota/New_Salem|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Ojinaga|LMT MST CST CDT MDT|6V.E 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3","America/Pangnirtung|-00 AST AWT APT ADDT ADT EDT EST CST CDT|0 40 30 30 20 30 40 50 60 50|012314151515151515151515151515151515167676767689767676767676767676767676767676767676767676767676767676767676767676767676767|-1XiM0 PnG0 8x50 iu0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2","America/Paramaribo|LMT PMT PMT -0330 -03|3E.E 3E.Q 3E.A 3u 30|01234|-2nDUj.k Wqo0.c qanX.I 1yVXN.o|24e4","America/Phoenix|MST MDT MWT|70 60 60|01010202010|-261r0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5","America/Port-au-Prince|PPMT EST EDT|4N 50 40|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-28RHb 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","America/Rio_Branco|LMT -05 -04|4v.c 50 40|01212121212121212121212121212121|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4","America/Porto_Velho|LMT -04 -03|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4","America/Puerto_Rico|AST AWT APT|40 30 30|0120|-17lU0 7XT0 iu0|24e5","America/Punta_Arenas|SMT -05 -04 -03|4G.K 50 40 30|0102021212121212121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 blz0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0","America/Rainy_River|CST CDT CWT CPT|60 50 50 50|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TQ0 1in0 Rnb0 3je0 8x30 iw0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|842","America/Rankin_Inlet|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313131313131313131313131313131313131313131313131313131313131313131|-vDc0 keu0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2","America/Recife|LMT -03 -02|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5","America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0|19e4","America/Resolute|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313431313131313131313131313131313131313131313131313131313131313131|-SnA0 GWS0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229","America/Santarem|LMT -04 -03|3C.M 40 30|0121212121212121212121212121212|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4","America/Santiago|SMT -05 -04 -03|4G.K 50 40 30|010202121212121212321232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 jb0 1oN0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|62e5","America/Santo_Domingo|SDMT EST EDT -0430 AST|4E 50 40 4u 40|01213131313131414|-1ttjk 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5","America/Sao_Paulo|LMT -03 -02|36.s 30 20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0 1HB0 FX0 1HB0 IL0 1HB0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0 IL0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1Kp0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0|20e6","America/Scoresbysund|LMT -02 -01 +00|1r.Q 20 10 0|0121323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|452","America/Sitka|PST PWT PPT PDT YST AKST AKDT|80 70 70 70 90 90 80|01203030303030303030303030303030345656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2","America/St_Johns|NST NDT NST NDT NWT NPT NDDT|3u.Q 2u.Q 3u 2u 2u 2u 1u|01010101010101010101010101010101010102323232323232324523232323232323232323232323232323232323232323232323232323232323232323232323232323232326232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28oit.8 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4","America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0|16e3","America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0|11e5","America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656","America/Thunder_Bay|CST EST EWT EPT EDT|60 50 40 40 40|0123141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-2q5S0 1iaN0 8x40 iv0 XNB0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4","America/Vancouver|PST PDT PWT PPT|80 70 70 70|0102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TO0 1in0 UGp0 8x10 iy0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","America/Whitehorse|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 3NA0 vrd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3","America/Winnipeg|CST CDT CWT CPT|60 50 50 50|010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aIi0 WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4","America/Yakutat|YST YWT YPT YDT AKST AKDT|90 80 80 80 90 80|01203030303030303030303030303030304545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-17T10 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642","America/Yellowknife|-00 MST MWT MPT MDDT MDT|0 70 60 60 50 60|012314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151|-1pdA0 hix0 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3","Antarctica/Casey|-00 +08 +11|0 -80 -b0|01212121|-2q00 1DjS0 T90 40P0 KL0 blz0 3m10|10","Antarctica/Davis|-00 +07 +05|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0|70","Antarctica/DumontDUrville|-00 +10|0 -a0|0101|-U0o0 cfq0 bFm0|80","Antarctica/Macquarie|AEST AEDT -00 +11|-a0 -b0 0 -b0|0102010101010101010101010101010101010101010101010101010101010101010101010101010101010101013|-29E80 19X0 4SL0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0|1","Antarctica/Mawson|-00 +06 +05|0 -60 -50|012|-CEo0 2fyk0|60","Pacific/Auckland|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|14e5","Antarctica/Palmer|-00 -03 -04 -02|0 30 40 20|0121212121213121212121212121212121212121212121212121212121212121212121212121212121|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40","Antarctica/Rothera|-00 -03|0 30|01|gOo0|130","Antarctica/Syowa|-00 +03|0 -30|01|-vs00|20","Antarctica/Troll|-00 +00 +02|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|40","Antarctica/Vostok|-00 +06|0 -60|01|-tjA0|25","Europe/Oslo|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2awM0 Qm0 W6o0 5pf0 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 wJc0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1qM0 WM0 zpc0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e4","Asia/Riyadh|LMT +03|-36.Q -30|01|-TvD6.Q|57e5","Asia/Almaty|LMT +05 +06 +07|-57.M -50 -60 -70|012323232323232323232321232323232323232323232323232|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|15e5","Asia/Amman|LMT EET EEST|-2n.I -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e5","Asia/Anadyr|LMT +12 +13 +14 +11|-bN.U -c0 -d0 -e0 -b0|01232121212121212121214121212121212121212121212121212121212141|-1PcbN.U eUnN.U 23CL0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3","Asia/Aqtau|LMT +04 +05 +06|-3l.4 -40 -50 -60|012323232323232323232123232312121212121212121212|-1Pc3l.4 eUnl.4 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4","Asia/Aqtobe|LMT +04 +05 +06|-3M.E -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc3M.E eUnM.E 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4","Asia/Ashgabat|LMT +04 +05 +06|-3R.w -40 -50 -60|0123232323232323232323212|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4","Asia/Atyrau|LMT +03 +05 +06 +04|-3r.I -30 -50 -60 -40|01232323232323232323242323232323232324242424242|-1Pc3r.I eUor.I 24PW0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0","Asia/Baghdad|BMT +03 +04|-2V.A -30 -40|012121212121212121212121212121212121212121212121212121|-26BeV.A 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5","Asia/Qatar|LMT +04 +03|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8|96e4","Asia/Baku|LMT +03 +04 +05|-3j.o -30 -40 -50|01232323232323232323232123232323232323232323232323232323232323232|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5","Asia/Bangkok|BMT +07|-6G.4 -70|01|-218SG.4|15e6","Asia/Barnaul|LMT +06 +07 +08|-5z -60 -70 -80|0123232323232323232323212323232321212121212121212121212121212121212|-21S5z pCnz 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0","Asia/Beirut|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-21aq0 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0|22e5","Asia/Bishkek|LMT +05 +06 +07|-4W.o -50 -60 -70|012323232323232323232321212121212121212121212121212|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4","Asia/Brunei|LMT +0730 +08|-7D.E -7u -80|012|-1KITD.E gDc9.E|42e4","Asia/Kolkata|MMT IST +0630|-5l.a -5u -6u|012121|-2zOtl.a 1r2LP.a 1un0 HB0 7zX0|15e6","Asia/Chita|LMT +08 +09 +10|-7x.Q -80 -90 -a0|012323232323232323232321232323232323232323232323232323232323232312|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4","Asia/Choibalsan|LMT +07 +08 +10 +09|-7C -70 -80 -a0 -90|0123434343434343434343434343434343434343434343424242|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0|38e3","Asia/Shanghai|CST CDT|-80 -90|01010101010101010|-1c1I0 LX0 16p0 1jz0 1Myp0 Rb0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6","Asia/Colombo|MMT +0530 +06 +0630|-5j.w -5u -60 -6u|01231321|-2zOtj.w 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu|22e5","Asia/Dhaka|HMT +0630 +0530 +06 +07|-5R.k -6u -5u -60 -70|0121343|-18LFR.k 1unn.k HB0 m6n0 2kxbu 1i00|16e6","Asia/Damascus|LMT EET EEST|-2p.c -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|26e5","Asia/Dili|LMT +08 +09|-8m.k -80 -90|01212|-2le8m.k 1dnXm.k 1nfA0 Xld0|19e4","Asia/Dubai|LMT +04|-3F.c -40|01|-21JfF.c|39e5","Asia/Dushanbe|LMT +05 +06 +07|-4z.c -50 -60 -70|012323232323232323232321|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4","Asia/Famagusta|LMT EET EEST +03|-2f.M -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212312121212121212121212121212121212121212121|-1Vc2f.M 2a3cf.M 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Asia/Gaza|EET EEST IST IDT|-20 -30 -20 -30|010101010101010101010101010101012323232323232323232323232320101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0|18e5","Asia/Hebron|EET EEST IST IDT|-20 -30 -20 -30|01010101010101010101010101010101232323232323232323232323232010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0|25e4","Asia/Ho_Chi_Minh|LMT PLMT +07 +08 +09|-76.E -76.u -70 -80 -90|0123423232|-2yC76.E bK00.a 1h7b6.u 5lz0 18o0 3Oq0 k5b0 aW00 BAM0|90e5","Asia/Hong_Kong|LMT HKT HKST JST|-7A.G -80 -90 -90|0121312121212121212121212121212121212121212121212121212121212121212121|-2CFHA.G 1sEP6.G 1cL0 ylu 93X0 1qQu 1tX0 Rd0 1In0 NB0 1cL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1kL0 14N0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5","Asia/Hovd|LMT +06 +07 +08|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3","Asia/Irkutsk|IMT +07 +08 +09|-6V.5 -70 -80 -90|01232323232323232323232123232323232323232323232323232323232323232|-21zGV.5 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4","Europe/Istanbul|IMT EET EEST +04 +03|-1U.U -20 -30 -40 -30|012121212121212121212121212121212121212121212121212121234343434342121212121212121212121212121212121212121212121212121212121212124|-2ogNU.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSp0 CL0 mN0 1Vz0 1gN0 1pz0 5Rd0 1fz0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1jB0 18L0 1ip0 17z0 qdd0 xX0 3S10 Tz0 dA10 11z0 1o10 11z0 1qN0 11z0 1ze0 11B0 WM0 1qO0 WI0 1nX0 1rB0 10L0 11B0 1in0 17d0 1in0 2pX0 19E0 1fU0 16Q0 1iI0 16Q0 1iI0 1Vd0 pb0 3Kp0 14o0 1de0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6","Asia/Jakarta|BMT +0720 +0730 +09 +08 WIB|-77.c -7k -7u -90 -80 -70|01232425|-1Q0Tk luM0 mPzO 8vWu 6kpu 4PXu xhcu|31e6","Asia/Jayapura|LMT +09 +0930 WIT|-9m.M -90 -9u -90|0123|-1uu9m.M sMMm.M L4nu|26e4","Asia/Jerusalem|JMT IST IDT IDDT|-2k.E -20 -30 -40|01212121212132121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-26Bek.E SyMk.E 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 3LB0 Em0 or0 1cn0 1dB0 16n0 10O0 1ja0 1tC0 14o0 1cM0 1a00 11A0 1Na0 An0 1MP0 AJ0 1Kp0 LC0 1oo0 Wl0 EQN0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0|81e4","Asia/Kabul|+04 +0430|-40 -4u|01|-10Qs0|46e5","Asia/Kamchatka|LMT +11 +12 +13|-ay.A -b0 -c0 -d0|012323232323232323232321232323232323232323232323232323232323212|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4","Asia/Karachi|LMT +0530 +0630 +05 PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6","Asia/Urumqi|LMT +06|-5O.k -60|01|-1GgtO.k|32e5","Asia/Kathmandu|LMT +0530 +0545|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g|12e5","Asia/Khandyga|LMT +08 +09 +10 +11|-92.d -80 -90 -a0 -b0|0123232323232323232323212323232323232323232323232343434343434343432|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2","Asia/Krasnoyarsk|LMT +06 +07 +08|-6b.q -60 -70 -80|01232323232323232323232123232323232323232323232323232323232323232|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5","Asia/Kuala_Lumpur|SMT +07 +0720 +0730 +09 +08|-6T.p -70 -7k -7u -90 -80|0123435|-2Bg6T.p 17anT.p l5XE 17bO 8Fyu 1so1u|71e5","Asia/Kuching|LMT +0730 +08 +0820 +09|-7l.k -7u -80 -8k -90|0123232323232323242|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0|13e4","Asia/Macau|LMT CST CDT|-7y.k -80 -90|012121212121212121212121212121212121212121|-2le80 1XO3u 1wn0 Rd0 1wn0 R9u 1wqu U10 1tz0 TVu 1tz0 17gu 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cOu 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cL0|57e4","Asia/Magadan|LMT +10 +11 +12|-a3.c -a0 -b0 -c0|012323232323232323232321232323232323232323232323232323232323232312|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3","Asia/Makassar|LMT MMT +08 +09 WITA|-7V.A -7V.A -80 -90 -80|01234|-21JjV.A vfc0 myLV.A 8ML0|15e5","Asia/Manila|+08 +09|-80 -90|010101010|-1kJI0 AL0 cK10 65X0 mXB0 vX0 VK10 1db0|24e6","Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|32e4","Asia/Novokuznetsk|LMT +06 +07 +08|-5M.M -60 -70 -80|012323232323232323232321232323232323232323232323232323232323212|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4","Asia/Novosibirsk|LMT +06 +07 +08|-5v.E -60 -70 -80|0123232323232323232323212323212121212121212121212121212121212121212|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5","Asia/Omsk|LMT +05 +06 +07|-4R.u -50 -60 -70|01232323232323232323232123232323232323232323232323232323232323232|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5","Asia/Oral|LMT +03 +05 +06 +04|-3p.o -30 -50 -60 -40|01232323232323232424242424242424242424242424242|-1Pc3p.o eUop.o 23CK0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4","Asia/Pontianak|LMT PMT +0730 +09 +08 WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu|23e4","Asia/Pyongyang|LMT KST JST KST|-8n -8u -90 -90|012313|-2um8n 97XR 1lTzu 2Onc0 6BAu|29e5","Asia/Qyzylorda|LMT +04 +05 +06|-4l.Q -40 -50 -60|0123232323232323232323232323232323232323232323|-1Pc4l.Q eUol.Q 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|73e4","Asia/Rangoon|RMT +0630 +09|-6o.L -6u -90|0121|-21Jio.L SmnS.L 7j9u|48e5","Asia/Sakhalin|LMT +09 +11 +12 +10|-9u.M -90 -b0 -c0 -a0|01232323232323232323232423232323232424242424242424242424242424242|-2AGVu.M 1BoMu.M 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4","Asia/Samarkand|LMT +04 +05 +06|-4r.R -40 -50 -60|01232323232323232323232|-1Pc4r.R eUor.R 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4","Asia/Seoul|LMT KST JST KST KDT KDT|-8r.Q -8u -90 -90 -9u -a0|0123141414141414135353|-2um8r.Q 97XV.Q 1m1zu kKo0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0|23e6","Asia/Srednekolymsk|LMT +10 +11 +12|-ae.Q -a0 -b0 -c0|01232323232323232323232123232323232323232323232323232323232323232|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2","Asia/Taipei|CST JST CDT|-80 -90 -90|01020202020202020202020202020202020202020|-1iw80 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0|74e5","Asia/Tashkent|LMT +05 +06 +07|-4B.b -50 -60 -70|012323232323232323232321|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5","Asia/Tbilisi|TBMT +03 +04 +05|-2X.b -30 -40 -50|0123232323232323232323212121232323232323232323212|-1Pc2X.b 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5","Asia/Tehran|LMT TMT +0330 +04 +05 +0430|-3p.I -3p.I -3u -40 -50 -4u|01234325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2btDp.I 1d3c0 1huLT.I TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0|14e6","Asia/Thimphu|LMT +0530 +06|-5W.A -5u -60|012|-Su5W.A 1BGMs.A|79e3","Asia/Tokyo|JST JDT|-90 -a0|010101010|-QJJ0 Rb0 1ld0 14n0 1zd0 On0 1zd0 On0|38e6","Asia/Tomsk|LMT +06 +07 +08|-5D.P -60 -70 -80|0123232323232323232323212323232323232323232323212121212121212121212|-21NhD.P pxzD.P 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5","Asia/Ulaanbaatar|LMT +07 +08 +09|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|12e5","Asia/Ust-Nera|LMT +08 +09 +12 +11 +10|-9w.S -80 -90 -c0 -b0 -a0|012343434343434343434345434343434343434343434343434343434343434345|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2","Asia/Vladivostok|LMT +09 +10 +11|-8L.v -90 -a0 -b0|01232323232323232323232123232323232323232323232323232323232323232|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4","Asia/Yakutsk|LMT +08 +09 +10|-8C.W -80 -90 -a0|01232323232323232323232123232323232323232323232323232323232323232|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4","Asia/Yekaterinburg|LMT PMT +04 +05 +06|-42.x -3J.5 -40 -50 -60|012343434343434343434343234343434343434343434343434343434343434343|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5","Asia/Yerevan|LMT +03 +04 +05|-2W -30 -40 -50|0123232323232323232323212121212323232323232323232323232323232|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5","Atlantic/Azores|HMT -02 -01 +00 WET|1S.w 20 10 0 0|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121232323232323232323232323232323234323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2ldW0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|25e4","Atlantic/Bermuda|LMT AST ADT|4j.i 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1BnRE.G 1LTbE.G 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3","Atlantic/Canary|LMT -01 WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Atlantic/Cape_Verde|LMT -02 -01|1y.4 20 10|01212|-2ldW0 1eEo0 7zX0 1djf0|50e4","Atlantic/Faroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|49e3","Atlantic/Madeira|FMT -01 +00 +01 WET WEST|17.A 10 0 -10 0 -10|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldX0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e4","Atlantic/Reykjavik|LMT -01 +00 GMT|1s 10 0 0|012121212121212121212121212121212121212121212121212121212121212121213|-2uWmw mfaw 1Bd0 ML0 1LB0 Cn0 1LB0 3fX0 C10 HrX0 1cO0 LB0 1EL0 LA0 1C00 Oo0 1wo0 Rc0 1wo0 Rc0 1wo0 Rc0 1zc0 Oo0 1zc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0|12e4","Atlantic/South_Georgia|-02|20|0||30","Atlantic/Stanley|SMT -04 -03 -02|3P.o 40 30 20|012121212121212323212121212121212121212121212121212121212121212121212|-2kJw8.A 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 2mN0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2","Australia/Sydney|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|40e5","Australia/Adelaide|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|11e5","Australia/Brisbane|AEST AEDT|-a0 -b0|01010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5","Australia/Broken_Hill|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|18e3","Australia/Currie|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|746","Australia/Darwin|ACST ACDT|-9u -au|010101010|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0|12e4","Australia/Eucla|+0845 +0945|-8J -9J|0101010101010101010|-293kI xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368","Australia/Hobart|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 VfB0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|21e4","Australia/Lord_Howe|AEST +1030 +1130 +11|-a0 -au -bu -b0|0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu|347","Australia/Lindeman|AEST AEDT|-a0 -b0|010101010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10","Australia/Melbourne|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|39e5","Australia/Perth|AWST AWDT|-80 -90|0101010101010101010|-293jX xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5","CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Pacific/Easter|EMT -07 -06 -05|7h.s 70 60 50|012121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1uSgG.w 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|30e2","CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Dublin|DMT IST GMT BST IST|p.l -y.D 0 -10 -10|01232323232324242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-2ax9y.D Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g600 14o0 1wo0 17c0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","EST|EST|50|0|","EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","Etc/GMT-0|GMT|0|0|","Etc/GMT-1|+01|-10|0|","Pacific/Port_Moresby|+10|-a0|0||25e4","Pacific/Pohnpei|+11|-b0|0||34e3","Pacific/Tarawa|+12|-c0|0||29e3","Etc/GMT-13|+13|-d0|0|","Etc/GMT-14|+14|-e0|0|","Etc/GMT-2|+02|-20|0|","Etc/GMT-3|+03|-30|0|","Etc/GMT-4|+04|-40|0|","Etc/GMT-5|+05|-50|0|","Etc/GMT-6|+06|-60|0|","Indian/Christmas|+07|-70|0||21e2","Etc/GMT-8|+08|-80|0|","Pacific/Palau|+09|-90|0||21e3","Etc/GMT+1|-01|10|0|","Etc/GMT+10|-10|a0|0|","Etc/GMT+11|-11|b0|0|","Etc/GMT+12|-12|c0|0|","Etc/GMT+3|-03|30|0|","Etc/GMT+4|-04|40|0|","Etc/GMT+5|-05|50|0|","Etc/GMT+6|-06|60|0|","Etc/GMT+7|-07|70|0|","Etc/GMT+8|-08|80|0|","Etc/GMT+9|-09|90|0|","Etc/UCT|UCT|0|0|","Etc/UTC|UTC|0|0|","Europe/Amsterdam|AMT NST +0120 +0020 CEST CET|-j.w -1j.w -1k -k -20 -10|010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 Uo0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|16e5","Europe/Andorra|WET CET CEST|0 -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-UBA0 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|79e3","Europe/Astrakhan|LMT +03 +04 +05|-3c.c -30 -40 -50|012323232323232323212121212121212121212121212121212121212121212|-1Pcrc.c eUMc.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0","Europe/Athens|AMT EET EEST CEST CET|-1y.Q -20 -30 -20 -10|012123434121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a61x.Q CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|35e5","Europe/London|GMT BST BDST|0 -10 -20|0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|10e6","Europe/Belgrade|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19RC0 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Berlin|CET CEST CEMT|-10 -20 -30|01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e5","Europe/Prague|CET CEST GMT|-10 -20 0|01010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 1qM0 11c0 mp0 xA0 mn0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|13e5","Europe/Brussels|WET CET CEST WEST|0 -10 -20 -10|0121212103030303030303030303030303030303030303030303212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ehc0 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|21e5","Europe/Bucharest|BMT EET EEST|-1I.o -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1xApI.o 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|19e5","Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1ip0 17b0 1op0 1tb0 Q2m0 3Ne0 WM0 1fA0 1cM0 1cM0 1oJ0 1dc0 1030 1fA0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1iM0 1fA0 8Ha0 Rb0 1wN0 Rb0 1BB0 Lz0 1C20 LB0 SNX0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5","Europe/Zurich|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19Lc0 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e4","Europe/Chisinau|CMT BMT EET EEST CEST CET MSK MSD|-1T -1I.o -20 -30 -20 -10 -30 -40|012323232323232323234545467676767676767676767323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-26jdT wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|67e4","Europe/Copenhagen|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 Tz0 VuO0 60q0 WM0 1fA0 1cM0 1cM0 1cM0 S00 1HA0 Nc0 1C00 Dc0 1Nc0 Ao0 1h5A0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Gibraltar|GMT BST BDST CET CEST|0 -10 -20 -10 -20|010101010101010101010101010101010101010101010101012121212121010121010101010101010101034343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|30e3","Europe/Helsinki|HMT EET EEST|-1D.N -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1WuND.N OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Kaliningrad|CET CEST CET CEST MSK MSD EEST EET +03|-10 -20 -20 -30 -30 -40 -30 -20 -30|0101010101010232454545454545454546767676767676767676767676767676767676767676787|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 Am0 Lb0 1en0 op0 1pNz0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4","Europe/Kiev|KMT EET MSK CEST CET MSD EEST|-22.4 -20 -30 -20 -10 -40 -30|0123434252525252525252525256161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc22.4 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|34e5","Europe/Kirov|LMT +03 +04 +05|-3i.M -30 -40 -50|01232323232323232321212121212121212121212121212121212121212121|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4","Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2le00 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e5","Europe/Luxembourg|LMT CET CEST WET WEST WEST WET|-o.A -10 -20 0 -10 -20 -10|0121212134343434343434343434343434343434343434343434565651212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2DG0o.A t6mo.A TB0 1nX0 Up0 1o20 11A0 rW0 CM0 1qP0 R90 1EO0 UK0 1u20 10m0 1ip0 1in0 17e0 19W0 1fB0 1db0 1cp0 1in0 17d0 1fz0 1a10 1in0 1a10 1in0 17f0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 vA0 60L0 WM0 1fA0 1cM0 17c0 1io0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Europe/Madrid|WET WEST WEMT CET CEST|0 -10 -20 -10 -20|010101010101010101210343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-25Td0 19B0 1cL0 1dd0 b1z0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1in0 17d0 iIn0 Hd0 1cL0 bb0 1200 2s20 14n0 5aL0 Mp0 1vz0 17d0 1in0 17d0 1in0 17d0 1in0 17d0 6hX0 11B0 XHX0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e5","Europe/Malta|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1co0 17c0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4","Europe/Minsk|MMT EET MSK CEST CET MSD EEST +03|-1O -20 -30 -20 -10 -40 -30 -30|01234343252525252525252525261616161616161616161616161616161616161617|-1Pc1O eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5","Europe/Monaco|PMT WET WEST WEMT CET CEST|-9.l 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121212121232323232345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 2RV0 11z0 11B0 1ze0 WM0 1fA0 1cM0 1fa0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e3","Europe/Moscow|MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|012132345464575454545454545454545458754545454545454545454545454545454545454595|-2ag2u.h 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6","Europe/Paris|PMT WET WEST CEST CET WEMT|-9.l 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123434352543434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2nco8.l cNb8.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e6","Europe/Riga|RMT LST EET MSK CEST CET MSD EEST|-1A.y -2A.y -20 -30 -20 -10 -40 -30|010102345454536363636363636363727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-25TzA.y 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|64e4","Europe/Rome|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1cM0 16M0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|39e5","Europe/Samara|LMT +03 +04 +05|-3k.k -30 -40 -50|0123232323232323232121232323232323232323232323232323232323212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5","Europe/Saratov|LMT +03 +04 +05|-34.i -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810","Europe/Simferopol|SMT EET MSK CEST CET MSD EEST MSK|-2g -20 -30 -20 -10 -40 -30 -40|012343432525252525252525252161616525252616161616161616161616161616161616172|-1Pc2g eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4","Europe/Sofia|EET CET CEST EEST|-20 -10 -20 -30|01212103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030|-168L0 WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Stockholm|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 TB0 2yDe0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|15e5","Europe/Tallinn|TMT CET CEST EET MSK MSD EEST|-1D -10 -20 -20 -30 -40 -30|012103421212454545454545454546363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-26oND teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e4","Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4","Europe/Ulyanovsk|LMT +03 +04 +05 +02|-3d.A -30 -40 -50 -20|01232323232323232321214121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0","Europe/Uzhgorod|CET CEST MSK MSD EET EEST|-10 -20 -30 -40 -20 -30|010101023232323232323232320454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-1cqL0 6i00 WM0 1fA0 1cM0 1ml0 1Cp0 1r3W0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e4","Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1a00 1cM0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|18e5","Europe/Vilnius|WMT KMT CET EET MSK CEST MSD EEST|-1o -1z.A -10 -20 -30 -20 -40 -30|012324525254646464646464646473737373737373737352537373737373737373737373737373737373737373737373737373737373737373737373|-293do 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Europe/Volgograd|LMT +03 +04 +05|-2V.E -30 -40 -50|01232323232323232121212121212121212121212121212121212121212121|-21IqV.E psLV.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5","Europe/Warsaw|WMT CET CEST EET EEST|-1o -10 -20 -20 -30|012121234312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ctdo 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5","Europe/Zaporozhye|+0220 EET MSK CEST CET MSD EEST|-2k -20 -30 -20 -10 -40 -30|01234342525252525252525252526161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc2k eUok rdb0 2RE0 WM0 1fA0 8m0 1v9a0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|77e4","HST|HST|a0|0|","Indian/Chagos|LMT +05 +06|-4N.E -50 -60|012|-2xosN.E 3AGLN.E|30e2","Indian/Cocos|+0630|-6u|0||596","Indian/Kerguelen|-00 +05|0 -50|01|-MG00|130","Indian/Mahe|LMT +04|-3F.M -40|01|-2yO3F.M|79e3","Indian/Maldives|MMT +05|-4S -50|01|-olgS|35e4","Indian/Mauritius|LMT +04 +05|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0|15e4","Indian/Reunion|LMT +04|-3F.Q -40|01|-2mDDF.Q|84e4","Pacific/Kwajalein|+11 -12 +12|-b0 c0 -c0|012|-AX0 W9X0|14e3","MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","MST|MST|70|0|","MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","Pacific/Chatham|+1215 +1245 +1345|-cf -cJ -dJ|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-WqAf 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|600","Pacific/Apia|LMT -1130 -11 -10 +14 +13|bq.U bu b0 a0 -e0 -d0|01232345454545454545454545454545454545454545454545454545454|-2nDMx.4 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|37e3","Pacific/Bougainville|+10 +09 +11|-a0 -90 -b0|0102|-16Wy0 7CN0 2MQp0|18e4","Pacific/Efate|LMT +11 +12|-bd.g -b0 -c0|0121212121212121212121|-2l9nd.g 2Szcd.g 1cL0 1oN0 10L0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3","Pacific/Enderbury|-12 -11 +13|c0 b0 -d0|012|nIc0 B7X0|1","Pacific/Fakaofo|-11 +13|b0 -d0|01|1Gfn0|483","Pacific/Fiji|LMT +12 +13|-bT.I -c0 -d0|0121212121212121212121212121212121212121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0|88e4","Pacific/Galapagos|LMT -05 -06|5W.o 50 60|01212|-1yVS1.A 2dTz1.A gNd0 rz0|25e3","Pacific/Gambier|LMT -09|8X.M 90|01|-2jof0.c|125","Pacific/Guadalcanal|LMT +11|-aD.M -b0|01|-2joyD.M|11e4","Pacific/Guam|GST ChST|-a0 -a0|01|1fpq0|17e4","Pacific/Honolulu|HST HDT HST|au 9u a0|010102|-1thLu 8x0 lef0 8Pz0 46p0|37e4","Pacific/Kiritimati|-1040 -10 +14|aE a0 -e0|012|nIaE B7Xk|51e2","Pacific/Kosrae|+11 +12|-b0 -c0|010|-AX0 1bdz0|66e2","Pacific/Majuro|+11 +12|-b0 -c0|01|-AX0|28e3","Pacific/Marquesas|LMT -0930|9i 9u|01|-2joeG|86e2","Pacific/Pago_Pago|LMT SST|bm.M b0|01|-2nDMB.c|37e2","Pacific/Nauru|LMT +1130 +09 +12|-b7.E -bu -90 -c0|01213|-1Xdn7.E PvzB.E 5RCu 1ouJu|10e3","Pacific/Niue|-1120 -1130 -11|bk bu b0|012|-KfME 17y0a|12e2","Pacific/Norfolk|+1112 +1130 +1230 +11|-bc -bu -cu -b0|01213|-Kgbc W01G On0 1COp0|25e4","Pacific/Noumea|LMT +11 +12|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0|98e3","Pacific/Pitcairn|-0830 -08|8u 80|01|18Vku|56","Pacific/Rarotonga|-1030 -0930 -10|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3","Pacific/Tahiti|LMT -10|9W.g a0|01|-2joe1.I|18e4","Pacific/Tongatapu|+1220 +13 +14|-ck -d0 -e0|0121212121|-1aB0k 2n5dk 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00|75e3","PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00"],links:["Africa/Abidjan|Africa/Bamako","Africa/Abidjan|Africa/Banjul","Africa/Abidjan|Africa/Conakry","Africa/Abidjan|Africa/Dakar","Africa/Abidjan|Africa/Freetown","Africa/Abidjan|Africa/Lome","Africa/Abidjan|Africa/Nouakchott","Africa/Abidjan|Africa/Ouagadougou","Africa/Abidjan|Africa/Timbuktu","Africa/Abidjan|Atlantic/St_Helena","Africa/Cairo|Egypt","Africa/Johannesburg|Africa/Maseru","Africa/Johannesburg|Africa/Mbabane","Africa/Lagos|Africa/Bangui","Africa/Lagos|Africa/Brazzaville","Africa/Lagos|Africa/Douala","Africa/Lagos|Africa/Kinshasa","Africa/Lagos|Africa/Libreville","Africa/Lagos|Africa/Luanda","Africa/Lagos|Africa/Malabo","Africa/Lagos|Africa/Niamey","Africa/Lagos|Africa/Porto-Novo","Africa/Maputo|Africa/Blantyre","Africa/Maputo|Africa/Bujumbura","Africa/Maputo|Africa/Gaborone","Africa/Maputo|Africa/Harare","Africa/Maputo|Africa/Kigali","Africa/Maputo|Africa/Lubumbashi","Africa/Maputo|Africa/Lusaka","Africa/Nairobi|Africa/Addis_Ababa","Africa/Nairobi|Africa/Asmara","Africa/Nairobi|Africa/Asmera","Africa/Nairobi|Africa/Dar_es_Salaam","Africa/Nairobi|Africa/Djibouti","Africa/Nairobi|Africa/Kampala","Africa/Nairobi|Africa/Mogadishu","Africa/Nairobi|Indian/Antananarivo","Africa/Nairobi|Indian/Comoro","Africa/Nairobi|Indian/Mayotte","Africa/Tripoli|Libya","America/Adak|America/Atka","America/Adak|US/Aleutian","America/Anchorage|US/Alaska","America/Argentina/Buenos_Aires|America/Buenos_Aires","America/Argentina/Catamarca|America/Argentina/ComodRivadavia","America/Argentina/Catamarca|America/Catamarca","America/Argentina/Cordoba|America/Cordoba","America/Argentina/Cordoba|America/Rosario","America/Argentina/Jujuy|America/Jujuy","America/Argentina/Mendoza|America/Mendoza","America/Atikokan|America/Coral_Harbour","America/Chicago|US/Central","America/Curacao|America/Aruba","America/Curacao|America/Kralendijk","America/Curacao|America/Lower_Princes","America/Denver|America/Shiprock","America/Denver|Navajo","America/Denver|US/Mountain","America/Detroit|US/Michigan","America/Edmonton|Canada/Mountain","America/Fort_Wayne|America/Indiana/Indianapolis","America/Fort_Wayne|America/Indianapolis","America/Fort_Wayne|US/East-Indiana","America/Halifax|Canada/Atlantic","America/Havana|Cuba","America/Indiana/Knox|America/Knox_IN","America/Indiana/Knox|US/Indiana-Starke","America/Jamaica|Jamaica","America/Kentucky/Louisville|America/Louisville","America/Los_Angeles|US/Pacific","America/Los_Angeles|US/Pacific-New","America/Manaus|Brazil/West","America/Mazatlan|Mexico/BajaSur","America/Mexico_City|Mexico/General","America/New_York|US/Eastern","America/Noronha|Brazil/DeNoronha","America/Panama|America/Cayman","America/Phoenix|US/Arizona","America/Port_of_Spain|America/Anguilla","America/Port_of_Spain|America/Antigua","America/Port_of_Spain|America/Dominica","America/Port_of_Spain|America/Grenada","America/Port_of_Spain|America/Guadeloupe","America/Port_of_Spain|America/Marigot","America/Port_of_Spain|America/Montserrat","America/Port_of_Spain|America/St_Barthelemy","America/Port_of_Spain|America/St_Kitts","America/Port_of_Spain|America/St_Lucia","America/Port_of_Spain|America/St_Thomas","America/Port_of_Spain|America/St_Vincent","America/Port_of_Spain|America/Tortola","America/Port_of_Spain|America/Virgin","America/Regina|Canada/Saskatchewan","America/Rio_Branco|America/Porto_Acre","America/Rio_Branco|Brazil/Acre","America/Santiago|Chile/Continental","America/Sao_Paulo|Brazil/East","America/St_Johns|Canada/Newfoundland","America/Tijuana|America/Ensenada","America/Tijuana|America/Santa_Isabel","America/Tijuana|Mexico/BajaNorte","America/Toronto|America/Montreal","America/Toronto|Canada/Eastern","America/Vancouver|Canada/Pacific","America/Whitehorse|Canada/Yukon","America/Winnipeg|Canada/Central","Asia/Ashgabat|Asia/Ashkhabad","Asia/Bangkok|Asia/Phnom_Penh","Asia/Bangkok|Asia/Vientiane","Asia/Dhaka|Asia/Dacca","Asia/Dubai|Asia/Muscat","Asia/Ho_Chi_Minh|Asia/Saigon","Asia/Hong_Kong|Hongkong","Asia/Jerusalem|Asia/Tel_Aviv","Asia/Jerusalem|Israel","Asia/Kathmandu|Asia/Katmandu","Asia/Kolkata|Asia/Calcutta","Asia/Kuala_Lumpur|Asia/Singapore","Asia/Kuala_Lumpur|Singapore","Asia/Macau|Asia/Macao","Asia/Makassar|Asia/Ujung_Pandang","Asia/Nicosia|Europe/Nicosia","Asia/Qatar|Asia/Bahrain","Asia/Rangoon|Asia/Yangon","Asia/Riyadh|Asia/Aden","Asia/Riyadh|Asia/Kuwait","Asia/Seoul|ROK","Asia/Shanghai|Asia/Chongqing","Asia/Shanghai|Asia/Chungking","Asia/Shanghai|Asia/Harbin","Asia/Shanghai|PRC","Asia/Taipei|ROC","Asia/Tehran|Iran","Asia/Thimphu|Asia/Thimbu","Asia/Tokyo|Japan","Asia/Ulaanbaatar|Asia/Ulan_Bator","Asia/Urumqi|Asia/Kashgar","Atlantic/Faroe|Atlantic/Faeroe","Atlantic/Reykjavik|Iceland","Atlantic/South_Georgia|Etc/GMT+2","Australia/Adelaide|Australia/South","Australia/Brisbane|Australia/Queensland","Australia/Broken_Hill|Australia/Yancowinna","Australia/Darwin|Australia/North","Australia/Hobart|Australia/Tasmania","Australia/Lord_Howe|Australia/LHI","Australia/Melbourne|Australia/Victoria","Australia/Perth|Australia/West","Australia/Sydney|Australia/ACT","Australia/Sydney|Australia/Canberra","Australia/Sydney|Australia/NSW","Etc/GMT-0|Etc/GMT","Etc/GMT-0|Etc/GMT+0","Etc/GMT-0|Etc/GMT0","Etc/GMT-0|Etc/Greenwich","Etc/GMT-0|GMT","Etc/GMT-0|GMT+0","Etc/GMT-0|GMT-0","Etc/GMT-0|GMT0","Etc/GMT-0|Greenwich","Etc/UCT|UCT","Etc/UTC|Etc/Universal","Etc/UTC|Etc/Zulu","Etc/UTC|UTC","Etc/UTC|Universal","Etc/UTC|Zulu","Europe/Belgrade|Europe/Ljubljana","Europe/Belgrade|Europe/Podgorica","Europe/Belgrade|Europe/Sarajevo","Europe/Belgrade|Europe/Skopje","Europe/Belgrade|Europe/Zagreb","Europe/Chisinau|Europe/Tiraspol","Europe/Dublin|Eire","Europe/Helsinki|Europe/Mariehamn","Europe/Istanbul|Asia/Istanbul","Europe/Istanbul|Turkey","Europe/Lisbon|Portugal","Europe/London|Europe/Belfast","Europe/London|Europe/Guernsey","Europe/London|Europe/Isle_of_Man","Europe/London|Europe/Jersey","Europe/London|GB","Europe/London|GB-Eire","Europe/Moscow|W-SU","Europe/Oslo|Arctic/Longyearbyen","Europe/Oslo|Atlantic/Jan_Mayen","Europe/Prague|Europe/Bratislava","Europe/Rome|Europe/San_Marino","Europe/Rome|Europe/Vatican","Europe/Warsaw|Poland","Europe/Zurich|Europe/Busingen","Europe/Zurich|Europe/Vaduz","Indian/Christmas|Etc/GMT-7","Pacific/Auckland|Antarctica/McMurdo","Pacific/Auckland|Antarctica/South_Pole","Pacific/Auckland|NZ","Pacific/Chatham|NZ-CHAT","Pacific/Easter|Chile/EasterIsland","Pacific/Guam|Pacific/Saipan","Pacific/Honolulu|Pacific/Johnston","Pacific/Honolulu|US/Hawaii","Pacific/Kwajalein|Kwajalein","Pacific/Pago_Pago|Pacific/Midway","Pacific/Pago_Pago|Pacific/Samoa","Pacific/Pago_Pago|US/Samoa","Pacific/Palau|Etc/GMT-9","Pacific/Pohnpei|Etc/GMT-11","Pacific/Pohnpei|Pacific/Ponape","Pacific/Port_Moresby|Etc/GMT-10","Pacific/Port_Moresby|Pacific/Chuuk","Pacific/Port_Moresby|Pacific/Truk","Pacific/Port_Moresby|Pacific/Yap","Pacific/Tarawa|Etc/GMT-12","Pacific/Tarawa|Pacific/Funafuti","Pacific/Tarawa|Pacific/Wake","Pacific/Tarawa|Pacific/Wallis"]}),moment}),function(){!function(){for(var lastTime=0,vendors=["ms","moz","webkit","o"],x=0;x<vendors.length&&!window.requestAnimationFrame;++x)window.requestAnimationFrame=window[vendors[x]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[vendors[x]+"CancelAnimationFrame"]||window[vendors[x]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(callback,element){var currTime=(new Date).getTime(),timeToCall=Math.max(0,16-(currTime-lastTime)),id=window.setTimeout(function(){callback(currTime+timeToCall)},timeToCall);return lastTime=currTime+timeToCall,id}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(id){clearTimeout(id)})}(),window.Typewriter=function(element,options){return this._settings={cursorAnimationPaused:!1,opacityIncreasing:!1,currentOpacity:1,delayedQue:[],delayItemsCount:0,eventQue:[],calledEvents:[],eventRunning:!1,timeout:!1,delayExecution:!1,fps:.06,typingFrameCount:0,stringToTypeHTMLArray:[],currentTypedCharacters:[],typing:!1,usedIDs:[],charAmountToDelete:!1,userOptions:{},eventLoopRerun:0},element?"object"!=typeof options?console.error("Typewriter only accepts the options as an object."):(this._settings.userOptions=options,this.default_options={strings:!1,cursorClassName:"typewriter-cursor",cursor:"|",animateCursor:!0,blinkSpeed:50,typingSpeed:"natural",deleteSpeed:"natural",charSpanClassName:"typewriter-char",wrapperClassName:"typewriter-wrapper",loop:!1,autoStart:!1,devMode:!1},this.options=this._setupOptions(options),this.el=element,this._setupTypwriterWrapper(),this._startCursorAnimation(),void(!0===this.options.autoStart&&this.options.strings&&this.typeOutAllStrings())):console.error("Please choose an DOM element so that type writer can display itself.")};var TypewriterPrototype=window.Typewriter.prototype;TypewriterPrototype.stop=function(){return this._addToEventQue(this._stopEventLoop),this},TypewriterPrototype.start=function(){return this._startEventLoop(),this},TypewriterPrototype.rerun=function(){return this._addToEventQue(this._rerunCalledEvents),this},TypewriterPrototype.typeString=function(string){if(!string||"string"!=typeof string)return console.error("Please enter a string as the paramater.");var string_chars=this._getCharacters(string);return this._addToEventQue([this._typeCharacters,[string_chars]]),this},TypewriterPrototype.deleteAll=function(){return this._addToEventQue([this._deleteChars,["all"]]),this},TypewriterPrototype.deleteChars=function(amount){return this._addToEventQue([this._deleteChars,[amount]]),this},TypewriterPrototype.pauseFor=function(ms){return this._addToEventQue([this._pauseFor,[ms]]),this},TypewriterPrototype.typeOutAllStrings=function(){var characters_array=this._getStringsAsCharsArray();if(1===characters_array.length)this._typeCharacters(characters_array[0]);else for(var i=0,length=characters_array.length;i<length;i++)this._addToEventQue([this._typeCharacters,[characters_array[i]]]),this.pauseFor(this._randomInteger(1500,2500)),this.deleteAll(),this.pauseFor(this._randomInteger(1500,2500));return this},TypewriterPrototype.changeSettings=function(new_settings){return new_settings||"object"==typeof new_settings?(this._addToEventQue([this._changeSettings,[JSON.stringify(new_settings)]]),this):console.error("Typewriter will only accept an object as the settings.")},TypewriterPrototype.changeBlinkSpeed=function(new_speed){return new_speed||"number"==typeof new_speed?(this.changeSettings({blinkSpeed:new_speed}),this):console.error("Please enter a number for the new blink speed.")},TypewriterPrototype.changeTypingSpeed=function(new_speed){if(!new_speed&&"number"!=typeof new_speed)return console.error("Please enter a number for the new typing speed.");return this.changeSettings({typingSpeed:new_speed}),this},TypewriterPrototype.changeDeleteSpeed=function(new_speed){return new_speed||"number"==typeof new_speed?(this.changeSettings({changeDeleteSpeed:new_speed}),this):console.error("Please enter a number for the new delete speed.")},TypewriterPrototype._rerunCalledEvents=function(){this._settings.currentTypedCharacters.length>0?(this.deleteAll(),this._resetEventLoop("rerunCalledEvents")):(this._settings.eventQue=this._settings.calledEvents,this._settings.calledEvents=[],this.options=this._setupOptions(this._settings.userOptions),this._settings.usedIDs=[],this.charAmountToDelete=!1,this._startEventLoop())},TypewriterPrototype._deleteChars=function(amount){return amount&&(this._settings.charAmountToDelete=amount),this._deletingCharIdsAnimation=window.requestAnimationFrame(this._deletingCharAnimationFrame.bind(this)),this},TypewriterPrototype._pauseFor=function(ms){var self=this;self._settings.eventRunning=!0,setTimeout(function(){self._resetEventLoop("pauseFor")},ms)},TypewriterPrototype._changeSettings=function(new_settings){this.options=this._setupOptions(JSON.parse(new_settings[0])),this._resetEventLoop("changeSettings"),this.options.devMode&&console.log("New settings",this.options)},TypewriterPrototype._deletingCharAnimationFrame=function(){var self=this,delete_speed=this.options.deleteSpeed,typewriter_wrapper_class_name=self.options.wrapperClassName,current_typed_char_ids=self._settings.currentTypedCharacters,char_amount_to_delete=self._settings.charAmountToDelete;if(!self._settings.charAmountToDelete||0===self._settings.charAmountToDelete||0===current_typed_char_ids)return self._resetEventLoop("deletingCharAnimationFrame"),!0;"natural"==delete_speed&&(delete_speed=self._randomInteger(50,150)),"all"==char_amount_to_delete&&(char_amount_to_delete=current_typed_char_ids.length,self._settings.charAmountToDelete=char_amount_to_delete),setTimeout(function(){if(self._settings.charAmountToDelete){var last_typed_char_index=current_typed_char_ids.length-1,get_last_typed_char=current_typed_char_ids[last_typed_char_index];self._settings.currentTypedCharacters.splice(last_typed_char_index,1);var char_to_delete_el=document.getElementById(get_last_typed_char);if(char_to_delete_el)self.el.querySelector("."+typewriter_wrapper_class_name).removeChild(char_to_delete_el),self._settings.charAmountToDelete=char_amount_to_delete-1,self.options.devMode&&console.log("Deleted char with ID",get_last_typed_char)}self._deletingCharIdsAnimation=window.requestAnimationFrame(self._deletingCharAnimationFrame.bind(self))},delete_speed)},TypewriterPrototype._setupOptions=function(new_options){var merged_options={};for(var attrname in this.default_options)merged_options[attrname]=this.default_options[attrname];if(this._settings.userOptions)for(var attrname in this._settings.userOptions)merged_options[attrname]=this._settings.userOptions[attrname];for(var attrname in new_options)merged_options[attrname]=new_options[attrname];return merged_options},TypewriterPrototype._addToEventQue=function(event){this._settings.eventQue.push(event),this._settings.eventQue.length>0&&!this._settings.eventRunning&&this.options.autoStart&&this._startEventLoop()},TypewriterPrototype._startEventLoop=function(){if(this.options.devMode&&console.log("Event loop started."),!this._settings.eventRunning){if(this._settings.eventQue.length>0){this.eventLoopRerun=0;var first_event=this._settings.eventQue[0];"function"==typeof first_event?(this._settings.eventRunning=!0,this._settings.calledEvents.push(first_event),this._settings.eventQue.splice(0,1),first_event.call(this),this.options.devMode&&console.log("Event started.")):first_event instanceof Array&&"function"==typeof first_event[0]&&first_event[1]instanceof Array&&(this._settings.eventRunning=!0,this._settings.calledEvents.push(first_event),this._settings.eventQue.splice(0,1),first_event[0].call(this,first_event[1]),this.options.devMode&&console.log("Event started."))}this._eventQueAnimation=window.requestAnimationFrame(this._startEventLoop.bind(this))}if(!this._settings.eventRunning&&this._settings.eventQue.length<=0){var self=this;return self._stopEventLoop(),void setTimeout(function(){self.options.loop&&(self.eventLoopRerun++,self.options.devMode&&console.log("Before Loop State",self._settings),self.eventLoopRerun>4?(console.error("Maximum amount of loop retries reached."),self._stopEventLoop()):(self.options.devMode&&console.log("Looping events."),self._rerunCalledEvents()))},1e3)}},TypewriterPrototype._resetEventLoop=function(name){var event_name=name||"Event";this._settings.eventRunning=!1,this._startEventLoop(),this.options.devMode&&console.log(event_name,"Finished")},TypewriterPrototype._stopEventLoop=function(){window.cancelAnimationFrame(this._eventQueAnimation),this.options.devMode&&console.log("Event loop stopped.")},TypewriterPrototype._setupTypwriterWrapper=function(){var typewriter_wrapper_class_name=this.options.wrapperClassName,typewriter_wrapper=document.createElement("span");typewriter_wrapper.className=typewriter_wrapper_class_name,this.el.innerHTML="",this.el.appendChild(typewriter_wrapper)},TypewriterPrototype._typeCharacters=function(characters_array){return this._settings.stringToTypeHTMLArray=this._convertCharsToHTML(characters_array),this._typingAnimation=window.requestAnimationFrame(this._typingAnimationFrame.bind(this,characters_array.length)),this},TypewriterPrototype._typingAnimationFrame=function(total_items){var self=this,typing_speed=this.options.typingSpeed,typewriter_wrapper_class_name=self.options.wrapperClassName;if(0==self._settings.stringToTypeHTMLArray.length)return window.cancelAnimationFrame(self._typingAnimation),this._resetEventLoop("typingAnimationFrame"),!0;"natural"==typing_speed&&(typing_speed=this._randomInteger(50,150)),setTimeout(function(){self.el.innerHTML;var item_to_type=self._settings.stringToTypeHTMLArray[0];self.el.querySelector("."+typewriter_wrapper_class_name).appendChild(item_to_type.el),self._settings.currentTypedCharacters.push(item_to_type.id),self._settings.stringToTypeHTMLArray.splice(0,1),self._typingAnimation=window.requestAnimationFrame(self._typingAnimationFrame.bind(self,total_items)),self.options.devMode&&console.log("Typed",item_to_type)},typing_speed)},TypewriterPrototype._convertCharsToHTML=function(chars){for(var chars_html_wrap_array=[],char_class_name=this.options.charSpanClassName,chars_array=chars[0],i=0,length=chars_array.length;i<length;i++){var char_element=document.createElement("span"),char_id=this._generateUniqueID();char_element.id=char_id,char_element.className=char_class_name+" typewriter-item-"+i,char_element.innerHTML=chars_array[i],chars_html_wrap_array.push({id:char_id,el:char_element})}return chars_html_wrap_array},TypewriterPrototype._getCharacters=function(string){return"string"==typeof string&&string.split("")},TypewriterPrototype._getStringsAsCharsArray=function(){var strings_array_check=this.options.strings instanceof Array,strings_string_check="string"==typeof this.options.strings;if(!strings_array_check)return strings_string_check?[this.options.strings.split("")]:console.error("Typewriter only accepts strings or an array of strings as the input.");for(var strings_chars_array=[],i=0,length=this.options.strings.length;i<length;i++){var string_chars=this._getCharacters(this.options.strings[i]);if(!string_chars){console.error("Please enter only strings.");break}strings_chars_array.push(string_chars)}return strings_chars_array},TypewriterPrototype._cursorAnimationFrame=function(){if(!this._settings.cursorAnimationPaused){var opacity_amount=.001*this.options.blinkSpeed,cursor_el=this.el.querySelector(".typewriter-cursor");1==this._settings.opacityIncreasing&&(this._settings.currentOpacity>=1&&(this._settings.opacityIncreasing=!1,this._settings.currentOpacity=1),this._settings.currentOpacity+=opacity_amount),0==this._settings.opacityIncreasing&&(this._settings.currentOpacity<=0&&(this._settings.opacityIncreasing=!0,this._settings.currentOpacity=0),this._settings.currentOpacity-=opacity_amount),cursor_el.style.opacity=this._settings.currentOpacity,this._cursorAnimation=window.requestAnimationFrame(this._cursorAnimationFrame.bind(this))}},TypewriterPrototype.appendText=function(text){return this._addToEventQue([this._appendText,[text]]),this},TypewriterPrototype._appendText=function(text){var char_class_name=this.options.charSpanClassName,char_element=document.createElement("span"),char_id=this._generateUniqueID();char_element.id=char_id,char_element.className=char_class_name+" dom-appended",char_element.innerHTML=text;var items=[];items.push({id:char_id,el:char_element}),this._settings.stringToTypeHTMLArray=items,window.requestAnimationFrame(this._typingAnimationFrame.bind(this,1))},TypewriterPrototype._startCursorAnimation=function(){var cursor=this.options.cursor,cursor_class_name=this.options.cursorClassName,cursor_element=document.createElement("span");cursor_element.className=cursor_class_name,cursor_element.innerHTML=cursor,this.el.appendChild(cursor_element),this.options.animateCursor&&(this._cursorAnimation=window.requestAnimationFrame(this._cursorAnimationFrame.bind(this)))},TypewriterPrototype._pauseCursorAnimation=function(){this._settings.cursorAnimationPaused||(window.cancelAnimationFrame(this._cursorAnimation),this._settings.cursorAnimationPaused=!0)},TypewriterPrototype._restartCursorAnimation=function(){if(!this._settings.cursorAnimationPaused)return console.error("Cursor animation is already running.");this._settings.cursorAnimationPaused=!1,this._cursorAnimation=window.requestAnimationFrame(this._cursorAnimationFrame.bind(this))},TypewriterPrototype._randomInteger=function(min,max){return Math.floor(Math.random()*(max-min+1))+min},TypewriterPrototype._randomID=function(){for(var text="",possible="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",i=0;i<this._randomInteger(5,15);i++)text+=possible.charAt(Math.floor(Math.random()*possible.length));return text},TypewriterPrototype._generateUniqueID=function(){var temp_id=this._randomID();return-1==this._settings.usedIDs.indexOf(temp_id)?(this._settings.usedIDs.push(temp_id),temp_id):this._generateUniqueID.call(this)}}(),function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define("uikit",factory):global.UIkit=factory()}(this,function(){function bind(fn,context){return function(a){var l=arguments.length;return l?l>1?fn.apply(context,arguments):fn.call(context,a):fn.call(context)}}var hasOwnProperty=Object.prototype.hasOwnProperty;function hasOwn(obj,key){return hasOwnProperty.call(obj,key)}var hyphenateCache={},hyphenateRe=/([a-z\d])([A-Z])/g;function hyphenate(str){return str in hyphenateCache||(hyphenateCache[str]=str.replace(hyphenateRe,"$1-$2").toLowerCase()),hyphenateCache[str]}var camelizeRe=/-(\w)/g;function camelize(str){return str.replace(camelizeRe,toUpper)}function toUpper(_,c){return c?c.toUpperCase():""}function ucfirst(str){return str.length?toUpper(0,str.charAt(0))+str.slice(1):""}var strPrototype=String.prototype,startsWithFn=strPrototype.startsWith||function(search){return 0===this.lastIndexOf(search,0)};function startsWith(str,search){return startsWithFn.call(str,search)}var endsWithFn=strPrototype.endsWith||function(search){return this.substr(-search.length)===search};function endsWith(str,search){return endsWithFn.call(str,search)}var includesFn=function(search){return~this.indexOf(search)},includesStr=strPrototype.includes||includesFn,includesArray=Array.prototype.includes||includesFn;function includes(obj,search){return obj&&(isString(obj)?includesStr:includesArray).call(obj,search)}var isArray=Array.isArray;function isFunction(obj){return"function"==typeof obj}function isObject(obj){return null!==obj&&"object"==typeof obj}function isPlainObject(obj){return isObject(obj)&&Object.getPrototypeOf(obj)===Object.prototype}function isWindow(obj){return isObject(obj)&&obj===obj.window}function isDocument(obj){return isObject(obj)&&9===obj.nodeType}function isJQuery(obj){return isObject(obj)&&!!obj.jquery}function isNode(element){return element instanceof Node||isObject(element)&&1===element.nodeType}function isNodeCollection(element){return element instanceof NodeList||element instanceof HTMLCollection}function isBoolean(value){return"boolean"==typeof value}function isString(value){return"string"==typeof value}function isNumber(value){return"number"==typeof value}function isNumeric(value){return isNumber(value)||isString(value)&&!isNaN(value-parseFloat(value))}function isUndefined(value){return void 0===value}function toBoolean(value){return isBoolean(value)?value:"true"===value||"1"===value||""===value||"false"!==value&&"0"!==value&&value}function toNumber(value){var number=Number(value);return!isNaN(number)&&number}function toFloat(value){return parseFloat(value)||0}function toNode(element){return isNode(element)||isWindow(element)||isDocument(element)?element:isNodeCollection(element)||isJQuery(element)?element[0]:isArray(element)?toNode(element[0]):null}var arrayProto=Array.prototype;function toNodes(element){return isNode(element)?[element]:isNodeCollection(element)?arrayProto.slice.call(element):isArray(element)?element.map(toNode).filter(Boolean):isJQuery(element)?element.toArray():[]}function toList(value){return isArray(value)?value:isString(value)?value.split(/,(?![^(]*\))/).map(function(value){return isNumeric(value)?toNumber(value):toBoolean(value.trim())}):[value]}function toMs(time){return time?endsWith(time,"ms")?toFloat(time):1e3*toFloat(time):0}function swap(value,a,b){return value.replace(new RegExp(a+"|"+b,"mg"),function(match){return match===a?b:a})}var assign=Object.assign||function(target){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];target=Object(target);for(var i=0;i<args.length;i++){var source=args[i];if(null!==source)for(var key in source)hasOwn(source,key)&&(target[key]=source[key])}return target};function each(obj,cb){for(var key in obj)cb.call(obj[key],obj[key],key)}function sortBy(collection,prop){return collection.sort(function(a,b){return a[prop]>b[prop]?1:b[prop]>a[prop]?-1:0})}function clamp(number,min,max){return void 0===min&&(min=0),void 0===max&&(max=1),Math.min(Math.max(number,min),max)}function noop(){}function intersectRect(r1,r2){return r1.left<=r2.right&&r2.left<=r1.right&&r1.top<=r2.bottom&&r2.top<=r1.bottom}function pointInRect(point,rect){return intersectRect({top:point.y,bottom:point.y,left:point.x,right:point.x},rect)}var Dimensions={ratio:function(dimensions,prop,value){var obj,aProp="width"===prop?"height":"width";return(obj={})[aProp]=Math.round(value*dimensions[aProp]/dimensions[prop]),obj[prop]=value,obj},contain:function(dimensions,maxDimensions){var this$1=this;return each(dimensions=assign({},dimensions),function(_,prop){return dimensions=dimensions[prop]>maxDimensions[prop]?this$1.ratio(dimensions,prop,maxDimensions[prop]):dimensions}),dimensions},cover:function(dimensions,maxDimensions){var this$1=this;return each(dimensions=this.contain(dimensions,maxDimensions),function(_,prop){return dimensions=dimensions[prop]<maxDimensions[prop]?this$1.ratio(dimensions,prop,maxDimensions[prop]):dimensions}),dimensions}};function attr(element,name,value){if(isObject(name))for(var key in name)attr(element,key,name[key]);else{if(isUndefined(value))return(element=toNode(element))&&element.getAttribute(name);toNodes(element).forEach(function(element){isFunction(value)&&(value=value.call(element,attr(element,name))),null===value?removeAttr(element,name):element.setAttribute(name,value)})}}function hasAttr(element,name){return toNodes(element).some(function(element){return element.hasAttribute(name)})}function removeAttr(element,name){element=toNodes(element),name.split(" ").forEach(function(name){return element.forEach(function(element){return element.removeAttribute(name)})})}function filterAttr(element,attribute,pattern,replacement){attr(element,attribute,function(value){return value?value.replace(pattern,replacement):value})}function data(element,attribute){for(var i=0,attrs=[attribute,"data-"+attribute];i<attrs.length;i++)if(hasAttr(element,attrs[i]))return attr(element,attrs[i])}function query(selector,context){return toNode(selector)||find(selector,isContextSelector(selector)?context:document)}function queryAll(selector,context){var nodes=toNodes(selector);return nodes.length&&nodes||findAll(selector,isContextSelector(selector)?context:document)}function find(selector,context){return toNode(_query(selector,context,"querySelector"))}function findAll(selector,context){return toNodes(_query(selector,context,"querySelectorAll"))}function _query(selector,context,queryFn){if(void 0===context&&(context=document),!selector||!isString(selector))return null;var removes;isContextSelector(selector=selector.replace(contextSanitizeRe,"$1 *"))&&(removes=[],selector=selector.split(",").map(function(selector,i){var ctx=context;if("!"===(selector=selector.trim())[0]){var selectors=selector.substr(1).trim().split(" ");ctx=closest(context.parentNode,selectors[0]),selector=selectors.slice(1).join(" ").trim()}if("-"===selector[0]){var selectors$1=selector.substr(1).trim().split(" "),prev=(ctx||context).previousElementSibling;ctx=matches(prev,selector.substr(1))?prev:null,selector=selectors$1.slice(1).join(" ")}return ctx?(ctx.id||(ctx.id="uk-"+Date.now()+i,removes.push(function(){return removeAttr(ctx,"id")})),"#"+escape(ctx.id)+" "+selector):null}).filter(Boolean).join(","),context=document);try{return context[queryFn](selector)}catch(e){return null}finally{removes&&removes.forEach(function(remove){return remove()})}}var contextSelectorRe=/(^|,)\s*[!>+~-]/,contextSanitizeRe=/([!>+~-])(?=\s+[!>+~-]|\s*$)/g;function isContextSelector(selector){return isString(selector)&&selector.match(contextSelectorRe)}var elProto=Element.prototype,matchesFn=elProto.matches||elProto.webkitMatchesSelector||elProto.msMatchesSelector;function matches(element,selector){return toNodes(element).some(function(element){return matchesFn.call(element,selector)})}var closestFn=elProto.closest||function(selector){var ancestor=this;do{if(matches(ancestor,selector))return ancestor;ancestor=ancestor.parentNode}while(ancestor&&1===ancestor.nodeType)};function closest(element,selector){return startsWith(selector,">")&&(selector=selector.slice(1)),isNode(element)?element.parentNode&&closestFn.call(element,selector):toNodes(element).map(function(element){return element.parentNode&&closestFn.call(element,selector)}).filter(Boolean)}function parents(element,selector){for(var elements=[],parent=toNode(element).parentNode;parent&&1===parent.nodeType;)matches(parent,selector)&&elements.push(parent),parent=parent.parentNode;return elements}var escapeFn=window.CSS&&CSS.escape||function(css){return css.replace(/([^\x7f-\uFFFF\w-])/g,function(match){return"\\"+match})};function escape(css){return isString(css)?escapeFn.call(null,css):""}var voidElements={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,menuitem:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};function isVoidElement(element){return toNodes(element).some(function(element){return voidElements[element.tagName.toLowerCase()]})}function isVisible(element){return toNodes(element).some(function(element){return element.offsetWidth||element.offsetHeight||element.getClientRects().length})}var selInput="input,select,textarea,button";function isInput(element){return toNodes(element).some(function(element){return matches(element,selInput)})}function filter(element,selector){return toNodes(element).filter(function(element){return matches(element,selector)})}function within(element,selector){return isString(selector)?matches(element,selector)||closest(element,selector):element===selector||(isDocument(selector)?selector.documentElement:toNode(selector)).contains(toNode(element))}function on(){for(var args=[],len=arguments.length;len--;)args[len]=arguments[len];var ref=getArgs(args),target=ref[0],type=ref[1],selector=ref[2],listener=ref[3],useCapture=ref[4];return target=toEventTarget(target),selector&&(listener=function(element,selector,listener){var this$1=this;return function(e){var target=e.target,current=">"===selector[0]?findAll(selector,element).reverse().filter(function(element){return within(target,element)})[0]:closest(target,selector);current&&(e.delegate=element,e.current=current,listener.call(this$1,e))}}(target,selector,listener)),listener.length>1&&(listener=function(listener){return function(e){return isArray(e.detail)?listener.apply(void 0,[e].concat(e.detail)):listener(e)}}(listener)),type.split(" ").forEach(function(type){return target&&target.addEventListener(type,listener,useCapture)}),function(){return off(target,type,listener,useCapture)}}function off(target,type,listener,useCapture){void 0===useCapture&&(useCapture=!1),(target=toEventTarget(target))&&type.split(" ").forEach(function(type){return target.removeEventListener(type,listener,useCapture)})}function once(){for(var args=[],len=arguments.length;len--;)args[len]=arguments[len];var ref=getArgs(args),element=ref[0],type=ref[1],selector=ref[2],listener=ref[3],useCapture=ref[4],condition=ref[5],off=on(element,type,selector,function(e){var result=!condition||condition(e);result&&(off(),listener(e,result))},useCapture);return off}function trigger(target,event,detail){return toEventTargets(target).reduce(function(notCanceled,target){return notCanceled&&target.dispatchEvent(createEvent(event,!0,!0,detail))},!0)}function createEvent(e,bubbles,cancelable,detail){if(void 0===bubbles&&(bubbles=!0),void 0===cancelable&&(cancelable=!1),isString(e)){var event=document.createEvent("CustomEvent");event.initCustomEvent(e,bubbles,cancelable,detail),e=event}return e}function getArgs(args){return isString(args[0])&&(args[0]=find(args[0])),isFunction(args[2])&&args.splice(2,0,!1),args}function isEventTarget(target){return"EventTarget"in window?target instanceof EventTarget:target&&"addEventListener"in target}function toEventTarget(target){return isEventTarget(target)?target:toNode(target)}function toEventTargets(target){return isEventTarget(target)?[target]:isArray(target)?target.map(toEventTarget).filter(Boolean):toNodes(target)}function preventClick(){var timer=setTimeout(once(document,"click",function(e){e.preventDefault(),e.stopImmediatePropagation(),clearTimeout(timer)},!0));trigger(document,"touchcancel")}var Promise$1="Promise"in window?window.Promise:PromiseFn,Deferred=function(){var this$1=this;this.promise=new Promise$1(function(resolve,reject){this$1.reject=reject,this$1.resolve=resolve})},PENDING=2,async="setImmediate"in window?setImmediate:setTimeout;function PromiseFn(executor){this.state=PENDING,this.value=void 0,this.deferred=[];var promise=this;try{executor(function(x){promise.resolve(x)},function(r){promise.reject(r)})}catch(e){promise.reject(e)}}PromiseFn.reject=function(r){return new PromiseFn(function(resolve,reject){reject(r)})},PromiseFn.resolve=function(x){return new PromiseFn(function(resolve,reject){resolve(x)})},PromiseFn.all=function(iterable){return new PromiseFn(function(resolve,reject){var result=[],count=0;function resolver(i){return function(x){result[i]=x,(count+=1)===iterable.length&&resolve(result)}}0===iterable.length&&resolve(result);for(var i=0;i<iterable.length;i+=1)PromiseFn.resolve(iterable[i]).then(resolver(i),reject)})},PromiseFn.race=function(iterable){return new PromiseFn(function(resolve,reject){for(var i=0;i<iterable.length;i+=1)PromiseFn.resolve(iterable[i]).then(resolve,reject)})};var p=PromiseFn.prototype;function ajax(url,options){return new Promise$1(function(resolve,reject){var env=assign({data:null,method:"GET",headers:{},xhr:new XMLHttpRequest,beforeSend:noop,responseType:""},options);env.beforeSend(env);var xhr=env.xhr;for(var prop in env)if(prop in xhr)try{xhr[prop]=env[prop]}catch(e){}for(var header in xhr.open(env.method.toUpperCase(),url),env.headers)xhr.setRequestHeader(header,env.headers[header]);on(xhr,"load",function(){0===xhr.status||xhr.status>=200&&xhr.status<300||304===xhr.status?resolve(xhr):reject(assign(Error(xhr.statusText),{xhr:xhr,status:xhr.status}))}),on(xhr,"error",function(){return reject(assign(Error("Network Error"),{xhr:xhr}))}),on(xhr,"timeout",function(){return reject(assign(Error("Network Timeout"),{xhr:xhr}))}),xhr.send(env.data)})}function getImage(src,srcset,sizes){return new Promise$1(function(resolve,reject){var img=new Image;img.onerror=reject,img.onload=function(){return resolve(img)},img.src=src,srcset&&(img.srcset=srcset),sizes&&(img.sizes=sizes)})}function isReady(){return"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll}function ready(fn){if(isReady())fn();else var handle=function(){unbind1(),unbind2(),fn()},unbind1=on(document,"DOMContentLoaded",handle),unbind2=on(window,"load",handle)}function index(element,ref){return ref?toNodes(element).indexOf(toNode(ref)):toNodes((element=toNode(element))&&element.parentNode.children).indexOf(element)}function getIndex(i,elements,current,finite){void 0===current&&(current=0),void 0===finite&&(finite=!1);var length=(elements=toNodes(elements)).length;return i=isNumeric(i)?toNumber(i):"next"===i?current+1:"previous"===i?current-1:index(elements,i),finite?clamp(i,0,length-1):(i%=length)<0?i+length:i}function empty(element){return(element=toNode(element)).innerHTML="",element}function html(parent,html){return parent=toNode(parent),isUndefined(html)?parent.innerHTML:append(parent.hasChildNodes()?empty(parent):parent,html)}function append(parent,element){return parent=toNode(parent),insertNodes(element,function(element){return parent.appendChild(element)})}function before(ref,element){return ref=toNode(ref),insertNodes(element,function(element){return ref.parentNode.insertBefore(element,ref)})}function after(ref,element){return ref=toNode(ref),insertNodes(element,function(element){return ref.nextSibling?before(ref.nextSibling,element):append(ref.parentNode,element)})}function insertNodes(element,fn){return(element=isString(element)?fragment(element):element)?"length"in element?toNodes(element).map(fn):fn(element):null}function remove(element){toNodes(element).map(function(element){return element.parentNode&&element.parentNode.removeChild(element)})}function wrapAll(element,structure){for(structure=toNode(before(element,structure));structure.firstChild;)structure=structure.firstChild;return append(structure,element),structure}function wrapInner(element,structure){return toNodes(toNodes(element).map(function(element){return element.hasChildNodes?wrapAll(toNodes(element.childNodes),structure):append(element,structure)}))}function unwrap(element){toNodes(element).map(function(element){return element.parentNode}).filter(function(value,index,self){return self.indexOf(value)===index}).forEach(function(parent){before(parent,parent.childNodes),remove(parent)})}p.resolve=function(x){var promise=this;if(promise.state===PENDING){if(x===promise)throw new TypeError("Promise settled with itself.");var called=!1;try{var then=x&&x.then;if(null!==x&&isObject(x)&&isFunction(then))return void then.call(x,function(x){called||promise.resolve(x),called=!0},function(r){called||promise.reject(r),called=!0})}catch(e){return void(called||promise.reject(e))}promise.state=0,promise.value=x,promise.notify()}},p.reject=function(reason){if(this.state===PENDING){if(reason===this)throw new TypeError("Promise settled with itself.");this.state=1,this.value=reason,this.notify()}},p.notify=function(){var this$1=this;async(function(){if(this$1.state!==PENDING)for(;this$1.deferred.length;){var ref=this$1.deferred.shift(),onResolved=ref[0],onRejected=ref[1],resolve=ref[2],reject=ref[3];try{0===this$1.state?isFunction(onResolved)?resolve(onResolved.call(void 0,this$1.value)):resolve(this$1.value):1===this$1.state&&(isFunction(onRejected)?resolve(onRejected.call(void 0,this$1.value)):reject(this$1.value))}catch(e){reject(e)}}})},p.then=function(onResolved,onRejected){var this$1=this;return new PromiseFn(function(resolve,reject){this$1.deferred.push([onResolved,onRejected,resolve,reject]),this$1.notify()})},p.catch=function(onRejected){return this.then(void 0,onRejected)};var fragmentRe=/^\s*<(\w+|!)[^>]*>/,singleTagRe=/^<(\w+)\s*\/?>(?:<\/\1>)?$/;function fragment(html){var matches=singleTagRe.exec(html);if(matches)return document.createElement(matches[1]);var container=document.createElement("div");return fragmentRe.test(html)?container.insertAdjacentHTML("beforeend",html.trim()):container.textContent=html,container.childNodes.length>1?toNodes(container.childNodes):container.firstChild}function apply(node,fn){if(node&&1===node.nodeType)for(fn(node),node=node.firstElementChild;node;)apply(node,fn),node=node.nextElementSibling}function addClass(element){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];apply$1(element,args,"add")}function removeClass(element){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];apply$1(element,args,"remove")}function removeClasses(element,cls){filterAttr(element,"class",new RegExp("(^|\\s)"+cls+"(?!\\S)","g"),"")}function replaceClass(element){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];args[0]&&removeClass(element,args[0]),args[1]&&addClass(element,args[1])}function hasClass(element,cls){return toNodes(element).some(function(element){return element.classList.contains(cls)})}function toggleClass(element){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];if(args.length){var force=isString((args=getArgs$1(args))[args.length-1])?[]:args.pop();args=args.filter(Boolean),toNodes(element).forEach(function(ref){for(var classList=ref.classList,i=0;i<args.length;i++)supports.Force?classList.toggle.apply(classList,[args[i]].concat(force)):classList[(isUndefined(force)?!classList.contains(args[i]):force)?"add":"remove"](args[i])})}}function apply$1(element,args,fn){(args=getArgs$1(args).filter(Boolean)).length&&toNodes(element).forEach(function(ref){var classList=ref.classList;supports.Multiple?classList[fn].apply(classList,args):args.forEach(function(cls){return classList[fn](cls)})})}function getArgs$1(args){return args.reduce(function(args,arg){return args.concat.call(args,isString(arg)&&includes(arg," ")?arg.trim().split(" "):arg)},[])}var list,supports={};(list=document.createElement("_").classList)&&(list.add("a","b"),list.toggle("c",!1),supports.Multiple=list.contains("b"),supports.Force=!list.contains("c")),list=null;var cssNumber={"animation-iteration-count":!0,"column-count":!0,"fill-opacity":!0,"flex-grow":!0,"flex-shrink":!0,"font-weight":!0,"line-height":!0,opacity:!0,order:!0,orphans:!0,widows:!0,"z-index":!0,zoom:!0};function css(element,property,value){return toNodes(element).map(function(element){if(isString(property)){if(property=propName(property),isUndefined(value))return getStyle(element,property);value||0===value?element.style[property]=isNumeric(value)&&!cssNumber[property]?value+"px":value:element.style.removeProperty(property)}else{if(isArray(property)){var styles=getStyles(element);return property.reduce(function(props,property){return props[property]=styles[propName(property)],props},{})}isObject(property)&&each(property,function(value,property){return css(element,property,value)})}return element})[0]}function getStyles(element,pseudoElt){return(element=toNode(element)).ownerDocument.defaultView.getComputedStyle(element,pseudoElt)}function getStyle(element,property,pseudoElt){return getStyles(element,pseudoElt)[property]}var vars={};function getCssVar(name){if(!(name in vars)){var element=append(document.documentElement,document.createElement("div"));addClass(element,"var-"+name);try{vars[name]=getStyle(element,"content",":before").replace(/^["'](.*)["']$/,"$1"),vars[name]=JSON.parse(vars[name])}catch(e){}document.documentElement.removeChild(element)}return vars[name]}var cssProps={};function propName(name){var ret=cssProps[name];return ret||(ret=cssProps[name]=function(name){if((name=hyphenate(name))in style)return name;var prefixedName,i=cssPrefixes.length;for(;i--;)if((prefixedName="-"+cssPrefixes[i]+"-"+name)in style)return prefixedName}(name)||name),ret}var cssPrefixes=["webkit","moz","ms"],style=document.createElement("_").style;function transition(element,props,duration,timing){return void 0===duration&&(duration=400),void 0===timing&&(timing="linear"),Promise$1.all(toNodes(element).map(function(element){return new Promise$1(function(resolve,reject){for(var name in props){var value=css(element,name);""===value&&css(element,name,value)}var timer=setTimeout(function(){return trigger(element,"transitionend")},duration);once(element,"transitionend transitioncanceled",function(ref){var type=ref.type;clearTimeout(timer),removeClass(element,"uk-transition"),css(element,{"transition-property":"","transition-duration":"","transition-timing-function":""}),"transitioncanceled"===type?reject():resolve()},!1,function(ref){var target=ref.target;return element===target}),addClass(element,"uk-transition"),css(element,assign({"transition-property":Object.keys(props).map(propName).join(","),"transition-duration":duration+"ms","transition-timing-function":timing},props))})}))}var Transition={start:transition,stop:function(element){return trigger(element,"transitionend"),Promise$1.resolve()},cancel:function(element){trigger(element,"transitioncanceled")},inProgress:function(element){return hasClass(element,"uk-transition")}},animationPrefix="uk-animation-",clsCancelAnimation="uk-cancel-animation";function animate(element,animation,duration,origin,out){var arguments$1=arguments;return void 0===duration&&(duration=200),Promise$1.all(toNodes(element).map(function(element){return new Promise$1(function(resolve,reject){if(hasClass(element,clsCancelAnimation))requestAnimationFrame(function(){return Promise$1.resolve().then(function(){return animate.apply(void 0,arguments$1).then(resolve,reject)})});else{var cls=animation+" "+animationPrefix+(out?"leave":"enter");startsWith(animation,animationPrefix)&&(origin&&(cls+=" uk-transform-origin-"+origin),out&&(cls+=" "+animationPrefix+"reverse")),reset(),once(element,"animationend animationcancel",function(ref){var hasReset=!1;"animationcancel"===ref.type?(reject(),reset()):(resolve(),Promise$1.resolve().then(function(){hasReset=!0,reset()})),requestAnimationFrame(function(){hasReset||(addClass(element,clsCancelAnimation),requestAnimationFrame(function(){return removeClass(element,clsCancelAnimation)}))})},!1,function(ref){var target=ref.target;return element===target}),css(element,"animationDuration",duration+"ms"),addClass(element,cls)}function reset(){css(element,"animationDuration",""),removeClasses(element,animationPrefix+"\\S*")}})}))}var inProgress=new RegExp(animationPrefix+"(enter|leave)"),Animation={in:function(element,animation,duration,origin){return animate(element,animation,duration,origin,!1)},out:function(element,animation,duration,origin){return animate(element,animation,duration,origin,!0)},inProgress:function(element){return inProgress.test(attr(element,"class"))},cancel:function(element){trigger(element,"animationcancel")}};function $(selector,context){return isString(selector)?isHtml(selector)?toNode(fragment(selector)):find(selector,context):toNode(selector)}function $$(selector,context){return isString(selector)?isHtml(selector)?toNodes(fragment(selector)):findAll(selector,context):toNodes(selector)}function isHtml(str){return"<"===str[0]||str.match(/^\s*</)}var dirs={width:["x","left","right"],height:["y","top","bottom"]};function positionAt(element,target,elAttach,targetAttach,elOffset,targetOffset,flip,boundary){elAttach=getPos(elAttach),targetAttach=getPos(targetAttach);var flipped={element:elAttach,target:targetAttach};if(!element||!target)return flipped;var dim=getDimensions(element),targetDim=getDimensions(target),position=targetDim;return moveTo(position,elAttach,dim,-1),moveTo(position,targetAttach,targetDim,1),elOffset=getOffsets(elOffset,dim.width,dim.height),targetOffset=getOffsets(targetOffset,targetDim.width,targetDim.height),elOffset.x+=targetOffset.x,elOffset.y+=targetOffset.y,position.left+=elOffset.x,position.top+=elOffset.y,boundary=getDimensions(boundary||window$1(element)),flip&&each(dirs,function(ref,prop){var dir=ref[0],align=ref[1],alignFlip=ref[2];if(!0===flip||includes(flip,dir)){var elemOffset=elAttach[dir]===align?-dim[prop]:elAttach[dir]===alignFlip?dim[prop]:0,targetOffset=targetAttach[dir]===align?targetDim[prop]:targetAttach[dir]===alignFlip?-targetDim[prop]:0;if(position[align]<boundary[align]||position[align]+dim[prop]>boundary[alignFlip]){var centerOffset=dim[prop]/2,centerTargetOffset="center"===targetAttach[dir]?-targetDim[prop]/2:0;"center"===elAttach[dir]&&(apply(centerOffset,centerTargetOffset)||apply(-centerOffset,-centerTargetOffset))||apply(elemOffset,targetOffset)}}function apply(elemOffset,targetOffset){var newVal=position[align]+elemOffset+targetOffset-2*elOffset[dir];if(newVal>=boundary[align]&&newVal+dim[prop]<=boundary[alignFlip])return position[align]=newVal,["element","target"].forEach(function(el){flipped[el][dir]=elemOffset?flipped[el][dir]===dirs[prop][1]?dirs[prop][2]:dirs[prop][1]:flipped[el][dir]}),!0}}),offset(element,position),flipped}function offset(element,coordinates){if(element=toNode(element),!coordinates)return getDimensions(element);var currentOffset=offset(element),pos=css(element,"position");["left","top"].forEach(function(prop){if(prop in coordinates){var value=css(element,prop);css(element,prop,coordinates[prop]-currentOffset[prop]+toFloat("absolute"===pos&&"auto"===value?position(element)[prop]:value))}})}function getDimensions(element){var style,hidden,ref=window$1(element=toNode(element)),top=ref.pageYOffset,left=ref.pageXOffset;if(isWindow(element)){var height=element.innerHeight,width=element.innerWidth;return{top:top,left:left,height:height,width:width,bottom:top+height,right:left+width}}isVisible(element)||(style=attr(element,"style"),hidden=attr(element,"hidden"),attr(element,{style:(style||"")+";display:block !important;",hidden:null}));var rect=element.getBoundingClientRect();return isUndefined(style)||attr(element,{style:style,hidden:hidden}),{height:rect.height,width:rect.width,top:rect.top+top,left:rect.left+left,bottom:rect.bottom+top,right:rect.right+left}}function position(element){var parent=function(element){var parent=toNode(element).offsetParent;for(;parent&&"static"===css(parent,"position");)parent=parent.offsetParent;return parent||docEl(element)}(element=toNode(element)),parentOffset=parent===docEl(element)?{top:0,left:0}:offset(parent),ref=["top","left"].reduce(function(props,prop){var propName$$1=ucfirst(prop);return props[prop]-=parentOffset[prop]+(toFloat(css(element,"margin"+propName$$1))||0)+(toFloat(css(parent,"border"+propName$$1+"Width"))||0),props},offset(element));return{top:ref.top,left:ref.left}}var height=dimension("height"),width=dimension("width");function dimension(prop){var propName$$1=ucfirst(prop);return function(element,value){if(element=toNode(element),isUndefined(value)){if(isWindow(element))return element["inner"+propName$$1];if(isDocument(element)){var doc=element.documentElement;return Math.max(doc["offset"+propName$$1],doc["scroll"+propName$$1])}return(value="auto"===(value=css(element,prop))?element["offset"+propName$$1]:toFloat(value)||0)-boxModelAdjust(prop,element)}css(element,prop,value||0===value?+value+boxModelAdjust(prop,element)+"px":"")}}function boxModelAdjust(prop,element){return"border-box"===css(element,"boxSizing")?dirs[prop].slice(1).map(ucfirst).reduce(function(value,prop){return value+toFloat(css(element,"padding"+prop))+toFloat(css(element,"border"+prop+"Width"))},0):0}function moveTo(position,attach,dim,factor){each(dirs,function(ref,prop){var dir=ref[0],align=ref[1],alignFlip=ref[2];attach[dir]===alignFlip?position[align]+=dim[prop]*factor:"center"===attach[dir]&&(position[align]+=dim[prop]*factor/2)})}function getPos(pos){var x=/left|center|right/,y=/top|center|bottom/;return 1===(pos=(pos||"").split(" ")).length&&(pos=x.test(pos[0])?pos.concat(["center"]):y.test(pos[0])?["center"].concat(pos):["center","center"]),{x:x.test(pos[0])?pos[0]:"center",y:y.test(pos[1])?pos[1]:"center"}}function getOffsets(offsets,width,height){var ref=(offsets||"").split(" "),x=ref[0],y=ref[1];return{x:x?toFloat(x)*(endsWith(x,"%")?width/100:1):0,y:y?toFloat(y)*(endsWith(y,"%")?height/100:1):0}}function flipPosition(pos){switch(pos){case"left":return"right";case"right":return"left";case"top":return"bottom";case"bottom":return"top";default:return pos}}function isInView(element,topOffset,leftOffset,relativeToViewport){if(void 0===topOffset&&(topOffset=0),void 0===leftOffset&&(leftOffset=0),!isVisible(element))return!1;var win=window$1(element=toNode(element));if(relativeToViewport)return intersectRect(element.getBoundingClientRect(),{top:-topOffset,left:-leftOffset,bottom:topOffset+height(win),right:leftOffset+width(win)});var ref=offsetPosition(element),elTop=ref[0],elLeft=ref[1],top=win.pageYOffset,left=win.pageXOffset;return intersectRect({top:elTop,left:elLeft,bottom:elTop+element.offsetHeight,right:elTop+element.offsetWidth},{top:top-topOffset,left:left-leftOffset,bottom:top+topOffset+height(win),right:left+leftOffset+width(win)})}function scrolledOver(element,heightOffset){if(void 0===heightOffset&&(heightOffset=0),!isVisible(element))return 0;var win=window$1(element=toNode(element)),doc=document$1(element),elHeight=element.offsetHeight+heightOffset,top=offsetPosition(element)[0],vp=height(win),vh=vp+Math.min(0,top-vp),diff=Math.max(0,vp-(height(doc)+heightOffset-(top+elHeight)));return clamp((vh+win.pageYOffset-top)/((vh+(elHeight-(diff<vp?diff:0)))/100)/100)}function offsetPosition(element){var offset=[0,0];do{if(offset[0]+=element.offsetTop,offset[1]+=element.offsetLeft,"fixed"===css(element,"position")){var win=window$1(element);return offset[0]+=win.pageYOffset,offset[1]+=win.pageXOffset,offset}}while(element=element.offsetParent);return offset}function window$1(element){return isWindow(element)?element:document$1(element).defaultView}function document$1(element){return toNode(element).ownerDocument}function docEl(element){return document$1(element).documentElement}var isRtl="rtl"===attr(document.documentElement,"dir"),hasTouchEvents="ontouchstart"in window,hasPointerEvents=window.PointerEvent,hasTouch=hasTouchEvents||window.DocumentTouch&&document instanceof DocumentTouch||navigator.maxTouchPoints,pointerDown=hasTouch?"mousedown "+(hasTouchEvents?"touchstart":"pointerdown"):"mousedown",pointerMove=hasTouch?"mousemove "+(hasTouchEvents?"touchmove":"pointermove"):"mousemove",pointerUp=hasTouch?"mouseup "+(hasTouchEvents?"touchend":"pointerup"):"mouseup",pointerEnter=hasTouch&&hasPointerEvents?"pointerenter":"mouseenter",pointerLeave=hasTouch&&hasPointerEvents?"pointerleave":"mouseleave",fastdom={reads:[],writes:[],read:function(task){return this.reads.push(task),scheduleFlush(),task},write:function(task){return this.writes.push(task),scheduleFlush(),task},clear:function(task){return remove$1(this.reads,task)||remove$1(this.writes,task)},flush:function(){runTasks(this.reads),runTasks(this.writes.splice(0,this.writes.length)),this.scheduled=!1,(this.reads.length||this.writes.length)&&scheduleFlush()}};function scheduleFlush(){fastdom.scheduled||(fastdom.scheduled=!0,requestAnimationFrame(fastdom.flush.bind(fastdom)))}function runTasks(tasks){for(var task;task=tasks.shift();)task()}function remove$1(array,item){var index=array.indexOf(item);return!!~index&&!!array.splice(index,1)}function MouseTracker(){}function slope(a,b){return(b.y-a.y)/(b.x-a.x)}MouseTracker.prototype={positions:[],position:null,init:function(){var this$1=this;this.positions=[],this.position=null;var ticking=!1;this.unbind=on(document,"mousemove",function(e){ticking||(setTimeout(function(){var time=Date.now(),length=this$1.positions.length;length&&time-this$1.positions[length-1].time>100&&this$1.positions.splice(0,length),this$1.positions.push({time:time,x:e.pageX,y:e.pageY}),this$1.positions.length>5&&this$1.positions.shift(),ticking=!1},5),ticking=!0)})},cancel:function(){this.unbind&&this.unbind()},movesTo:function(target){if(this.positions.length<2)return!1;var p=offset(target),position$$1=this.positions[this.positions.length-1],prevPos=this.positions[0];if(p.left<=position$$1.x&&position$$1.x<=p.right&&p.top<=position$$1.y&&position$$1.y<=p.bottom)return!1;var points=[[{x:p.left,y:p.top},{x:p.right,y:p.bottom}],[{x:p.right,y:p.top},{x:p.left,y:p.bottom}]];return p.right<=position$$1.x||(p.left>=position$$1.x?(points[0].reverse(),points[1].reverse()):p.bottom<=position$$1.y?points[0].reverse():p.top>=position$$1.y&&points[1].reverse()),!!points.reduce(function(result,point){return result+(slope(prevPos,point[0])<slope(position$$1,point[0])&&slope(prevPos,point[1])>slope(position$$1,point[1]))},0)}};var strats={};function mergeFnData(parentVal,childVal,vm){return strats.computed(isFunction(parentVal)?parentVal.call(vm,vm):parentVal,isFunction(childVal)?childVal.call(vm,vm):childVal)}strats.args=strats.events=strats.init=strats.created=strats.beforeConnect=strats.connected=strats.ready=strats.beforeDisconnect=strats.disconnected=strats.destroy=function(parentVal,childVal){return parentVal=parentVal&&!isArray(parentVal)?[parentVal]:parentVal,childVal?parentVal?parentVal.concat(childVal):isArray(childVal)?childVal:[childVal]:parentVal},strats.update=function(parentVal,childVal){return strats.args(parentVal,isFunction(childVal)?{read:childVal}:childVal)},strats.props=function(parentVal,childVal){return isArray(childVal)&&(childVal=childVal.reduce(function(value,key){return value[key]=String,value},{})),strats.methods(parentVal,childVal)},strats.computed=strats.methods=function(parentVal,childVal){return childVal?parentVal?assign({},parentVal,childVal):childVal:parentVal},strats.data=function(parentVal,childVal,vm){return vm?mergeFnData(parentVal,childVal,vm):childVal?parentVal?function(vm){return mergeFnData(parentVal,childVal,vm)}:childVal:parentVal};var defaultStrat=function(parentVal,childVal){return isUndefined(childVal)?parentVal:childVal};function mergeOptions(parent,child,vm){var options={};if(isFunction(child)&&(child=child.options),child.extends&&(parent=mergeOptions(parent,child.extends,vm)),child.mixins)for(var i=0,l=child.mixins.length;i<l;i++)parent=mergeOptions(parent,child.mixins[i],vm);for(var key in parent)mergeKey(key);for(var key$1 in child)hasOwn(parent,key$1)||mergeKey(key$1);function mergeKey(key){options[key]=(strats[key]||defaultStrat)(parent[key],child[key],vm)}return options}function parseOptions(options,args){var obj;void 0===args&&(args=[]);try{return options?startsWith(options,"{")?JSON.parse(options):args.length&&!includes(options,":")?((obj={})[args[0]]=options,obj):options.split(";").reduce(function(options,option){var ref=option.split(/:(.*)/),key=ref[0],value=ref[1];return key&&!isUndefined(value)&&(options[key.trim()]=value.trim()),options},{}):{}}catch(e){return{}}}var id=0,Player=function(el){this.id=++id,this.el=toNode(el)};function post(el,cmd){try{el.contentWindow.postMessage(JSON.stringify(assign({event:"command"},cmd)),"*")}catch(e){}}Player.prototype.isVideo=function(){return this.isYoutube()||this.isVimeo()||this.isHTML5()},Player.prototype.isHTML5=function(){return"VIDEO"===this.el.tagName},Player.prototype.isIFrame=function(){return"IFRAME"===this.el.tagName},Player.prototype.isYoutube=function(){return this.isIFrame()&&!!this.el.src.match(/\/\/.*?youtube(-nocookie)?\.[a-z]+\/(watch\?v=[^&\s]+|embed)|youtu\.be\/.*/)},Player.prototype.isVimeo=function(){return this.isIFrame()&&!!this.el.src.match(/vimeo\.com\/video\/.*/)},Player.prototype.enableApi=function(){var this$1=this;if(this.ready)return this.ready;var poller,youtube=this.isYoutube(),vimeo=this.isVimeo();return youtube||vimeo?this.ready=new Promise$1(function(resolve){var cb;once(this$1.el,"load",function(){if(youtube){var listener=function(){return post(this$1.el,{event:"listening",id:this$1.id})};poller=setInterval(listener,100),listener()}}),(cb=function(data$$1){return youtube&&data$$1.id===this$1.id&&"onReady"===data$$1.event||vimeo&&Number(data$$1.player_id)===this$1.id},new Promise$1(function(resolve){once(window,"message",function(_,data$$1){return resolve(data$$1)},!1,function(ref){var data$$1=ref.data;if(data$$1&&isString(data$$1)){try{data$$1=JSON.parse(data$$1)}catch(e){return}return data$$1&&cb(data$$1)}})})).then(function(){resolve(),poller&&clearInterval(poller)}),attr(this$1.el,"src",this$1.el.src+(includes(this$1.el.src,"?")?"&":"?")+(youtube?"enablejsapi=1":"api=1&player_id="+this$1.id))}):Promise$1.resolve()},Player.prototype.play=function(){var this$1=this;if(this.isVideo())if(this.isIFrame())this.enableApi().then(function(){return post(this$1.el,{func:"playVideo",method:"play"})});else if(this.isHTML5())try{var promise=this.el.play();promise&&promise.catch(noop)}catch(e){}},Player.prototype.pause=function(){var this$1=this;this.isVideo()&&(this.isIFrame()?this.enableApi().then(function(){return post(this$1.el,{func:"pauseVideo",method:"pause"})}):this.isHTML5()&&this.el.pause())},Player.prototype.mute=function(){var this$1=this;this.isVideo()&&(this.isIFrame()?this.enableApi().then(function(){return post(this$1.el,{func:"mute",method:"setVolume",value:0})}):this.isHTML5()&&(this.el.muted=!0,attr(this.el,"muted","")))};var clickTimeout,swipeTimeout,tapTimeout,clicked,touch={};function cancelAll(){clickTimeout&&clearTimeout(clickTimeout),swipeTimeout&&clearTimeout(swipeTimeout),tapTimeout&&clearTimeout(tapTimeout),clickTimeout=swipeTimeout=tapTimeout=null,touch={}}ready(function(){on(document,"click",function(){return clicked=!0},!0),on(document,pointerDown,function(e){var target=e.target,ref=getPos$1(e),x=ref.x,y=ref.y,now=Date.now(),type=getType(e.type);touch.type&&touch.type!==type||(touch.el="tagName"in target?target:target.parentNode,clickTimeout&&clearTimeout(clickTimeout),touch.x1=x,touch.y1=y,touch.last&&now-touch.last<=250&&(touch={}),touch.type=type,touch.last=now,clicked=e.button>0)}),on(document,pointerMove,function(e){if(!e.defaultPrevented){var ref=getPos$1(e),x=ref.x,y=ref.y;touch.x2=x,touch.y2=y}}),on(document,pointerUp,function(ref){var type=ref.type,target=ref.target;touch.type===getType(type)&&(touch.x2&&Math.abs(touch.x1-touch.x2)>30||touch.y2&&Math.abs(touch.y1-touch.y2)>30?swipeTimeout=setTimeout(function(){var ref,x1,x2,y1,y2;touch.el&&(trigger(touch.el,"swipe"),trigger(touch.el,"swipe"+(x1=(ref=touch).x1,x2=ref.x2,y1=ref.y1,y2=ref.y2,Math.abs(x1-x2)>=Math.abs(y1-y2)?x1-x2>0?"Left":"Right":y1-y2>0?"Up":"Down"))),touch={}}):"last"in touch?(tapTimeout=setTimeout(function(){return trigger(touch.el,"tap")}),touch.el&&"mouseup"!==type&&within(target,touch.el)&&(clickTimeout=setTimeout(function(){clickTimeout=null,touch.el&&!clicked&&trigger(touch.el,"click"),touch={}},350))):touch={})}),on(document,"touchcancel",cancelAll),on(window,"scroll",cancelAll)});var touching=!1;function isTouch(e){return touching||"touch"===e.pointerType}function getPos$1(e){var touches=e.touches,changedTouches=e.changedTouches,ref=touches&&touches[0]||changedTouches&&changedTouches[0]||e;return{x:ref.pageX,y:ref.pageY}}function getType(type){return type.slice(0,5)}function getComponentName(attribute){return!(!startsWith(attribute,"uk-")&&!startsWith(attribute,"data-uk-"))&&camelize(attribute.replace("data-uk-","").replace("uk-",""))}on(document,"touchstart",function(){return touching=!0},!0),on(document,"click",function(){touching=!1}),on(document,"touchcancel",function(){return touching=!1},!0);var UIkit=function(options){this._init(options)};UIkit.util=Object.freeze({ajax:ajax,getImage:getImage,transition:transition,Transition:Transition,animate:animate,Animation:Animation,attr:attr,hasAttr:hasAttr,removeAttr:removeAttr,filterAttr:filterAttr,data:data,addClass:addClass,removeClass:removeClass,removeClasses:removeClasses,replaceClass:replaceClass,hasClass:hasClass,toggleClass:toggleClass,$:$,$$:$$,positionAt:positionAt,offset:offset,position:position,height:height,width:width,flipPosition:flipPosition,isInView:isInView,scrolledOver:scrolledOver,isReady:isReady,ready:ready,index:index,getIndex:getIndex,empty:empty,html:html,prepend:function(parent,element){return(parent=toNode(parent)).hasChildNodes()?insertNodes(element,function(element){return parent.insertBefore(element,parent.firstChild)}):append(parent,element)},append:append,before:before,after:after,remove:remove,wrapAll:wrapAll,wrapInner:wrapInner,unwrap:unwrap,fragment:fragment,apply:apply,isRtl:isRtl,hasTouch:hasTouch,pointerDown:pointerDown,pointerMove:pointerMove,pointerUp:pointerUp,pointerEnter:pointerEnter,pointerLeave:pointerLeave,on:on,off:off,once:once,trigger:trigger,createEvent:createEvent,toEventTargets:toEventTargets,preventClick:preventClick,fastdom:fastdom,isVoidElement:isVoidElement,isVisible:isVisible,selInput:selInput,isInput:isInput,filter:filter,within:within,bind:bind,hasOwn:hasOwn,hyphenate:hyphenate,camelize:camelize,ucfirst:ucfirst,startsWith:startsWith,endsWith:endsWith,includes:includes,isArray:isArray,isFunction:isFunction,isObject:isObject,isPlainObject:isPlainObject,isWindow:isWindow,isDocument:isDocument,isJQuery:isJQuery,isNode:isNode,isNodeCollection:isNodeCollection,isBoolean:isBoolean,isString:isString,isNumber:isNumber,isNumeric:isNumeric,isUndefined:isUndefined,toBoolean:toBoolean,toNumber:toNumber,toFloat:toFloat,toNode:toNode,toNodes:toNodes,toList:toList,toMs:toMs,swap:swap,assign:assign,each:each,sortBy:sortBy,clamp:clamp,noop:noop,intersectRect:intersectRect,pointInRect:pointInRect,Dimensions:Dimensions,MouseTracker:MouseTracker,mergeOptions:mergeOptions,parseOptions:parseOptions,Player:Player,Promise:Promise$1,Deferred:Deferred,query:query,queryAll:queryAll,find:find,findAll:findAll,matches:matches,closest:closest,parents:parents,escape:escape,css:css,getStyles:getStyles,getStyle:getStyle,getCssVar:getCssVar,propName:propName,isTouch:isTouch,getPos:getPos$1}),UIkit.data="__uikit__",UIkit.prefix="uk-",UIkit.options={},function(UIkit){var container,DATA=UIkit.data;function update(data$$1,e){if(data$$1)for(var name in data$$1)data$$1[name]._isReady&&data$$1[name]._callUpdate(e)}UIkit.use=function(plugin){if(!plugin.installed)return plugin.call(null,this),plugin.installed=!0,this},UIkit.mixin=function(mixin,component){component=(isString(component)?UIkit.component(component):component)||this,(mixin=mergeOptions({},mixin)).mixins=component.options.mixins,delete component.options.mixins,component.options=mergeOptions(mixin,component.options)},UIkit.extend=function(options){options=options||{};var Sub=function(options){this._init(options)};return(Sub.prototype=Object.create(this.prototype)).constructor=Sub,Sub.options=mergeOptions(this.options,options),Sub.super=this,Sub.extend=this.extend,Sub},UIkit.update=function(element,e){e=createEvent(e||"update"),function(element){for(var path=[];element&&element!==document.body&&element.parentNode;)element=element.parentNode,path.unshift(element);return path}(element=element?toNode(element):document.body).map(function(element){return update(element[DATA],e)}),apply(element,function(element){return update(element[DATA],e)})},Object.defineProperty(UIkit,"container",{get:function(){return container||document.body},set:function(element){container=$(element)}})}(UIkit),function(UIkit){UIkit.prototype._callHook=function(hook){var this$1=this,handlers=this.$options[hook];handlers&&handlers.forEach(function(handler){return handler.call(this$1)})},UIkit.prototype._callConnected=function(){var this$1=this;this._connected||(this._data={},this._initProps(),this._callHook("beforeConnect"),this._connected=!0,this._initEvents(),this._initObserver(),this._callHook("connected"),this._isReady||ready(function(){return this$1._callReady()}),this._callUpdate())},UIkit.prototype._callDisconnected=function(){this._connected&&(this._callHook("beforeDisconnect"),this._observer&&(this._observer.disconnect(),this._observer=null),this._unbindEvents(),this._callHook("disconnected"),this._connected=!1)},UIkit.prototype._callReady=function(){this._isReady||(this._isReady=!0,this._callHook("ready"),this._resetComputeds(),this._callUpdate())},UIkit.prototype._callUpdate=function(e){var this$1=this,type=(e=createEvent(e||"update")).type;includes(["update","load","resize"],type)&&this._resetComputeds();var updates=this.$options.update,ref=this._frames,reads=ref.reads,writes=ref.writes;updates&&updates.forEach(function(ref,i){var read=ref.read,write=ref.write,events=ref.events;("update"===type||includes(events,type))&&(read&&!includes(fastdom.reads,reads[i])&&(reads[i]=fastdom.read(function(){var result=this$1._connected&&read.call(this$1,this$1._data,e);!1===result&&write?(fastdom.clear(writes[i]),delete writes[i]):isPlainObject(result)&&assign(this$1._data,result),delete reads[i]})),write&&!includes(fastdom.writes,writes[i])&&(writes[i]=fastdom.write(function(){this$1._connected&&write.call(this$1,this$1._data,e),delete writes[i]})))})}}(UIkit),function(UIkit){var uid=0;function getProps(opts,name){var data$$1={},args=opts.args;void 0===args&&(args=[]);var props=opts.props;void 0===props&&(props={});var el=opts.el;if(!props)return data$$1;for(var key in props){var prop=hyphenate(key);if(hasAttr(el,prop)){var value=coerce(props[key],attr(el,prop));if("target"===prop&&(!value||startsWith(value,"_")))continue;data$$1[key]=value}}var options=parseOptions(data(el,name),args);for(var key$1 in options){var prop$1=camelize(key$1);void 0!==props[prop$1]&&(data$$1[prop$1]=coerce(props[prop$1],options[key$1]))}return data$$1}function registerComputed(component,key,cb){Object.defineProperty(component,key,{enumerable:!0,get:function(){var _computeds=component._computeds,$props=component.$props,$el=component.$el;return hasOwn(_computeds,key)||(_computeds[key]=cb.call(component,$props,$el)),_computeds[key]},set:function(value){component._computeds[key]=value}})}function registerEvent(component,event,key){isPlainObject(event)||(event={name:key,handler:event});var listener,name=event.name,el=event.el,handler=event.handler,capture=event.capture,delegate=event.delegate,filter$$1=event.filter,self=event.self;el=isFunction(el)?el.call(component):el||component.$el,isArray(el)?el.forEach(function(el){return registerEvent(component,assign({},event,{el:el}),key)}):!el||filter$$1&&!filter$$1.call(component)||(listener=isString(handler)?component[handler]:bind(handler,component),handler=function(e){return isArray(e.detail)?listener.apply(void 0,[e].concat(e.detail)):listener(e)},self&&(handler=function(handler){return function(e){if(e.target===e.currentTarget||e.target===e.current)return handler.call(null,e)}}(handler)),component._events.push(on(el,name,delegate?isString(delegate)?delegate:delegate.call(component):null,handler,capture)))}function notIn(options,key){return options.every(function(arr){return!arr||!hasOwn(arr,key)})}function coerce(type,value){return type===Boolean?toBoolean(value):type===Number?toNumber(value):"list"===type?toList(value):"media"===type?function(value){if(isString(value))if("@"===value[0]){var name="media-"+value.substr(1);value=toFloat(getCssVar(name))}else if(isNaN(value))return value;return!(!value||isNaN(value))&&"(min-width: "+value+"px)"}(value):type?type(value):value}UIkit.prototype._init=function(options){(options=options||{}).data=function(ref,ref$1){var data$$1=ref.data,args=(ref.el,ref$1.args),props=ref$1.props;if(void 0===props&&(props={}),data$$1=isArray(data$$1)?args&&args.length?data$$1.slice(0,args.length).reduce(function(data$$1,value,index$$1){return isPlainObject(value)?assign(data$$1,value):data$$1[args[index$$1]]=value,data$$1},{}):void 0:data$$1)for(var key in data$$1)isUndefined(data$$1[key])?delete data$$1[key]:data$$1[key]=props[key]?coerce(props[key],data$$1[key]):data$$1[key];return data$$1}(options,this.constructor.options),this.$options=mergeOptions(this.constructor.options,options,this),this.$el=null,this.$props={},this._frames={reads:{},writes:{}},this._events=[],this._uid=uid++,this._initData(),this._initMethods(),this._initComputeds(),this._callHook("created"),options.el&&this.$mount(options.el)},UIkit.prototype._initData=function(){var data$$1=this.$options.data;for(var key in void 0===data$$1&&(data$$1={}),data$$1)this.$props[key]=this[key]=data$$1[key]},UIkit.prototype._initMethods=function(){var methods=this.$options.methods;if(methods)for(var key in methods)this[key]=bind(methods[key],this)},UIkit.prototype._initComputeds=function(){var computed=this.$options.computed;if(this._resetComputeds(),computed)for(var key in computed)registerComputed(this,key,computed[key])},UIkit.prototype._resetComputeds=function(){this._computeds={}},UIkit.prototype._initProps=function(props){var key;for(key in this._resetComputeds(),props=props||getProps(this.$options,this.$name))isUndefined(props[key])||(this.$props[key]=props[key]);var exclude=[this.$options.computed,this.$options.methods];for(key in this.$props)key in props&&notIn(exclude,key)&&(this[key]=this.$props[key])},UIkit.prototype._initEvents=function(){var this$1=this,events=this.$options.events;events&&events.forEach(function(event){if(hasOwn(event,"handler"))registerEvent(this$1,event);else for(var key in event)registerEvent(this$1,event[key],key)})},UIkit.prototype._unbindEvents=function(){this._events.forEach(function(unbind){return unbind()}),this._events=[]},UIkit.prototype._initObserver=function(){var this$1=this,ref=this.$options,attrs=ref.attrs,props=ref.props,el=ref.el;!this._observer&&props&&attrs&&(attrs=isArray(attrs)?attrs:Object.keys(props).map(function(key){return hyphenate(key)}),this._observer=new MutationObserver(function(){var data$$1=getProps(this$1.$options,this$1.$name);attrs.some(function(key){return!isUndefined(data$$1[key])&&data$$1[key]!==this$1.$props[key]})&&this$1.$reset()}),this._observer.observe(el,{attributes:!0,attributeFilter:attrs.concat([this.$name,"data-"+this.$name])}))}}(UIkit),function(UIkit){var DATA=UIkit.data,components={};UIkit.component=function(name,options){if(!options)return isPlainObject(components[name])&&(components[name]=UIkit.extend(components[name])),components[name];UIkit[name]=function(element,data$$1){for(var i=arguments.length,argsArray=Array(i);i--;)argsArray[i]=arguments[i];var component=UIkit.component(name);return isPlainObject(element)?new component({data:element}):component.options.functional?new component({data:[].concat(argsArray)}):element&&element.nodeType?init(element):$$(element).map(init)[0];function init(element){var instance=UIkit.getComponent(element,name);if(instance){if(!data$$1)return instance;instance.$destroy()}return new component({el:element,data:data$$1})}};var opt=isPlainObject(options)?assign({},options):options.options;if(opt.name=name,opt.install&&opt.install(UIkit,opt,name),UIkit._initialized&&!opt.functional){var id=hyphenate(name);fastdom.read(function(){return UIkit[name]("[uk-"+id+"],[data-uk-"+id+"]")})}return components[name]=isPlainObject(options)?opt:options},UIkit.getComponents=function(element){return element&&element[DATA]||{}},UIkit.getComponent=function(element,name){return UIkit.getComponents(element)[name]},UIkit.connect=function(node){if(node[DATA])for(var name in node[DATA])node[DATA][name]._callConnected();for(var i=0;i<node.attributes.length;i++){var name$1=getComponentName(node.attributes[i].name);name$1&&name$1 in components&&UIkit[name$1](node)}},UIkit.disconnect=function(node){for(var name in node[DATA])node[DATA][name]._callDisconnected()}}(UIkit),function(UIkit){var DATA=UIkit.data;UIkit.prototype.$mount=function(el){var name=this.$options.name;el[DATA]||(el[DATA]={}),el[DATA][name]||(el[DATA][name]=this,this.$el=this.$options.el=this.$options.el||el,this._callHook("init"),within(el,document)&&this._callConnected())},UIkit.prototype.$emit=function(e){this._callUpdate(e)},UIkit.prototype.$reset=function(){this._callDisconnected(),this._callConnected()},UIkit.prototype.$destroy=function(removeEl){void 0===removeEl&&(removeEl=!1);var ref=this.$options,el=ref.el,name=ref.name;el&&this._callDisconnected(),this._callHook("destroy"),el&&el[DATA]&&(delete el[DATA][name],Object.keys(el[DATA]).length||delete el[DATA],removeEl&&remove(this.$el))},UIkit.prototype.$create=function(component,element,data$$1){return UIkit[component](element,data$$1)},UIkit.prototype.$update=UIkit.update,UIkit.prototype.$getComponent=UIkit.getComponent;var names={};Object.defineProperties(UIkit.prototype,{$container:Object.getOwnPropertyDescriptor(UIkit,"container"),$name:{get:function(){var name=this.$options.name;return names[name]||(names[name]=UIkit.prefix+hyphenate(name)),names[name]}}})}(UIkit);var Class={connected:function(){addClass(this.$el,this.$name)}},Togglable={props:{cls:Boolean,animation:"list",duration:Number,origin:String,transition:String,queued:Boolean},data:{cls:!1,animation:[!1],duration:200,origin:!1,transition:"linear",queued:!1,initProps:{overflow:"",height:"",paddingTop:"",paddingBottom:"",marginTop:"",marginBottom:""},hideProps:{overflow:"hidden",height:0,paddingTop:0,paddingBottom:0,marginTop:0,marginBottom:0}},computed:{hasAnimation:function(ref){return!!ref.animation[0]},hasTransition:function(ref){var animation=ref.animation;return this.hasAnimation&&!0===animation[0]}},methods:{toggleElement:function(targets,show,animate$$1){var this$1=this;return new Promise$1(function(resolve){var p,all=function(targets){return Promise$1.all(targets.map(function(el){return this$1._toggleElement(el,show,animate$$1)}))},toggled=(targets=toNodes(targets)).filter(function(el){return this$1.isToggled(el)}),untoggled=targets.filter(function(el){return!includes(toggled,el)});if(this$1.queued&&isUndefined(animate$$1)&&isUndefined(show)&&this$1.hasAnimation&&!(targets.length<2)){var body=document.body,scroll=body.scrollTop,el=toggled[0],inProgress=Animation.inProgress(el)&&hasClass(el,"uk-animation-leave")||Transition.inProgress(el)&&"0px"===el.style.height;p=all(toggled),inProgress||(p=p.then(function(){var p=all(untoggled);return body.scrollTop=scroll,p}))}else p=all(untoggled.concat(toggled));p.then(resolve,noop)})},toggleNow:function(targets,show){var this$1=this;return new Promise$1(function(resolve){return Promise$1.all(toNodes(targets).map(function(el){return this$1._toggleElement(el,show,!1)})).then(resolve,noop)})},isToggled:function(el){var nodes=toNodes(el||this.$el);return this.cls?hasClass(nodes,this.cls.split(" ")[0]):!hasAttr(nodes,"hidden")},updateAria:function(el){!1===this.cls&&attr(el,"aria-hidden",!this.isToggled(el))},_toggleElement:function(el,show,animate$$1){var this$1=this;if(show=isBoolean(show)?show:Animation.inProgress(el)?hasClass(el,"uk-animation-leave"):Transition.inProgress(el)?"0px"===el.style.height:!this.isToggled(el),!trigger(el,"before"+(show?"show":"hide"),[this]))return Promise$1.reject();var promise=(!1!==animate$$1&&this.hasAnimation?this.hasTransition?this._toggleHeight:this._toggleAnimation:this._toggleImmediate)(el,show);return trigger(el,show?"show":"hide",[this]),promise.then(function(){trigger(el,show?"shown":"hidden",[this$1]),this$1.$update(el)})},_toggle:function(el,toggled){var changed;el&&(this.cls?(changed=includes(this.cls," ")||Boolean(toggled)!==hasClass(el,this.cls))&&toggleClass(el,this.cls,includes(this.cls," ")?void 0:toggled):(changed=Boolean(toggled)===hasAttr(el,"hidden"))&&attr(el,"hidden",toggled?null:""),$$("[autofocus]",el).some(function(el){return isVisible(el)&&(el.focus()||!0)}),this.updateAria(el),changed&&this.$update(el))},_toggleImmediate:function(el,show){return this._toggle(el,show),Promise$1.resolve()},_toggleHeight:function(el,show){var this$1=this,inProgress=Transition.inProgress(el),inner=el.hasChildNodes?toFloat(css(el.firstElementChild,"marginTop"))+toFloat(css(el.lastElementChild,"marginBottom")):0,currentHeight=isVisible(el)?height(el)+(inProgress?0:inner):0;Transition.cancel(el),this.isToggled(el)||this._toggle(el,!0),height(el,""),fastdom.flush();var endHeight=height(el)+(inProgress?0:inner);return height(el,currentHeight),(show?Transition.start(el,assign({},this.initProps,{overflow:"hidden",height:endHeight}),Math.round(this.duration*(1-currentHeight/endHeight)),this.transition):Transition.start(el,this.hideProps,Math.round(this.duration*(currentHeight/endHeight)),this.transition).then(function(){return this$1._toggle(el,!1)})).then(function(){return css(el,this$1.initProps)})},_toggleAnimation:function(el,show){var this$1=this;return Animation.cancel(el),show?(this._toggle(el,!0),Animation.in(el,this.animation[0],this.duration,this.origin)):Animation.out(el,this.animation[1]||this.animation[0],this.duration,this.origin).then(function(){return this$1._toggle(el,!1)})}}},Accordion={mixins:[Class,Togglable],props:{targets:String,active:null,collapsible:Boolean,multiple:Boolean,toggle:String,content:String,transition:String},data:{targets:"> *",active:!1,animation:[!0],collapsible:!0,multiple:!1,clsOpen:"uk-open",toggle:"> .uk-accordion-title",content:"> .uk-accordion-content",transition:"ease"},computed:{items:function(ref,$el){return $$(ref.targets,$el)}},events:[{name:"click",delegate:function(){return this.targets+" "+this.$props.toggle},handler:function(e){e.preventDefault(),this.toggle(index($$(this.targets+" "+this.$props.toggle,this.$el),e.current))}}],connected:function(){if(!1!==this.active){var active=this.items[Number(this.active)];active&&!hasClass(active,this.clsOpen)&&this.toggle(active,!1)}},update:function(){var this$1=this;this.items.forEach(function(el){return this$1._toggleImmediate($(this$1.content,el),hasClass(el,this$1.clsOpen))});var active=!this.collapsible&&!hasClass(this.items,this.clsOpen)&&this.items[0];active&&this.toggle(active,!1)},methods:{toggle:function(item,animate$$1){var this$1=this,index$$1=getIndex(item,this.items),active=filter(this.items,"."+this.clsOpen);(item=this.items[index$$1])&&[item].concat(!this.multiple&&!includes(active,item)&&active||[]).forEach(function(el){var isItem=el===item,state=isItem&&!hasClass(el,this$1.clsOpen);if(state||!isItem||this$1.collapsible||!(active.length<2)){toggleClass(el,this$1.clsOpen,state);var content=el._wrapper?el._wrapper.firstElementChild:$(this$1.content,el);el._wrapper||(el._wrapper=wrapAll(content,"<div>"),attr(el._wrapper,"hidden",state?"":null)),this$1._toggleImmediate(content,!0),this$1.toggleElement(el._wrapper,state,animate$$1).then(function(){hasClass(el,this$1.clsOpen)===state&&(state||this$1._toggleImmediate(content,!1),el._wrapper=null,unwrap(content))})}})}}},Alert={attrs:!0,mixins:[Class,Togglable],args:"animation",props:{close:String},data:{animation:[!0],selClose:".uk-alert-close",duration:150,hideProps:assign({opacity:0},Togglable.data.hideProps)},events:[{name:"click",delegate:function(){return this.selClose},handler:function(e){e.preventDefault(),this.close()}}],methods:{close:function(){var this$1=this;this.toggleElement(this.$el).then(function(){return this$1.$destroy(!0)})}}};function Core(UIkit){ready(function(){var scroll=0,started=0;if(on(window,"load resize",function(e){return UIkit.update(null,e)}),on(window,"scroll",function(e){e.dir=scroll<=window.pageYOffset?"down":"up",e.pageYOffset=scroll=window.pageYOffset,UIkit.update(null,e)},{capture:!0,passive:!1}),on(document,"animationstart",function(ref){var target=ref.target;(css(target,"animationName")||"").match(/^uk-.*(left|right)/)&&(started++,css(document.body,"overflowX","hidden"),setTimeout(function(){--started||css(document.body,"overflowX","")},toMs(css(target,"animationDuration"))+100))},!0),hasTouch){var cls="uk-hover";on(document,"tap",function(ref){var target=ref.target;return $$("."+cls).forEach(function(el){return!within(target,el)&&removeClass(el,cls)})}),Object.defineProperty(UIkit,"hoverSelector",{set:function(selector){on(document,"tap",selector,function(ref){return addClass(ref.current,cls)})}}),UIkit.hoverSelector=".uk-animation-toggle, .uk-transition-toggle, [uk-hover]"}})}var active,registered,Video={args:"autoplay",props:{automute:Boolean,autoplay:Boolean},data:{automute:!1,autoplay:!0},computed:{inView:function(ref){return"inview"===ref.autoplay}},connected:function(){this.inView&&!hasAttr(this.$el,"preload")&&(this.$el.preload="none")},ready:function(){this.player=new Player(this.$el),this.automute&&this.player.mute()},update:[{read:function(_,ref){var type=ref.type;return!(!this.player||!("scroll"!==type&&"resize"!==type||this.inView))&&{visible:isVisible(this.$el)&&"hidden"!==css(this.$el,"visibility"),inView:this.inView&&isInView(this.$el)}},write:function(ref){var visible=ref.visible,inView=ref.inView;!visible||this.inView&&!inView?this.player.pause():(!0===this.autoplay||this.inView&&inView)&&this.player.play()},events:["load","resize","scroll"]}]},Cover={mixins:[Class,Video],props:{width:Number,height:Number},data:{automute:!0},update:{write:function(){var el=this.$el;if(isVisible(el)){var ref=el.parentNode,height$$1=ref.offsetHeight,width$$1=ref.offsetWidth;css(css(el,{width:"",height:""}),Dimensions.cover({width:this.width||el.clientWidth,height:this.height||el.clientHeight},{width:width$$1+(width$$1%2?1:0),height:height$$1+(height$$1%2?1:0)}))}},events:["load","resize"]},events:{loadedmetadata:function(){this.$emit()}}},Position={props:{pos:String,offset:null,flip:Boolean,clsPos:String},data:{pos:"bottom-"+(isRtl?"right":"left"),flip:!0,offset:!1,clsPos:""},computed:{pos:function(ref){var pos=ref.pos;return(pos+(includes(pos,"-")?"":"-center")).split("-")},dir:function(){return this.pos[0]},align:function(){return this.pos[1]}},methods:{positionAt:function(element,target,boundary){var node;removeClasses(element,this.clsPos+"-(top|bottom|left|right)(-[a-z]+)?"),css(element,{top:"",left:""});var offset$$1=this.offset;offset$$1=isNumeric(offset$$1)?offset$$1:(node=$(offset$$1))?offset(node)["x"===axis?"left":"top"]-offset(target)["x"===axis?"right":"bottom"]:0;var axis=this.getAxis(),ref$1=positionAt(element,target,"x"===axis?flipPosition(this.dir)+" "+this.align:this.align+" "+flipPosition(this.dir),"x"===axis?this.dir+" "+this.align:this.align+" "+this.dir,"x"===axis?""+("left"===this.dir?-offset$$1:offset$$1):" "+("top"===this.dir?-offset$$1:offset$$1),null,this.flip,boundary).target,x=ref$1.x,y=ref$1.y;this.dir="x"===axis?x:y,this.align="x"===axis?y:x,toggleClass(element,this.clsPos+"-"+this.dir+"-"+this.align,!1===this.offset)},getAxis:function(){return"top"===this.dir||"bottom"===this.dir?"y":"x"}}},Drop={mixins:[Position,Togglable],args:"pos",props:{mode:"list",toggle:Boolean,boundary:Boolean,boundaryAlign:Boolean,delayShow:Number,delayHide:Number,clsDrop:String},data:{mode:["click","hover"],toggle:"- *",boundary:window,boundaryAlign:!1,delayShow:0,delayHide:800,clsDrop:!1,hoverIdle:200,animation:["uk-animation-fade"],cls:"uk-open"},computed:{boundary:function(ref,$el){return query(ref.boundary,$el)},clsDrop:function(ref){return ref.clsDrop||"uk-"+this.$options.name},clsPos:function(){return this.clsDrop}},init:function(){this.tracker=new MouseTracker},connected:function(){addClass(this.$el,this.clsDrop);var toggle=this.$props.toggle;this.toggle=toggle&&this.$create("toggle",query(toggle,this.$el),{target:this.$el,mode:this.mode}),this.updateAria(this.$el)},events:[{name:"click",delegate:function(){return"."+this.clsDrop+"-close"},handler:function(e){e.preventDefault(),this.hide(!1)}},{name:"click",delegate:function(){return'a[href^="#"]'},handler:function(e){if(!e.defaultPrevented){var id=e.target.hash;id||e.preventDefault(),id&&within(id,this.$el)||this.hide(!1)}}},{name:"beforescroll",handler:function(){this.hide(!1)}},{name:"toggle",self:!0,handler:function(e,toggle){e.preventDefault(),this.isToggled()?this.hide(!1):this.show(toggle,!1)}},{name:pointerEnter,filter:function(){return includes(this.mode,"hover")},handler:function(e){isTouch(e)||(active&&active!==this&&active.toggle&&includes(active.toggle.mode,"hover")&&!within(e.target,active.toggle.$el)&&!pointInRect({x:e.pageX,y:e.pageY},offset(active.$el))&&active.hide(!1),e.preventDefault(),this.show(this.toggle))}},{name:"toggleshow",handler:function(e,toggle){toggle&&!includes(toggle.target,this.$el)||(e.preventDefault(),this.show(toggle||this.toggle))}},{name:"togglehide "+pointerLeave,handler:function(e,toggle){isTouch(e)||toggle&&!includes(toggle.target,this.$el)||(e.preventDefault(),this.toggle&&includes(this.toggle.mode,"hover")&&this.hide())}},{name:"beforeshow",self:!0,handler:function(){this.clearTimers(),Animation.cancel(this.$el),this.position()}},{name:"show",self:!0,handler:function(){this.tracker.init(),this.toggle&&(addClass(this.toggle.$el,this.cls),attr(this.toggle.$el,"aria-expanded","true")),function(){if(registered)return;registered=!0,on(document,"click",function(ref){var prev,target=ref.target,defaultPrevented=ref.defaultPrevented;if(!defaultPrevented)for(;active&&active!==prev&&!within(target,active.$el)&&(!active.toggle||!within(target,active.toggle.$el));)prev=active,active.hide(!1)})}()}},{name:"beforehide",self:!0,handler:function(){this.clearTimers()}},{name:"hide",handler:function(ref){var target=ref.target;this.$el===target?(active=this.isActive()?null:active,this.toggle&&(removeClass(this.toggle.$el,this.cls),attr(this.toggle.$el,"aria-expanded","false"),this.toggle.$el.blur(),$$("a, button",this.toggle.$el).forEach(function(el){return el.blur()})),this.tracker.cancel()):active=null===active&&within(target,this.$el)&&this.isToggled()?this:active}}],update:{write:function(){this.isToggled()&&!Animation.inProgress(this.$el)&&this.position()},events:["resize"]},methods:{show:function(toggle,delay){var this$1=this;void 0===delay&&(delay=!0);var show=function(){return!this$1.isToggled()&&this$1.toggleElement(this$1.$el,!0)},tryShow=function(){if(this$1.toggle=toggle||this$1.toggle,this$1.clearTimers(),!this$1.isActive())if(delay&&active&&active!==this$1&&active.isDelaying)this$1.showTimer=setTimeout(this$1.show,10);else{if(this$1.isParentOf(active)){if(!active.hideTimer)return;active.hide(!1)}else if(active&&!this$1.isChildOf(active)&&!this$1.isParentOf(active))for(var prev;active&&active!==prev&&!this$1.isChildOf(active);)prev=active,active.hide(!1);delay&&this$1.delayShow?this$1.showTimer=setTimeout(show,this$1.delayShow):show(),active=this$1}};toggle&&this.toggle&&toggle.$el!==this.toggle.$el?(once(this.$el,"hide",tryShow),this.hide(!1)):tryShow()},hide:function(delay){var this$1=this;void 0===delay&&(delay=!0);var hide=function(){return this$1.toggleNow(this$1.$el,!1)};this.clearTimers(),this.isDelaying=this.tracker.movesTo(this.$el),delay&&this.isDelaying?this.hideTimer=setTimeout(this.hide,this.hoverIdle):delay&&this.delayHide?this.hideTimer=setTimeout(hide,this.delayHide):hide()},clearTimers:function(){clearTimeout(this.showTimer),clearTimeout(this.hideTimer),this.showTimer=null,this.hideTimer=null,this.isDelaying=!1},isActive:function(){return active===this},isChildOf:function(drop){return drop&&drop!==this&&within(this.$el,drop.$el)},isParentOf:function(drop){return drop&&drop!==this&&within(drop.$el,this.$el)},position:function(){removeClasses(this.$el,this.clsDrop+"-(stack|boundary)"),css(this.$el,{top:"",left:"",display:"block"}),toggleClass(this.$el,this.clsDrop+"-boundary",this.boundaryAlign);var boundary=offset(this.boundary),alignTo=this.boundaryAlign?boundary:offset(this.toggle.$el);if("justify"===this.align){var prop="y"===this.getAxis()?"width":"height";css(this.$el,prop,alignTo[prop])}else this.$el.offsetWidth>Math.max(boundary.right-alignTo.left,alignTo.right-boundary.left)&&addClass(this.$el,this.clsDrop+"-stack");this.positionAt(this.$el,this.boundaryAlign?this.boundary:this.toggle.$el,this.boundary),css(this.$el,"display","")}}};var Dropdown={extends:Drop},FormCustom={mixins:[Class],args:"target",props:{target:Boolean},data:{target:!1},computed:{input:function(_,$el){return $(selInput,$el)},state:function(){return this.input.nextElementSibling},target:function(ref,$el){var target=ref.target;return target&&(!0===target&&this.input.parentNode===$el&&this.input.nextElementSibling||query(target,$el))}},update:function(){var target=this.target,input=this.input;if(target){var option,prop=isInput(target)?"value":"textContent",prev=target[prop],value=input.files&&input.files[0]?input.files[0].name:matches(input,"select")&&(option=$$("option",input).filter(function(el){return el.selected})[0])?option.textContent:input.value;prev!==value&&(target[prop]=value)}},events:[{name:"focusin focusout mouseenter mouseleave",delegate:selInput,handler:function(ref){var type=ref.type;ref.current===this.input&&toggleClass(this.state,"uk-"+(includes(type,"focus")?"focus":"hover"),includes(["focusin","mouseenter"],type))}},{name:"change",handler:function(){this.$emit()}}]},Gif={update:{read:function(data$$1){var inview=isInView(this.$el);if(!inview||data$$1.isInView===inview)return!1;data$$1.isInView=inview},write:function(){this.$el.src=this.$el.src},events:["scroll","load","resize"]}},Margin={props:{margin:String,firstColumn:Boolean},data:{margin:"uk-margin-small-top",firstColumn:"uk-first-column"},update:{read:function(data$$1){var items=this.$el.children;if(!items.length||!isVisible(this.$el))return data$$1.rows=[[]];data$$1.rows=getRows(items),data$$1.stacks=!data$$1.rows.some(function(row){return row.length>1})},write:function(ref){var this$1=this;ref.rows.forEach(function(row,i){return row.forEach(function(el,j){toggleClass(el,this$1.margin,0!==i),toggleClass(el,this$1.firstColumn,0===j)})})},events:["load","resize"]}};function getRows(items){for(var rows=[[]],i=0;i<items.length;i++){var el=items[i],dim=getOffset(el);if(dim.height)for(var j=rows.length-1;j>=0;j--){var row=rows[j];if(!row[0]){row.push(el);break}var leftDim=getOffset(row[0]);if(dim.top>=leftDim.bottom-1){rows.push([el]);break}if(dim.bottom>leftDim.top){if(dim.left<leftDim.left&&!isRtl){row.unshift(el);break}row.push(el);break}if(0===j){rows.unshift([el]);break}}}return rows}function getOffset(element){var offsetTop=element.offsetTop,offsetLeft=element.offsetLeft,offsetHeight=element.offsetHeight;return{top:offsetTop,left:offsetLeft,height:offsetHeight,bottom:offsetTop+offsetHeight}}var Grid={extends:Margin,mixins:[Class],attrs:!0,name:"grid",props:{masonry:Boolean,parallax:Number},data:{margin:"uk-grid-margin",clsStack:"uk-grid-stack",masonry:!1,parallax:0},computed:{parallax:function(ref){var parallax=ref.parallax;return Math.abs(parallax)}},connected:function(){this.masonry&&addClass(this.$el,"uk-flex-top uk-flex-wrap-top")},update:[{read:function(ref){var rows=ref.rows;(this.masonry||this.parallax)&&(rows=rows.map(function(elements){return sortBy(elements,"offsetLeft")}));var root,cls,nodes,node,translates=!1,elHeight=!1;if(this.masonry){var height$$1=0;translates=rows.reduce(function(translates,row,i){return translates[i]=row.map(function(_,j){return 0===i?0:toFloat(translates[i-1][j])+(height$$1-toFloat(rows[i-1][j]&&rows[i-1][j].offsetHeight))}),height$$1=row.reduce(function(height$$1,el){return Math.max(height$$1,el.offsetHeight)},0),translates},[]),elHeight=function(rows){return Math.max.apply(Math,rows.reduce(function(sum,row){return row.forEach(function(el,i){return sum[i]=(sum[i]||0)+el.offsetHeight}),sum},[]))}(rows)+(root=this.$el,cls=this.margin,nodes=toNodes(root.children),toFloat((node=nodes.filter(function(el){return hasClass(el,cls)})[0])?css(node,"marginTop"):css(nodes[0],"paddingLeft"))*(rows.length-1))}return{rows:rows,translates:translates,height:elHeight}},write:function(ref){var rows=ref.rows,stacks=ref.stacks,height$$1=ref.height;toggleClass(this.$el,this.clsStack,stacks),css(this.$el,"paddingBottom",this.parallax&&rows.some(function(row){return row.length>1})?this.parallax:""),height$$1&&css(this.$el,"minHeight",height$$1)},events:["load","resize"]},{read:function(ref){var rows=ref.rows,height$$1=ref.height;return{scrolled:!(!this.parallax||!rows.some(function(row){return row.length>1}))&&scrolledOver(this.$el,height$$1?height$$1-height(this.$el):0)*this.parallax}},write:function(ref){var rows=ref.rows,scrolled=ref.scrolled,translates=ref.translates;(!1!==scrolled||translates)&&rows.forEach(function(row,i){return row.forEach(function(el,j){return css(el,"transform",scrolled||translates?"translateY("+((translates&&-translates[i][j])+(scrolled?j%2?scrolled:scrolled/8:0))+"px)":"")})})},events:["scroll","load","resize"]}]};var HeightMatch={args:"target",props:{target:String,row:Boolean},data:{target:"> *",row:!0},computed:{elements:function(ref,$el){return $$(ref.target,$el)}},update:{read:function(){var this$1=this;return css(this.elements,{minHeight:"",boxSizing:""}),{rows:this.row?getRows(this.elements).map(function(elements){return this$1.match(elements)}):[this.match(this.elements)]}},write:function(ref){ref.rows.forEach(function(ref){var height$$1=ref.height;return css(ref.elements,{minHeight:height$$1,boxSizing:"border-box"})})},events:["load","resize"]},methods:{match:function(elements){if(elements.length<2)return{};var heights=[],max=0;return elements.forEach(function(el){var height$$1=offset(el).height;max=Math.max(max,height$$1),heights.push(height$$1)}),elements=elements.filter(function(el,i){return heights[i]<max}),{height:max,elements:elements}}}},HeightViewport={props:{expand:Boolean,offsetTop:Boolean,offsetBottom:Boolean,minHeight:Number},data:{expand:!1,offsetTop:!1,offsetBottom:!1,minHeight:0},update:{write:function(){css(this.$el,"boxSizing","border-box");var minHeight,viewport=height(window),offsetTop=0;if(this.expand){css(this.$el,{height:"",minHeight:""});var diff=viewport-offsetHeight(document.documentElement);diff>0&&(minHeight=offsetHeight(this.$el)+diff)}else{var top=offset(this.$el).top;top<viewport/2&&this.offsetTop&&(offsetTop+=top),!0===this.offsetBottom?offsetTop+=offsetHeight(this.$el.nextElementSibling):isNumeric(this.offsetBottom)?offsetTop+=viewport/100*this.offsetBottom:this.offsetBottom&&endsWith(this.offsetBottom,"px")?offsetTop+=toFloat(this.offsetBottom):isString(this.offsetBottom)&&(offsetTop+=offsetHeight(query(this.offsetBottom,this.$el))),minHeight=offsetTop?"calc(100vh - "+offsetTop+"px)":"100vh"}if(minHeight){css(this.$el,{height:"",minHeight:minHeight});var elHeight=this.$el.offsetHeight;this.minHeight&&this.minHeight>elHeight&&css(this.$el,"minHeight",this.minHeight),viewport-offsetTop>=elHeight&&css(this.$el,"height",minHeight)}},events:["load","resize"]}};function offsetHeight(el){return el&&el.offsetHeight||0}var svgs={},SVG={attrs:!0,props:{id:String,icon:String,src:String,style:String,width:Number,height:Number,ratio:Number,class:String},data:{ratio:1,id:!1,exclude:["ratio","src","icon"],class:""},connected:function(){var assign$$1,this$1=this;if(this.class+=" uk-svg",!this.icon&&includes(this.src,"#")){var parts=this.src.split("#");parts.length>1&&(assign$$1=parts,this.src=assign$$1[0],this.icon=assign$$1[1])}this.svg=this.getSvg().then(function(svg){var el;if(isString(svg)?(this$1.icon&&includes(svg,"<symbol")&&(svg=function(svg,icon){if(!symbols[svg]){var match;for(symbols[svg]={};match=symbolRe.exec(svg);)symbols[svg][match[3]]='<svg xmlns="http://www.w3.org/2000/svg"'+match[1]+"svg>";symbolRe.lastIndex=0}return symbols[svg][icon]}(svg,this$1.icon)||svg),el=$(svg.substr(svg.indexOf("<svg")))):el=svg.cloneNode(!0),!el)return Promise$1.reject("SVG not found.");var dimensions=attr(el,"viewBox");for(var prop in dimensions&&(dimensions=dimensions.split(" "),this$1.width=this$1.$props.width||dimensions[2],this$1.height=this$1.$props.height||dimensions[3]),this$1.width*=this$1.ratio,this$1.height*=this$1.ratio,this$1.$options.props)this$1[prop]&&!includes(this$1.exclude,prop)&&attr(el,prop,this$1[prop]);this$1.id||removeAttr(el,"id"),this$1.width&&!this$1.height&&removeAttr(el,"height"),this$1.height&&!this$1.width&&removeAttr(el,"width");var root=this$1.$el;if(isVoidElement(root)||"CANVAS"===root.tagName){attr(root,{hidden:!0,id:null});var next=root.nextElementSibling;next&&el.isEqualNode(next)?el=next:after(root,el)}else{var last=root.lastElementChild;last&&el.isEqualNode(last)?el=last:append(root,el)}return this$1.svgEl=el,el},noop)},disconnected:function(){var this$1=this;isVoidElement(this.$el)&&attr(this.$el,{hidden:null,id:this.id||null}),this.svg&&this.svg.then(function(svg){return(!this$1._connected||svg!==this$1.svgEl)&&remove(svg)},noop),this.svg=this.svgEl=null},methods:{getSvg:function(){var this$1=this;return this.src?svgs[this.src]?svgs[this.src]:(svgs[this.src]=new Promise$1(function(resolve,reject){startsWith(this$1.src,"data:")?resolve(decodeURIComponent(this$1.src.split(",")[1])):ajax(this$1.src).then(function(xhr){return resolve(xhr.response)},function(){return reject("SVG not found.")})}),svgs[this.src]):Promise$1.reject()}}},symbolRe=/<symbol(.*?id=(['"])(.*?)\2[^]*?<\/)symbol>/g,symbols={};var parsed={},icons={spinner:'<svg width="30" height="30" viewBox="0 0 30 30" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" cx="15" cy="15" r="14"/></svg>',totop:'<svg width="18" height="10" viewBox="0 0 18 10" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.2" points="1 9 9 1 17 9 "/></svg>',marker:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect x="9" y="4" width="1" height="11"/><rect x="4" y="9" width="11" height="1"/></svg>',"close-icon":'<svg width="14" height="14" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg"><line fill="none" stroke="#000" stroke-width="1.1" x1="1" y1="1" x2="13" y2="13"/><line fill="none" stroke="#000" stroke-width="1.1" x1="13" y1="1" x2="1" y2="13"/></svg>',"close-large":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><line fill="none" stroke="#000" stroke-width="1.4" x1="1" y1="1" x2="19" y2="19"/><line fill="none" stroke="#000" stroke-width="1.4" x1="19" y1="1" x2="1" y2="19"/></svg>',"navbar-toggle-icon":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect y="9" width="20" height="2"/><rect y="3" width="20" height="2"/><rect y="15" width="20" height="2"/></svg>',"overlay-icon":'<svg width="40" height="40" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"><rect x="19" y="0" width="1" height="40"/><rect x="0" y="19" width="40" height="1"/></svg>',"pagination-next":'<svg width="7" height="12" viewBox="0 0 7 12" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.2" points="1 1 6 6 1 11"/></svg>',"pagination-previous":'<svg width="7" height="12" viewBox="0 0 7 12" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.2" points="6 1 1 6 6 11"/></svg>',"search-icon":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.1" cx="9" cy="9" r="7"/><path fill="none" stroke="#000" stroke-width="1.1" d="M14,14 L18,18 L14,14 Z"/></svg>',"search-large":'<svg width="40" height="40" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.8" cx="17.5" cy="17.5" r="16.5"/><line fill="none" stroke="#000" stroke-width="1.8" x1="38" y1="39" x2="29" y2="30"/></svg>',"search-navbar":'<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.1" cx="10.5" cy="10.5" r="9.5"/><line fill="none" stroke="#000" stroke-width="1.1" x1="23" y1="23" x2="17" y2="17"/></svg>',"slidenav-next":'<svg width="14px" height="24px" viewBox="0 0 14 24" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.4" points="1.225,23 12.775,12 1.225,1 "/></svg>',"slidenav-next-large":'<svg width="25px" height="40px" viewBox="0 0 25 40" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="2" points="4.002,38.547 22.527,20.024 4,1.5 "/></svg>',"slidenav-previous":'<svg width="14px" height="24px" viewBox="0 0 14 24" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.4" points="12.775,1 1.225,12 12.775,23 "/></svg>',"slidenav-previous-large":'<svg width="25px" height="40px" viewBox="0 0 25 40" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="2" points="20.527,1.5 2,20.024 20.525,38.547 "/></svg>'},Icon={install:function(UIkit){UIkit.icon.add=function(name,svg){var obj,added=isString(name)?((obj={})[name]=svg,obj):name;each(added,function(svg,name){icons[name]=svg,delete parsed[name]}),UIkit._initialized&&apply(document.body,function(el){return each(UIkit.getComponents(el),function(cmp){return cmp.$options.isIcon&&cmp.icon in added&&cmp.$reset()})})}},attrs:["icon","ratio"],mixins:[Class,SVG],args:"icon",props:["icon"],data:{exclude:["id","style","class","src","icon","ratio"]},isIcon:!0,connected:function(){addClass(this.$el,"uk-icon")},methods:{getSvg:function(){var icon=function(icon){if(!icons[icon])return null;parsed[icon]||(parsed[icon]=$(icons[icon].trim()));return parsed[icon]}(function(icon){return isRtl?swap(swap(icon,"left","right"),"previous","next"):icon}(this.icon));return icon?Promise$1.resolve(icon):Promise$1.reject("Icon not found.")}}},IconComponent={extends:Icon,data:function(vm){return{icon:hyphenate(vm.constructor.options.name)}}},Slidenav={extends:IconComponent,connected:function(){addClass(this.$el,"uk-slidenav")},computed:{icon:function(ref,$el){var icon=ref.icon;return hasClass($el,"uk-slidenav-large")?icon+"-large":icon}}},Search={extends:IconComponent,computed:{icon:function(ref,$el){var icon=ref.icon;return hasClass($el,"uk-search-icon")&&parents($el,".uk-search-large").length?"search-large":parents($el,".uk-search-navbar").length?"search-navbar":icon}}},Close={extends:IconComponent,computed:{icon:function(){return"close-"+(hasClass(this.$el,"uk-close-large")?"large":"icon")}}},Spinner={extends:IconComponent,connected:function(){var this$1=this;this.svg.then(function(svg){return 1!==this$1.ratio&&css($("circle",svg),"strokeWidth",1/this$1.ratio)},noop)}};var Img={attrs:!0,props:{dataSrc:String,dataSrcset:Boolean,dataSizes:Boolean,sizes:String,width:Number,height:Number,dataWidth:Number,dataHeight:Number,offsetTop:String,offsetLeft:String,target:String},data:{dataSrc:"",dataSrcset:!1,dataSizes:!1,sizes:!1,width:!1,height:!1,offsetTop:"50vh",offsetLeft:0,target:!1},computed:{cacheKey:function(ref){var dataSrc=ref.dataSrc;return this.$name+"."+dataSrc},width:function(ref){var width$$1=ref.width,dataWidth=ref.dataWidth;return width$$1||dataWidth},height:function(ref){var height$$1=ref.height,dataHeight=ref.dataHeight;return height$$1||dataHeight},sizes:function(ref){var sizes=ref.sizes,dataSizes=ref.dataSizes;return sizes||dataSizes},isImg:function(_,$el){return isImg($el)},target:function(ref){var target=ref.target;return[this.$el].concat(queryAll(target,this.$el))},offsetTop:function(ref){return toPx(ref.offsetTop,"height")},offsetLeft:function(ref){return toPx(ref.offsetLeft,"width")}},connected:function(){storage[this.cacheKey]?setSrcAttrs(this.$el,storage[this.cacheKey]||this.dataSrc,this.dataSrcset,this.sizes):this.isImg&&this.width&&this.height&&setSrcAttrs(this.$el,function(width$$1,height$$1,sizes,color){var assign$$1;void 0===color&&(color="transparent");if(sizes){for(var matches$$1;matches$$1=sizesRe.exec(sizes);)if(!matches$$1[1]||window.matchMedia(matches$$1[1]).matches){size=matches$$1[2],matches$$1=startsWith(size,"calc")?size.substring(5,size.length-1).replace(sizeRe,function(size){return toPx(size)}).replace(/ /g,"").match(additionRe).reduce(function(a,b){return a+ +b},0):size;break}sizesRe.lastIndex=0,assign$$1=Dimensions.ratio({width:width$$1,height:height$$1},"width",toPx(matches$$1||"100vw")),width$$1=assign$$1.width,height$$1=assign$$1.height}var size;var key=width$$1+"."+height$$1+"."+color;if(urlCache[key])return urlCache[key];var canvas=fragment("<canvas>");canvas.width=width$$1,canvas.height=height$$1;var context=canvas.getContext("2d");return context.fillStyle=color,context.fillRect(0,0,width$$1,height$$1),urlCache[key]=canvas.toDataURL("image/png")}(this.width,this.height,this.sizes))},update:[{read:function(ref){var this$1=this,delay=ref.delay,image=ref.image;if(delay){if(!image&&this.target.some(function(el){return isInView(el,this$1.offsetTop,this$1.offsetLeft,!0)}))return{image:getImage(this.dataSrc,this.dataSrcset,this.sizes).then(function(img){return setSrcAttrs(this$1.$el,currentSrc(img),img.srcset,img.sizes),storage[this$1.cacheKey]=currentSrc(img),img},noop)};!this.isImg&&image&&image.then(function(img){return img&&setSrcAttrs(this$1.$el,currentSrc(img))})}},write:function(data$$1){if(!data$$1.delay)return this.$emit(),data$$1.delay=!0},events:["scroll","load","resize"]}]};function setSrcAttrs(el,src,srcset,sizes){isImg(el)?(src&&(el.src=src),srcset&&(el.srcset=srcset),sizes&&(el.sizes=sizes)):src&&css(el,"backgroundImage","url("+src+")")}var urlCache={},sizesRe=/\s*(.*?)\s*(\w+|calc\(.*?\))\s*(?:,|$)/g;var sizeRe=/\d+(?:\w+|%)/g,additionRe=/[+-]?(\d+)/g;function toPx(value,property,element){return void 0===property&&(property="width"),void 0===element&&(element=window),isNumeric(value)?+value:endsWith(value,"vw")?percent(element,"width",value):endsWith(value,"vh")?percent(element,"height",value):endsWith(value,"%")?percent(element,property,value):toFloat(value)}var dimensions={height:height,width:width};function percent(element,property,value){return dimensions[property](element)*toFloat(value)/100}function isImg(el){return"IMG"===el.tagName}function currentSrc(el){return el.currentSrc||el.src}var storage;try{(storage=window.sessionStorage||{}).__test__=1,delete storage.__test__}catch(e){storage={}}var active$1,events,Leader={mixins:[Class],props:{fill:String,media:"media"},data:{fill:"",media:!1,clsWrapper:"uk-leader-fill",clsHide:"uk-leader-hide",attrFill:"data-fill"},computed:{fill:function(ref){return ref.fill||getCssVar("leader-fill")}},connected:function(){var assign$$1;assign$$1=wrapInner(this.$el,'<span class="'+this.clsWrapper+'">'),this.wrapper=assign$$1[0]},disconnected:function(){unwrap(this.wrapper.childNodes)},update:[{read:function(ref){var changed=ref.changed,width$$1=ref.width,prev=width$$1;return{width:width$$1=Math.floor(this.$el.offsetWidth/2),changed:changed||prev!==width$$1,hide:this.media&&!window.matchMedia(this.media).matches}},write:function(data$$1){toggleClass(this.wrapper,this.clsHide,data$$1.hide),data$$1.changed&&(data$$1.changed=!1,attr(this.wrapper,this.attrFill,new Array(data$$1.width).join(this.fill)))},events:["load","resize"]}]},Container={props:{container:Boolean},data:{container:!0},computed:{container:function(ref){var container=ref.container;return!0===container&&this.$container||container&&$(container)}}},Modal={mixins:[Class,Container,Togglable],props:{selPanel:String,selClose:String,escClose:Boolean,bgClose:Boolean,stack:Boolean},data:{cls:"uk-open",escClose:!0,bgClose:!0,overlay:!0,stack:!1},computed:{panel:function(ref,$el){return $(ref.selPanel,$el)},transitionElement:function(){return this.panel},transitionDuration:function(){return toMs(css(this.transitionElement,"transitionDuration"))},bgClose:function(ref){return ref.bgClose&&this.panel}},events:[{name:"click",delegate:function(){return this.selClose},handler:function(e){e.preventDefault(),this.hide()}},{name:"toggle",self:!0,handler:function(e){e.defaultPrevented||(e.preventDefault(),this.toggle())}},{name:"beforeshow",self:!0,handler:function(e){var prev=active$1&&active$1!==this&&active$1;if(active$1=this,prev){if(!this.stack)return prev.hide().then(this.show),void e.preventDefault();this.prev=prev}!function(){if(events)return;events=[on(document,"click",function(ref){var target=ref.target,defaultPrevented=ref.defaultPrevented;!active$1||!active$1.bgClose||defaultPrevented||active$1.overlay&&!within(target,active$1.$el)||within(target,active$1.panel)||active$1.hide()}),on(document,"keydown",function(e){27===e.keyCode&&active$1&&active$1.escClose&&(e.preventDefault(),active$1.hide())})]}()}},{name:"beforehide",self:!0,handler:function(){(active$1=active$1&&active$1!==this&&active$1||this.prev)||(events&&events.forEach(function(unbind){return unbind()}),events=null)}},{name:"show",self:!0,handler:function(){hasClass(document.documentElement,this.clsPage)||(this.scrollbarWidth=width(window)-width(document),css(document.body,"overflowY",this.scrollbarWidth&&this.overlay?"scroll":"")),addClass(document.documentElement,this.clsPage)}},{name:"hidden",self:!0,handler:function(){for(var found,prev=this.prev;prev;){if(prev.clsPage===this.clsPage){found=!0;break}prev=prev.prev}found||removeClass(document.documentElement,this.clsPage),!this.prev&&css(document.body,"overflowY","")}}],methods:{toggle:function(){return this.isToggled()?this.hide():this.show()},show:function(){return this.isToggled()?Promise$1.resolve():(this.container&&this.$el.parentNode!==this.container&&(append(this.container,this.$el),this._callConnected()),this.toggleNow(this.$el,!0))},hide:function(){return this.isToggled()?this.toggleNow(this.$el,!1):Promise$1.resolve()},getActive:function(){return active$1},_toggleImmediate:function(el,show){var this$1=this;return new Promise$1(function(resolve){return requestAnimationFrame(function(){this$1._toggle(el,show),this$1.transitionDuration?once(this$1.transitionElement,"transitionend",resolve,!1,function(e){return e.target===this$1.transitionElement}):resolve()})})}}};var Modal$1={install:function(UIkit){UIkit.modal.dialog=function(content,options){var dialog=UIkit.modal(' <div class="uk-modal"> <div class="uk-modal-dialog">'+content+"</div> </div> ",options);return dialog.show(),on(dialog.$el,"hidden",function(ref){var target=ref.target,currentTarget=ref.currentTarget;target===currentTarget&&dialog.$destroy(!0)}),dialog},UIkit.modal.alert=function(message,options){return options=assign({bgClose:!1,escClose:!1,labels:UIkit.modal.labels},options),new Promise$1(function(resolve){return on(UIkit.modal.dialog(' <div class="uk-modal-body">'+(isString(message)?message:html(message))+'</div> <div class="uk-modal-footer uk-text-right"> <button class="uk-button uk-button-primary uk-modal-close" autofocus>'+options.labels.ok+"</button> </div> ",options).$el,"hide",resolve)})},UIkit.modal.confirm=function(message,options){return options=assign({bgClose:!1,escClose:!0,labels:UIkit.modal.labels},options),new Promise$1(function(resolve,reject){var confirm=UIkit.modal.dialog(' <form> <div class="uk-modal-body">'+(isString(message)?message:html(message))+'</div> <div class="uk-modal-footer uk-text-right"> <button class="uk-button uk-button-default uk-modal-close" type="button">'+options.labels.cancel+'</button> <button class="uk-button uk-button-primary" autofocus>'+options.labels.ok+"</button> </div> </form> ",options),resolved=!1;on(confirm.$el,"submit","form",function(e){e.preventDefault(),resolve(),resolved=!0,confirm.hide()}),on(confirm.$el,"hide",function(){resolved||reject()})})},UIkit.modal.prompt=function(message,value,options){return options=assign({bgClose:!1,escClose:!0,labels:UIkit.modal.labels},options),new Promise$1(function(resolve){var prompt=UIkit.modal.dialog(' <form class="uk-form-stacked"> <div class="uk-modal-body"> <label>'+(isString(message)?message:html(message))+'</label> <input class="uk-input" autofocus> </div> <div class="uk-modal-footer uk-text-right"> <button class="uk-button uk-button-default uk-modal-close" type="button">'+options.labels.cancel+'</button> <button class="uk-button uk-button-primary">'+options.labels.ok+"</button> </div> </form> ",options),input=$("input",prompt.$el);input.value=value;var resolved=!1;on(prompt.$el,"submit","form",function(e){e.preventDefault(),resolve(input.value),resolved=!0,prompt.hide()}),on(prompt.$el,"hide",function(){resolved||resolve(null)})})},UIkit.modal.labels={ok:"Ok",cancel:"Cancel"}},mixins:[Modal],data:{clsPage:"uk-modal-page",selPanel:".uk-modal-dialog",selClose:".uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full"},events:[{name:"show",self:!0,handler:function(){hasClass(this.panel,"uk-margin-auto-vertical")?addClass(this.$el,"uk-flex"):css(this.$el,"display","block"),height(this.$el)}},{name:"hidden",self:!0,handler:function(){css(this.$el,"display",""),removeClass(this.$el,"uk-flex")}}]};var scroll,Nav={extends:Accordion,data:{targets:"> .uk-parent",toggle:"> a",content:"> ul"}},Navbar={mixins:[Class],props:{dropdown:String,mode:"list",align:String,offset:Number,boundary:Boolean,boundaryAlign:Boolean,clsDrop:String,delayShow:Number,delayHide:Number,dropbar:Boolean,dropbarMode:String,dropbarAnchor:Boolean,duration:Number},data:{dropdown:".uk-navbar-nav > li",align:isRtl?"right":"left",clsDrop:"uk-navbar-dropdown",mode:void 0,offset:void 0,delayShow:void 0,delayHide:void 0,boundaryAlign:void 0,flip:"x",boundary:!0,dropbar:!1,dropbarMode:"slide",dropbarAnchor:!1,duration:200},computed:{boundary:function(ref,$el){var boundary=ref.boundary,boundaryAlign=ref.boundaryAlign;return!0===boundary||boundaryAlign?$el:boundary},dropbarAnchor:function(ref,$el){return query(ref.dropbarAnchor,$el)},pos:function(ref){return"bottom-"+ref.align},dropdowns:function(ref,$el){return $$(ref.dropdown+" ."+ref.clsDrop,$el)}},beforeConnect:function(){var dropbar=this.$props.dropbar;this.dropbar=dropbar&&(query(dropbar,this.$el)||$("+ .uk-navbar-dropbar",this.$el)||$("<div></div>")),this.dropbar&&(addClass(this.dropbar,"uk-navbar-dropbar"),"slide"===this.dropbarMode&&addClass(this.dropbar,"uk-navbar-dropbar-slide"))},disconnected:function(){this.dropbar&&remove(this.dropbar)},update:function(){var this$1=this;this.$create("drop",this.dropdowns.filter(function(el){return!this$1.getDropdown(el)}),assign({},this.$props,{boundary:this.boundary,pos:this.pos,offset:this.dropbar||this.offset}))},events:[{name:"mouseover",delegate:function(){return this.dropdown},handler:function(ref){var current=ref.current,active=this.getActive();active&&active.toggle&&!within(active.toggle.$el,current)&&!active.tracker.movesTo(active.$el)&&active.hide(!1)}},{name:"mouseleave",el:function(){return this.dropbar},handler:function(){var active=this.getActive();active&&!matches(this.dropbar,":hover")&&active.hide()}},{name:"beforeshow",capture:!0,filter:function(){return this.dropbar},handler:function(){this.dropbar.parentNode||after(this.dropbarAnchor||this.$el,this.dropbar)}},{name:"show",capture:!0,filter:function(){return this.dropbar},handler:function(_,drop){var $el=drop.$el,dir=drop.dir;this.clsDrop&&addClass($el,this.clsDrop+"-dropbar"),"bottom"===dir&&this.transitionTo($el.offsetHeight+toFloat(css($el,"marginTop"))+toFloat(css($el,"marginBottom")),$el)}},{name:"beforehide",filter:function(){return this.dropbar},handler:function(e,ref){var $el=ref.$el,active=this.getActive();matches(this.dropbar,":hover")&&active&&active.$el===$el&&e.preventDefault()}},{name:"hide",filter:function(){return this.dropbar},handler:function(_,ref){var $el=ref.$el,active=this.getActive();(!active||active&&active.$el===$el)&&this.transitionTo(0)}}],methods:{getActive:function(){var active=this.dropdowns.map(this.getDropdown).filter(function(drop){return drop.isActive()})[0];return active&&includes(active.mode,"hover")&&within(active.toggle.$el,this.$el)&&active},transitionTo:function(newHeight,el){var dropbar=this.dropbar,oldHeight=isVisible(dropbar)?height(dropbar):0;return css(el=oldHeight<newHeight&&el,"clip","rect(0,"+el.offsetWidth+"px,"+oldHeight+"px,0)"),height(dropbar,oldHeight),Transition.cancel([el,dropbar]),Promise.all([Transition.start(dropbar,{height:newHeight},this.duration),Transition.start(el,{clip:"rect(0,"+el.offsetWidth+"px,"+newHeight+"px,0)"},this.duration)]).catch(noop).then(function(){return css(el,{clip:""})})},getDropdown:function(el){return this.$getComponent(el,"drop")||this.$getComponent(el,"dropdown")}}},Offcanvas={mixins:[Modal],args:"mode",props:{content:String,mode:String,flip:Boolean,overlay:Boolean},data:{content:".uk-offcanvas-content",mode:"slide",flip:!1,overlay:!1,clsPage:"uk-offcanvas-page",clsContainer:"uk-offcanvas-container",selPanel:".uk-offcanvas-bar",clsFlip:"uk-offcanvas-flip",clsContent:"uk-offcanvas-content",clsContentAnimation:"uk-offcanvas-content-animation",clsSidebarAnimation:"uk-offcanvas-bar-animation",clsMode:"uk-offcanvas",clsOverlay:"uk-offcanvas-overlay",selClose:".uk-offcanvas-close"},computed:{content:function(ref){return $(ref.content)||document.body},clsFlip:function(ref){var flip=ref.flip,clsFlip=ref.clsFlip;return flip?clsFlip:""},clsOverlay:function(ref){var overlay=ref.overlay,clsOverlay=ref.clsOverlay;return overlay?clsOverlay:""},clsMode:function(ref){var mode=ref.mode;return ref.clsMode+"-"+mode},clsSidebarAnimation:function(ref){var mode=ref.mode,clsSidebarAnimation=ref.clsSidebarAnimation;return"none"===mode||"reveal"===mode?"":clsSidebarAnimation},clsContentAnimation:function(ref){var mode=ref.mode,clsContentAnimation=ref.clsContentAnimation;return"push"!==mode&&"reveal"!==mode?"":clsContentAnimation},transitionElement:function(ref){return"reveal"===ref.mode?this.panel.parentNode:this.panel}},update:{write:function(){this.getActive()===this&&((this.overlay||this.clsContentAnimation)&&width(this.content,width(window)-this.scrollbarWidth),this.overlay&&(height(this.content,height(window)),scroll&&(this.content.scrollTop=scroll.y)))},events:["resize"]},events:[{name:"click",delegate:function(){return'a[href^="#"]'},handler:function(ref){var current=ref.current;current.hash&&$(current.hash,this.content)&&(scroll=null,this.hide())}},{name:"beforescroll",filter:function(){return this.overlay},handler:function(e,scroll,target){scroll&&target&&this.isToggled()&&$(target,this.content)&&(once(this.$el,"hidden",function(){return scroll.scrollTo(target)}),e.preventDefault())}},{name:"show",self:!0,handler:function(){scroll=scroll||{x:window.pageXOffset,y:window.pageYOffset},"reveal"!==this.mode||hasClass(this.panel,this.clsMode)||(wrapAll(this.panel,"<div>"),addClass(this.panel.parentNode,this.clsMode)),css(document.documentElement,"overflowY",(!this.clsContentAnimation||this.flip)&&this.scrollbarWidth&&this.overlay?"scroll":""),addClass(document.body,this.clsContainer,this.clsFlip,this.clsOverlay),height(document.body),addClass(this.content,this.clsContentAnimation),addClass(this.panel,this.clsSidebarAnimation,"reveal"!==this.mode?this.clsMode:""),addClass(this.$el,this.clsOverlay),css(this.$el,"display","block"),height(this.$el)}},{name:"hide",self:!0,handler:function(){removeClass(this.content,this.clsContentAnimation);var active=this.getActive();("none"===this.mode||active&&active!==this&&active!==this.prev)&&trigger(this.panel,"transitionend")}},{name:"hidden",self:!0,handler:function(){if("reveal"===this.mode&&unwrap(this.panel),this.overlay){if(!scroll){var ref=this.content,x=ref.scrollLeft,y=ref.scrollTop;scroll={x:x,y:y}}}else scroll={x:window.pageXOffset,y:window.pageYOffset};removeClass(this.panel,this.clsSidebarAnimation,this.clsMode),removeClass(this.$el,this.clsOverlay),css(this.$el,"display",""),removeClass(document.body,this.clsContainer,this.clsFlip,this.clsOverlay),document.body.scrollTop=scroll.y,css(document.documentElement,"overflowY",""),width(this.content,""),height(this.content,""),window.scroll(scroll.x,scroll.y),scroll=null}},{name:"swipeLeft swipeRight",handler:function(e){this.isToggled()&&isTouch(e)&&("swipeLeft"===e.type&&!this.flip||"swipeRight"===e.type&&this.flip)&&this.hide()}}]},OverflowAuto={mixins:[Class],computed:{modal:function(_,$el){return closest($el,".uk-modal")},panel:function(_,$el){return closest($el,".uk-modal-dialog")}},connected:function(){css(this.$el,"minHeight",150)},update:{write:function(){if(this.panel&&this.modal){var current=css(this.$el,"maxHeight");css(css(this.$el,"maxHeight",150),"maxHeight",Math.max(150,150+height(this.modal)-this.panel.offsetHeight)),current!==css(this.$el,"maxHeight")&&trigger(this.$el,"resize")}},events:["load","resize"]}},Responsive={props:["width","height"],connected:function(){addClass(this.$el,"uk-responsive-width")},update:{read:function(){return!!(isVisible(this.$el)&&this.width&&this.height)&&{width:width(this.$el.parentNode),height:this.height}},write:function(dim){height(this.$el,Dimensions.contain({height:this.height,width:this.width},dim).height)},events:["load","resize"]}},Scroll={props:{duration:Number,offset:Number},data:{duration:1e3,offset:0},methods:{scrollTo:function(el){var this$1=this;el=el&&$(el)||document.body;var docHeight=height(document),winHeight=height(window),target=offset(el).top-this.offset;if(target+winHeight>docHeight&&(target=docHeight-winHeight),trigger(this.$el,"beforescroll",[this,el])){var start=Date.now(),startY=window.pageYOffset,step=function(){var k,currentY=startY+(target-startY)*(k=clamp((Date.now()-start)/this$1.duration),.5*(1-Math.cos(Math.PI*k)));window.scroll(window.pageXOffset,currentY),currentY!==target?requestAnimationFrame(step):trigger(this$1.$el,"scrolled",[this$1,el])};step()}}},events:{click:function(e){e.defaultPrevented||(e.preventDefault(),this.scrollTo(escape(this.$el.hash).substr(1)))}}};var Scrollspy={args:"cls",props:{cls:"list",target:String,hidden:Boolean,offsetTop:Number,offsetLeft:Number,repeat:Boolean,delay:Number},data:function(){return{cls:[],target:!1,hidden:!0,offsetTop:0,offsetLeft:0,repeat:!1,delay:0,inViewClass:"uk-scrollspy-inview"}},computed:{elements:function(ref,$el){var target=ref.target;return target?$$(target,$el):[$el]}},update:[{write:function(){this.hidden&&css(filter(this.elements,":not(."+this.inViewClass+")"),"visibility","hidden")}},{read:function(els){var this$1=this;els.delay&&this.elements.forEach(function(el,i){var elData=els[i];if(!elData||elData.el!==el){var cls=data(el,"uk-scrollspy-class");elData={el:el,toggles:cls&&cls.split(",")||this$1.cls}}elData.show=isInView(el,this$1.offsetTop,this$1.offsetLeft),els[i]=elData})},write:function(els){var this$1=this;if(!els.delay)return this.$emit(),els.delay=!0;var index$$1=1===this.elements.length?1:0;this.elements.forEach(function(el,i){var elData=els[i],cls=elData.toggles[i]||elData.toggles[0];if(!elData.show||elData.inview||elData.timer)!elData.show&&elData.inview&&this$1.repeat&&(elData.timer&&(clearTimeout(elData.timer),delete elData.timer),css(el,"visibility",this$1.hidden?"hidden":""),removeClass(el,this$1.inViewClass),toggleClass(el,cls),trigger(el,"outview"),this$1.$update(el),elData.inview=!1);else{var show=function(){css(el,"visibility",""),addClass(el,this$1.inViewClass),toggleClass(el,cls),trigger(el,"inview"),this$1.$update(el),elData.inview=!0,delete elData.timer};this$1.delay&&index$$1?elData.timer=setTimeout(show,this$1.delay*index$$1):show(),index$$1++}})},events:["scroll","load","resize"]}]},ScrollspyNav={props:{cls:String,closest:String,scroll:Boolean,overflow:Boolean,offset:Number},data:{cls:"uk-active",closest:!1,scroll:!1,overflow:!0,offset:0},computed:{links:function(_,$el){return $$('a[href^="#"]',$el).filter(function(el){return el.hash})},elements:function(){return this.closest?closest(this.links,this.closest):this.links},targets:function(){return $$(this.links.map(function(el){return el.hash}).join(","))}},update:[{read:function(){this.scroll&&this.$create("scroll",this.links,{offset:this.offset||0})}},{read:function(data$$1){var this$1=this,scroll=window.pageYOffset+this.offset+1,max=height(document)-height(window)+this.offset;data$$1.active=!1,this.targets.every(function(el,i){var top=offset(el).top,last=i+1===this$1.targets.length;if(!this$1.overflow&&(0===i&&top>scroll||last&&top+el.offsetTop<scroll))return!1;if(!last&&offset(this$1.targets[i+1]).top<=scroll)return!0;if(scroll>=max)for(var j=this$1.targets.length-1;j>i;j--)if(isInView(this$1.targets[j])){el=this$1.targets[j];break}return!(data$$1.active=$(filter(this$1.links,'[href="#'+el.id+'"]')))})},write:function(ref){var active=ref.active;this.links.forEach(function(el){return el.blur()}),removeClass(this.elements,this.cls),active&&trigger(this.$el,"active",[active,addClass(this.closest?closest(active,this.closest):active,this.cls)])},events:["scroll","load","resize"]}]},Sticky={mixins:[Class],attrs:!0,props:{top:null,bottom:Boolean,offset:Number,animation:String,clsActive:String,clsInactive:String,clsFixed:String,clsBelow:String,selTarget:String,widthElement:Boolean,showOnUp:Boolean,media:"media",targetOffset:Number},data:{top:0,bottom:!1,offset:0,animation:"",clsActive:"uk-active",clsInactive:"",clsFixed:"uk-sticky-fixed",clsBelow:"uk-sticky-below",selTarget:"",widthElement:!1,showOnUp:!1,media:!1,targetOffset:!1},computed:{selTarget:function(ref,$el){var selTarget=ref.selTarget;return selTarget&&$(selTarget,$el)||$el},widthElement:function(ref,$el){return query(ref.widthElement,$el)||this.placeholder}},connected:function(){this.placeholder=$("+ .uk-sticky-placeholder",this.$el)||$('<div class="uk-sticky-placeholder"></div>'),this.isActive||this.hide()},disconnected:function(){this.isActive&&(this.isActive=!1,this.hide(),removeClass(this.selTarget,this.clsInactive)),remove(this.placeholder),this.placeholder=null,this.widthElement=null},events:[{name:"active",self:!0,handler:function(){replaceClass(this.selTarget,this.clsInactive,this.clsActive)}},{name:"inactive",self:!0,handler:function(){replaceClass(this.selTarget,this.clsActive,this.clsInactive)}},{name:"load hashchange popstate",el:window,handler:function(){var this$1=this;if(!1!==this.targetOffset&&location.hash&&window.pageYOffset>0){var target=$(location.hash);target&&fastdom.read(function(){var top=offset(target).top,elTop=offset(this$1.$el).top,elHeight=this$1.$el.offsetHeight;this$1.isActive&&elTop+elHeight>=top&&elTop<=top+target.offsetHeight&&window.scroll(0,top-elHeight-(isNumeric(this$1.targetOffset)?this$1.targetOffset:0)-this$1.offset)})}}}],update:[{write:function(){var placeholder=this.placeholder,offsetHeight=this.$el.offsetHeight;css(placeholder,assign({height:"absolute"!==css(this.$el,"position")?offsetHeight:""},css(this.$el,["marginTop","marginBottom","marginLeft","marginRight"]))),within(placeholder,document)||(after(this.$el,placeholder),attr(placeholder,"hidden","")),this.topOffset=offset(this.isActive?placeholder:this.$el).top,this.bottomOffset=this.topOffset+offsetHeight;var bottom=parseProp("bottom",this);this.top=Math.max(toFloat(parseProp("top",this)),this.topOffset)-this.offset,this.bottom=bottom&&bottom-offsetHeight,this.inactive=this.media&&!window.matchMedia(this.media).matches},events:["load","resize"]},{read:function(_,ref){var scrollY=ref.scrollY;return void 0===scrollY&&(scrollY=window.pageYOffset),this.width=(isVisible(this.widthElement)?this.widthElement:this.$el).offsetWidth,{scroll:this.scroll=scrollY,visible:isVisible(this.$el)}},write:function(ref,ref$1){var this$1=this,visible=ref.visible,scroll=ref.scroll;void 0===ref$1&&(ref$1={});var dir=ref$1.dir;if(!(scroll<0||!visible||this.disabled||this.showOnUp&&!dir))if(this.inactive||scroll<this.top||this.showOnUp&&(scroll<=this.top||"down"===dir||"up"===dir&&!this.isActive&&scroll<=this.bottomOffset)){if(!this.isActive)return;this.isActive=!1,this.animation&&scroll>this.topOffset?(Animation.cancel(this.$el),Animation.out(this.$el,this.animation).then(function(){return this$1.hide()},noop)):this.hide()}else this.isActive?this.update():this.animation?(Animation.cancel(this.$el),this.show(),Animation.in(this.$el,this.animation).catch(noop)):this.show()},events:["load","resize","scroll"]}],methods:{show:function(){this.isActive=!0,this.update(),attr(this.placeholder,"hidden",null)},hide:function(){this.isActive&&!hasClass(this.selTarget,this.clsActive)||trigger(this.$el,"inactive"),removeClass(this.$el,this.clsFixed,this.clsBelow),css(this.$el,{position:"",top:"",width:""}),attr(this.placeholder,"hidden","")},update:function(){var active=0!==this.top||this.scroll>this.top,top=Math.max(0,this.offset);this.bottom&&this.scroll>this.bottom-this.offset&&(top=this.bottom-this.scroll),css(this.$el,{position:"fixed",top:top+"px",width:this.width}),hasClass(this.selTarget,this.clsActive)?active||trigger(this.$el,"inactive"):active&&trigger(this.$el,"active"),toggleClass(this.$el,this.clsBelow,this.scroll>this.bottomOffset),addClass(this.$el,this.clsFixed)}}};function parseProp(prop,ref){var $props=ref.$props,$el=ref.$el,propOffset=ref[prop+"Offset"],value=$props[prop];if(value){if(isNumeric(value))return propOffset+toFloat(value);if(isString(value)&&value.match(/^-?\d+vh$/))return height(window)*toFloat(value)/100;var el=!0===value?$el.parentNode:query(value,$el);return el?offset(el).top+el.offsetHeight:void 0}}var Switcher={mixins:[Togglable],args:"connect",props:{connect:String,toggle:String,active:Number,swiping:Boolean},data:{connect:"~.uk-switcher",toggle:"> *",active:0,swiping:!0,cls:"uk-active",clsContainer:"uk-switcher",attrItem:"uk-switcher-item",queued:!0},computed:{connects:function(ref,$el){return queryAll(ref.connect,$el)},toggles:function(ref,$el){return $$(ref.toggle,$el)}},events:[{name:"click",delegate:function(){return this.toggle+":not(.uk-disabled)"},handler:function(e){e.preventDefault(),this.show(e.current)}},{name:"click",el:function(){return this.connects},delegate:function(){return"["+this.attrItem+"],[data-"+this.attrItem+"]"},handler:function(e){e.preventDefault(),this.show(data(e.current,this.attrItem))}},{name:"swipeRight swipeLeft",filter:function(){return this.swiping},el:function(){return this.connects},handler:function(e){isTouch(e)&&(e.preventDefault(),window.getSelection().toString()||this.show("swipeLeft"===e.type?"next":"previous"))}}],update:function(){var this$1=this;this.connects.forEach(function(list){return this$1.updateAria(list.children)}),this.show(filter(this.toggles,"."+this.cls)[0]||this.toggles[this.active]||this.toggles[0])},methods:{show:function(item){for(var toggle,this$1=this,length=this.toggles.length,prev=!!this.connects.length&&index(filter(this.connects[0].children,"."+this.cls)[0]),hasPrev=prev>=0,dir="previous"===item?-1:1,next=getIndex(item,this.toggles,prev),i=0;i<length;i++,next=(next+dir+length)%length)if(!matches(this$1.toggles[next],".uk-disabled, [disabled]")){toggle=this$1.toggles[next];break}!toggle||prev>=0&&hasClass(toggle,this.cls)||prev===next||(removeClass(this.toggles,this.cls),attr(this.toggles,"aria-expanded",!1),addClass(toggle,this.cls),attr(toggle,"aria-expanded",!0),this.connects.forEach(function(list){hasPrev?this$1.toggleElement([list.children[prev],list.children[next]]):this$1.toggleNow(list.children[next])}))}}},Tab={mixins:[Class],extends:Switcher,props:{media:"media"},data:{media:960,attrItem:"uk-tab-item"},connected:function(){var cls=hasClass(this.$el,"uk-tab-left")?"uk-tab-left":!!hasClass(this.$el,"uk-tab-right")&&"uk-tab-right";cls&&this.$create("toggle",this.$el,{cls:cls,mode:"media",media:this.media})}},Toggle={mixins:[Togglable],args:"target",props:{href:String,target:null,mode:"list",media:"media"},data:{href:!1,target:!1,mode:"click",queued:!0,media:!1},computed:{target:function(ref,$el){var href=ref.href,target=ref.target;return(target=queryAll(target||href,$el)).length&&target||[$el]}},events:[{name:pointerEnter+" "+pointerLeave,filter:function(){return includes(this.mode,"hover")},handler:function(e){isTouch(e)||this.toggle("toggle"+(e.type===pointerEnter?"show":"hide"))}},{name:"click",filter:function(){return includes(this.mode,"click")||hasTouch&&includes(this.mode,"hover")},handler:function(e){var link;(isTouch(e)||includes(this.mode,"click"))&&((closest(e.target,'a[href="#"], button')||(link=closest(e.target,"a[href]"))&&(this.cls||!isVisible(this.target)||link.hash&&matches(this.target,link.hash)))&&once(document,"click",function(e){return e.preventDefault()}),this.toggle())}}],update:{write:function(){if(includes(this.mode,"media")&&this.media){var toggled=this.isToggled(this.target);(window.matchMedia(this.media).matches?!toggled:toggled)&&this.toggle()}},events:["load","resize"]},methods:{toggle:function(type){trigger(this.target,type||"toggle",[this])&&this.toggleElement(this.target)}}};UIkit.version="3.0.0-rc.5",function(UIkit){UIkit.component("accordion",Accordion),UIkit.component("alert",Alert),UIkit.component("cover",Cover),UIkit.component("drop",Drop),UIkit.component("dropdown",Dropdown),UIkit.component("formCustom",FormCustom),UIkit.component("gif",Gif),UIkit.component("grid",Grid),UIkit.component("heightMatch",HeightMatch),UIkit.component("heightViewport",HeightViewport),UIkit.component("icon",Icon),UIkit.component("img",Img),UIkit.component("leader",Leader),UIkit.component("margin",Margin),UIkit.component("modal",Modal$1),UIkit.component("nav",Nav),UIkit.component("navbar",Navbar),UIkit.component("offcanvas",Offcanvas),UIkit.component("overflowAuto",OverflowAuto),UIkit.component("responsive",Responsive),UIkit.component("scroll",Scroll),UIkit.component("scrollspy",Scrollspy),UIkit.component("scrollspyNav",ScrollspyNav),UIkit.component("sticky",Sticky),UIkit.component("svg",SVG),UIkit.component("switcher",Switcher),UIkit.component("tab",Tab),UIkit.component("toggle",Toggle),UIkit.component("video",Video),UIkit.component("close",Close),UIkit.component("marker",IconComponent),UIkit.component("navbarToggleIcon",IconComponent),UIkit.component("overlayIcon",IconComponent),UIkit.component("paginationNext",IconComponent),UIkit.component("paginationPrevious",IconComponent),UIkit.component("searchIcon",Search),UIkit.component("slidenavNext",Slidenav),UIkit.component("slidenavPrevious",Slidenav),UIkit.component("spinner",Spinner),UIkit.component("totop",IconComponent),UIkit.use(Core)}(UIkit);var Countdown={mixins:[Class],attrs:!0,props:{date:String,clsWrapper:String},data:{date:"",clsWrapper:".uk-countdown-%unit%"},computed:{date:function(ref){var date=ref.date;return Date.parse(date)},days:function(ref,$el){return $(ref.clsWrapper.replace("%unit%","days"),$el)},hours:function(ref,$el){return $(ref.clsWrapper.replace("%unit%","hours"),$el)},minutes:function(ref,$el){return $(ref.clsWrapper.replace("%unit%","minutes"),$el)},seconds:function(ref,$el){return $(ref.clsWrapper.replace("%unit%","seconds"),$el)},units:function(){var this$1=this;return["days","hours","minutes","seconds"].filter(function(unit){return this$1[unit]})}},connected:function(){this.start()},disconnected:function(){var this$1=this;this.stop(),this.units.forEach(function(unit){return empty(this$1[unit])})},events:[{name:"visibilitychange",el:document,handler:function(){document.hidden?this.stop():this.start()}}],update:{write:function(){var date,total,this$1=this,timespan=(date=this.date,{total:total=date-Date.now(),seconds:total/1e3%60,minutes:total/1e3/60%60,hours:total/1e3/60/60%24,days:total/1e3/60/60/24});timespan.total<=0&&(this.stop(),timespan.days=timespan.hours=timespan.minutes=timespan.seconds=0),this.units.forEach(function(unit){var digits=String(Math.floor(timespan[unit]));digits=digits.length<2?"0"+digits:digits;var el=this$1[unit];el.textContent!==digits&&((digits=digits.split("")).length!==el.children.length&&html(el,digits.map(function(){return"<span></span>"}).join("")),digits.forEach(function(digit,i){return el.children[i].textContent=digit}))})}},methods:{start:function(){var this$1=this;this.stop(),this.date&&this.units.length&&(this.$emit(),this.timer=setInterval(function(){return this$1.$emit()},1e3))},stop:function(){this.timer&&(clearInterval(this.timer),this.timer=null)}}};var style$1,targetClass="uk-animation-target",Animate={props:{animation:Number},data:{animation:150},computed:{target:function(){return this.$el}},methods:{animate:function(action){var this$1=this;style$1||(style$1=append(document.head,"<style>").sheet).insertRule("."+targetClass+" > * {\n margin-top: 0 !important;\n transform: none !important;\n }");var children=toNodes(this.target.children),propsFrom=children.map(function(el){return getProps(el,!0)}),oldHeight=height(this.target),oldScrollY=window.pageYOffset;action(),Transition.cancel(this.target),children.forEach(Transition.cancel),reset(this.target),this.$update(this.target),fastdom.flush();var newHeight=height(this.target),propsTo=(children=children.concat(toNodes(this.target.children).filter(function(el){return!includes(children,el)}))).map(function(el,i){return!!(el.parentNode&&i in propsFrom)&&(propsFrom[i]?isVisible(el)?getPositionWithMargin(el):{opacity:0}:{opacity:isVisible(el)?1:0})});return propsFrom=propsTo.map(function(props,i){var from=children[i].parentNode===this$1.target&&(propsFrom[i]||getProps(children[i]));if(from)if(props){if(!("opacity"in props)){from.opacity%1?props.opacity=1:delete from.opacity}}else delete from.opacity;return from}),addClass(this.target,targetClass),children.forEach(function(el,i){return propsFrom[i]&&css(el,propsFrom[i])}),css(this.target,"minHeight",oldHeight),window.scroll(window.pageXOffset,oldScrollY),Promise$1.all(children.map(function(el,i){return propsFrom[i]&&propsTo[i]?Transition.start(el,propsTo[i],this$1.animation,"ease"):Promise$1.resolve()}).concat(Transition.start(this.target,{minHeight:newHeight},this.animation,"ease"))).then(function(){children.forEach(function(el,i){return css(el,{display:0===propsTo[i].opacity?"none":"",zIndex:""})}),reset(this$1.target),this$1.$update(this$1.target)},noop)}}};function getProps(el,opacity){var zIndex=css(el,"zIndex");return!!isVisible(el)&&assign({display:"",opacity:opacity?css(el,"opacity"):"0",pointerEvents:"none",position:"absolute",zIndex:"auto"===zIndex?index(el):zIndex},getPositionWithMargin(el))}function reset(el){css(el.children,{height:"",left:"",opacity:"",pointerEvents:"",position:"",top:"",width:""}),removeClass(el,targetClass),css(el,"minHeight","")}function getPositionWithMargin(el){var ref=el.getBoundingClientRect(),height$$1=ref.height,width$$1=ref.width,ref$1=position(el),top=ref$1.top,left=ref$1.left;return{top:top+=toFloat(css(el,"marginTop")),left:left,height:height$$1,width:width$$1}}var Filter={mixins:[Animate],args:"target",props:{target:Boolean,selActive:Boolean},data:{target:null,selActive:!1,attrItem:"uk-filter-control",cls:"uk-active",animation:250},computed:{toggles:function(ref,$el){ref.attrItem;return $$("["+this.attrItem+"],[data-"+this.attrItem+"]",$el)},target:function(ref,$el){return $(ref.target,$el)}},events:[{name:"click",delegate:function(){return"["+this.attrItem+"],[data-"+this.attrItem+"]"},handler:function(e){e.preventDefault(),this.apply(e.current)}}],connected:function(){var this$1=this;if(!1!==this.selActive){var actives=$$(this.selActive,this.$el);this.toggles.forEach(function(el){return toggleClass(el,this$1.cls,includes(actives,el))})}},update:function(data$$1){var toggles=data$$1.toggles,children=data$$1.children;isEqualList(toggles,this.toggles,!1)&&isEqualList(children,this.target.children,!1)||(data$$1.toggles=this.toggles,data$$1.children=this.target.children,this.setState(this.getState(),!1))},methods:{apply:function(el){this.setState(mergeState(el,this.attrItem,this.getState()))},getState:function(){var this$1=this;return this.toggles.filter(function(item){return hasClass(item,this$1.cls)}).reduce(function(state,el){return mergeState(el,this$1.attrItem,state)},{filter:{"":""},sort:[]})},setState:function(state,animate$$1){var this$1=this;void 0===animate$$1&&(animate$$1=!0),state=assign({filter:{"":""},sort:[]},state),trigger(this.$el,"beforeFilter",[this,state]);var children=toNodes(this.target.children);this.toggles.forEach(function(el){return toggleClass(el,this$1.cls,function(el,attr$$1,ref){var stateFilter=ref.filter,ref_sort=ref.sort,stateSort=ref_sort[0],stateOrder=ref_sort[1],ref$1=getFilter(el,attr$$1),filter$$1=ref$1.filter,group=ref$1.group;void 0===group&&(group="");var sort=ref$1.sort,order=ref$1.order;void 0===order&&(order="asc");return Boolean((filter$$1||isUndefined(sort))&&group in stateFilter&&(filter$$1===stateFilter[group]||isUndefined(filter$$1)&&!stateFilter[group])||stateSort&&sort&&stateSort===sort&&stateOrder===order)}(el,this$1.attrItem,state))});var apply$$1=function(){var selector=function(ref){var selector="";return each(ref.filter,function(value){return selector+=value||""}),selector}(state);children.forEach(function(el){return css(el,"display",selector&&!matches(el,selector)?"none":"")});var ref=state.sort,sort=ref[0],order=ref[1];if(sort){var sorted=function(nodes,sort,order){return toNodes(nodes).sort(function(a,b){return data(a,sort).localeCompare(data(b,sort))*("asc"===order||-1)})}(children,sort,order);isEqualList(sorted,children)||sorted.forEach(function(el){return append(this$1.target,el)})}};animate$$1?this.animate(apply$$1).then(function(){return trigger(this$1.$el,"afterFilter",[this$1])}):(apply$$1(),trigger(this.$el,"afterFilter",[this]))}}};function getFilter(el,attr$$1){return parseOptions(data(el,attr$$1),["filter"])}function mergeState(el,attr$$1,state){return toNodes(el).forEach(function(el){var filterBy=getFilter(el,attr$$1),filter$$1=filterBy.filter,group=filterBy.group,sort=filterBy.sort,order=filterBy.order;void 0===order&&(order="asc"),(filter$$1||isUndefined(sort))&&(group?(delete state.filter[""],state.filter[group]=filter$$1):state.filter={"":filter$$1}),isUndefined(sort)||(state.sort=[sort,order])}),state}function isEqualList(listA,listB,strict){return void 0===strict&&(strict=!0),listA=toNodes(listA),listB=toNodes(listB),listA.length===listB.length&&listA.every(function(el,i){return strict?el===listB[i]:~listB.indexOf(el)})}var Animations={slide:{show:function(dir){return[{transform:translate(-100*dir)},{transform:translate()}]},percent:function(current){return translated(current)},translate:function(percent,dir){return[{transform:translate(-100*dir*percent)},{transform:translate(100*dir*(1-percent))}]}}};function translated(el){return Math.abs(css(el,"transform").split(",")[4]/el.offsetWidth)||0}function translate(value,unit){return void 0===value&&(value=0),void 0===unit&&(unit="%"),"translateX("+value+(value?unit:"")+")"}function scale3d(value){return"scale3d("+value+", "+value+", 1)"}var Animations$1=assign({},Animations,{fade:{show:function(){return[{opacity:0},{opacity:1}]},percent:function(current){return 1-css(current,"opacity")},translate:function(percent){return[{opacity:1-percent},{opacity:percent}]}},scale:{show:function(){return[{opacity:0,transform:scale3d(.8)},{opacity:1,transform:scale3d(1)}]},percent:function(current){return 1-css(current,"opacity")},translate:function(percent){return[{opacity:1-percent,transform:scale3d(1-.2*percent)},{opacity:percent,transform:scale3d(.8+.2*percent)}]}}});function triggerUpdate(el,type,data$$1){trigger(el,createEvent(type,!1,!1,data$$1))}var Slider={attrs:!0,mixins:[{props:{autoplay:Boolean,autoplayInterval:Number,pauseOnHover:Boolean},data:{autoplay:!1,autoplayInterval:7e3,pauseOnHover:!0},connected:function(){this.startAutoplay()},disconnected:function(){this.stopAutoplay()},events:[{name:"visibilitychange",el:document,handler:function(){document.hidden?this.stopAutoplay():this.startAutoplay()}},{name:pointerDown,handler:"stopAutoplay"},{name:"mouseenter",filter:function(){return this.autoplay},handler:function(){this.isHovering=!0}},{name:"mouseleave",filter:function(){return this.autoplay},handler:function(){this.isHovering=!1}}],methods:{startAutoplay:function(){var this$1=this;this.stopAutoplay(),this.autoplay&&(this.interval=setInterval(function(){return!(this$1.isHovering&&this$1.pauseOnHover)&&!this$1.stack.length&&this$1.show("next")},this.autoplayInterval))},stopAutoplay:function(){this.interval&&clearInterval(this.interval)}}},{data:{threshold:10,preventCatch:!1},init:function(){var this$1=this;["start","move","end"].forEach(function(key){var fn=this$1[key];this$1[key]=function(e){var pos=getPos$1(e).x*(isRtl?-1:1);this$1.prevPos=pos!==this$1.pos?this$1.pos:this$1.prevPos,this$1.pos=pos,fn(e)}})},events:[{name:pointerDown,delegate:function(){return this.slidesSelector},handler:function(e){var el;!isTouch(e)&&(el=e.target,!el.children.length&&el.childNodes.length)||e.button>0||this.length<2||this.preventCatch||this.start(e)}},{name:"dragstart",handler:function(e){e.preventDefault()}}],methods:{start:function(){this.drag=this.pos,this._transitioner?(this.percent=this._transitioner.percent(),this.drag+=this._transitioner.getDistance()*this.percent*this.dir,this._transitioner.translate(this.percent),this._transitioner.cancel(),this.dragging=!0,this.stack=[]):this.prevIndex=this.index,this.unbindMove=on(document,pointerMove,this.move,{capture:!0,passive:!1}),on(window,"scroll",this.unbindMove),on(document,pointerUp,this.end,!0)},move:function(e){var this$1=this,distance=this.pos-this.drag;if(!(0===distance||this.prevPos===this.pos||!this.dragging&&Math.abs(distance)<this.threshold)){e.cancelable&&e.preventDefault(),this.dragging=!0,this.dir=distance<0?1:-1;for(var slides=this.slides,prevIndex=this.prevIndex,dis=Math.abs(distance),nextIndex=this.getIndex(prevIndex+this.dir,prevIndex),width$$1=this._getDistance(prevIndex,nextIndex)||slides[prevIndex].offsetWidth;nextIndex!==prevIndex&&dis>width$$1;)this$1.drag-=width$$1*this$1.dir,prevIndex=nextIndex,dis-=width$$1,nextIndex=this$1.getIndex(prevIndex+this$1.dir,prevIndex),width$$1=this$1._getDistance(prevIndex,nextIndex)||slides[prevIndex].offsetWidth;this.percent=dis/width$$1;var itemShown,prev=slides[prevIndex],next=slides[nextIndex],changed=this.index!==nextIndex,edge=prevIndex===nextIndex;[this.index,this.prevIndex].filter(function(i){return!includes([nextIndex,prevIndex],i)}).forEach(function(i){trigger(slides[i],"itemhidden",[this$1]),edge&&(itemShown=!0,this$1.prevIndex=prevIndex)}),(this.index===prevIndex&&this.prevIndex!==prevIndex||itemShown)&&trigger(slides[this.index],"itemshown",[this]),changed&&(this.prevIndex=prevIndex,this.index=nextIndex,!edge&&trigger(prev,"beforeitemhide",[this]),trigger(next,"beforeitemshow",[this])),this._transitioner=this._translate(Math.abs(this.percent),prev,!edge&&next),changed&&(!edge&&trigger(prev,"itemhide",[this]),trigger(next,"itemshow",[this]))}},end:function(){if(off(window,"scroll",this.unbindMove),this.unbindMove(),off(document,pointerUp,this.end,!0),this.dragging){if(this.dragging=null,this.index===this.prevIndex)this.percent=1-this.percent,this.dir*=-1,this._show(!1,this.index,!0),this._transitioner=null;else{var dirChange=(isRtl?this.dir*(isRtl?1:-1):this.dir)<0==this.prevPos>this.pos;this.index=dirChange?this.index:this.prevIndex,dirChange&&(this.percent=1-this.percent),this.show(this.dir>0&&!dirChange||this.dir<0&&dirChange?"next":"previous",!0)}preventClick()}this.drag=this.percent=null}}},{data:{selNav:!1},computed:{nav:function(ref,$el){return $(ref.selNav,$el)},navItemSelector:function(ref){var attrItem=ref.attrItem;return"["+attrItem+"],[data-"+attrItem+"]"},navItems:function(_,$el){return $$(this.navItemSelector,$el)}},update:[{write:function(){var this$1=this;this.nav&&this.length!==this.nav.children.length&&html(this.nav,this.slides.map(function(_,i){return"<li "+this$1.attrItem+'="'+i+'"><a href="#"></a></li>'}).join("")),toggleClass($$(this.navItemSelector,this.$el).concat(this.nav),"uk-hidden",!this.maxIndex),this.updateNav()},events:["load","resize"]}],events:[{name:"click",delegate:function(){return this.navItemSelector},handler:function(e){e.preventDefault(),e.current.blur(),this.show(data(e.current,this.attrItem))}},{name:"itemshow",handler:"updateNav"}],methods:{updateNav:function(){var this$1=this,i=this.getValidIndex();this.navItems.forEach(function(el){var cmd=data(el,this$1.attrItem);toggleClass(el,this$1.clsActive,toNumber(cmd)===i),toggleClass(el,"uk-invisible",this$1.finite&&("previous"===cmd&&0===i||"next"===cmd&&i>=this$1.maxIndex))})}}}],props:{clsActivated:Boolean,easing:String,index:Number,finite:Boolean,velocity:Number},data:function(){return{easing:"ease",finite:!1,velocity:1,index:0,stack:[],percent:0,clsActive:"uk-active",clsActivated:!1,Transitioner:!1,transitionOptions:{}}},computed:{duration:function(ref,$el){var velocity=ref.velocity;return speedUp($el.offsetWidth/velocity)},length:function(){return this.slides.length},list:function(ref,$el){return $(ref.selList,$el)},maxIndex:function(){return this.length-1},slidesSelector:function(ref){return ref.selList+" > *"},slides:function(){return toNodes(this.list.children)}},events:{itemshown:function(){this.$update(this.list)}},methods:{show:function(index$$1,force){var this$1=this;if(void 0===force&&(force=!1),!this.dragging&&this.length){var stack=this.stack,queueIndex=force?0:stack.length,reset=function(){stack.splice(queueIndex,1),stack.length&&this$1.show(stack.shift(),!0)};if(stack[force?"unshift":"push"](index$$1),!force&&stack.length>1)2===stack.length&&this._transitioner.forward(Math.min(this.duration,200));else{var prevIndex=this.index,prev=hasClass(this.slides,this.clsActive)&&this.slides[prevIndex],nextIndex=this.getIndex(index$$1,this.index),next=this.slides[nextIndex];if(prev!==next){if(this.dir=function(index$$1,prevIndex){return"next"===index$$1?1:"previous"===index$$1?-1:index$$1<prevIndex?-1:1}(index$$1,prevIndex),this.prevIndex=prevIndex,this.index=nextIndex,prev&&trigger(prev,"beforeitemhide",[this]),!trigger(next,"beforeitemshow",[this,prev]))return this.index=this.prevIndex,void reset();var promise=this._show(prev,next,force).then(function(){return prev&&trigger(prev,"itemhidden",[this$1]),trigger(next,"itemshown",[this$1]),new Promise$1(function(resolve){fastdom.write(function(){stack.shift(),stack.length?this$1.show(stack.shift(),!0):this$1._transitioner=null,resolve()})})});return prev&&trigger(prev,"itemhide",[this]),trigger(next,"itemshow",[this]),promise}reset()}}},getIndex:function(index$$1,prev){return void 0===index$$1&&(index$$1=this.index),void 0===prev&&(prev=this.index),clamp(getIndex(index$$1,this.slides,prev,this.finite),0,this.maxIndex)},getValidIndex:function(index$$1,prevIndex){return void 0===index$$1&&(index$$1=this.index),void 0===prevIndex&&(prevIndex=this.prevIndex),this.getIndex(index$$1,prevIndex)},_show:function(prev,next,force){if(this._transitioner=this._getTransitioner(prev,next,this.dir,assign({easing:force?next.offsetWidth<600?"cubic-bezier(0.25, 0.46, 0.45, 0.94)":"cubic-bezier(0.165, 0.84, 0.44, 1)":this.easing},this.transitionOptions)),!force&&!prev)return this._transitioner.translate(1),Promise$1.resolve();var length=this.stack.length;return this._transitioner[length>1?"forward":"show"](length>1?Math.min(this.duration,75+75/(length-1)):this.duration,this.percent)},_getDistance:function(prev,next){return new this._getTransitioner(prev,prev!==next&&next).getDistance()},_translate:function(percent,prev,next){void 0===prev&&(prev=this.prevIndex),void 0===next&&(next=this.index);var transitioner=this._getTransitioner(prev!==next&&prev,next);return transitioner.translate(percent),transitioner},_getTransitioner:function(prev,next,dir,options){return void 0===prev&&(prev=this.prevIndex),void 0===next&&(next=this.index),void 0===dir&&(dir=this.dir||1),void 0===options&&(options=this.transitionOptions),new this.Transitioner(isNumber(prev)?this.slides[prev]:prev,isNumber(next)?this.slides[next]:next,dir*(isRtl?-1:1),options)}}};function speedUp(x){return.5*x+300}var Slideshow={mixins:[Slider],props:{animation:String},data:{animation:"slide",clsActivated:"uk-transition-active",Animations:Animations,Transitioner:function(prev,next,dir,ref){var animation=ref.animation,easing=ref.easing,percent=animation.percent,translate=animation.translate,show=animation.show;void 0===show&&(show=noop);var props=show(dir),deferred=new Deferred;return{dir:dir,show:function(duration,percent,linear){var this$1=this;void 0===percent&&(percent=0);var timing=linear?"linear":easing;return duration-=Math.round(duration*clamp(percent,-1,1)),this.translate(percent),triggerUpdate(next,"itemin",{percent:percent,duration:duration,timing:timing,dir:dir}),triggerUpdate(prev,"itemout",{percent:1-percent,duration:duration,timing:timing,dir:dir}),Promise$1.all([Transition.start(next,props[1],duration,timing),Transition.start(prev,props[0],duration,timing)]).then(function(){this$1.reset(),deferred.resolve()},noop),deferred.promise},stop:function(){return Transition.stop([next,prev])},cancel:function(){Transition.cancel([next,prev])},reset:function(){for(var prop in props[0])css([next,prev],prop,"")},forward:function(duration,percent){return void 0===percent&&(percent=this.percent()),Transition.cancel([next,prev]),this.show(duration,percent,!0)},translate:function(percent){this.reset();var props=translate(percent,dir);css(next,props[1]),css(prev,props[0]),triggerUpdate(next,"itemtranslatein",{percent:percent,dir:dir}),triggerUpdate(prev,"itemtranslateout",{percent:1-percent,dir:dir})},percent:function(){return percent(prev||next,next,dir)},getDistance:function(){return prev.offsetWidth}}}},computed:{animation:function(ref){var animation=ref.animation,Animations$$1=ref.Animations;return assign(animation in Animations$$1?Animations$$1[animation]:Animations$$1.slide,{name:animation})},transitionOptions:function(){return{animation:this.animation}}},events:{"itemshow itemhide itemshown itemhidden":function(ref){var target=ref.target;this.$update(target)},itemshow:function(){isNumber(this.prevIndex)&&fastdom.flush()},beforeitemshow:function(ref){addClass(ref.target,this.clsActive)},itemshown:function(ref){addClass(ref.target,this.clsActivated)},itemhidden:function(ref){removeClass(ref.target,this.clsActive,this.clsActivated)}}},LightboxPanel={mixins:[Container,Modal,Togglable,Slideshow],functional:!0,props:{delayControls:Number,preload:Number,videoAutoplay:Boolean,template:String},data:function(){return{preload:1,videoAutoplay:!1,delayControls:3e3,items:[],cls:"uk-open",clsPage:"uk-lightbox-page",selList:".uk-lightbox-items",attrItem:"uk-lightbox-item",selClose:".uk-close-large",pauseOnHover:!1,velocity:2,Animations:Animations$1,template:'<div class="uk-lightbox uk-overflow-hidden"> <ul class="uk-lightbox-items"></ul> <div class="uk-lightbox-toolbar uk-position-top uk-text-right uk-transition-slide-top uk-transition-opaque"> <button class="uk-lightbox-toolbar-icon uk-close-large" type="button" uk-close></button> </div> <a class="uk-lightbox-button uk-position-center-left uk-position-medium uk-transition-fade" href="#" uk-slidenav-previous uk-lightbox-item="previous"></a> <a class="uk-lightbox-button uk-position-center-right uk-position-medium uk-transition-fade" href="#" uk-slidenav-next uk-lightbox-item="next"></a> <div class="uk-lightbox-toolbar uk-lightbox-caption uk-position-bottom uk-text-center uk-transition-slide-bottom uk-transition-opaque"></div> </div>'}},created:function(){var this$1=this;this.$mount(append(this.container,this.template)),this.caption=$(".uk-lightbox-caption",this.$el),this.items.forEach(function(){return append(this$1.list,"<li></li>")})},events:[{name:pointerMove+" "+pointerDown+" keydown",handler:"showControls"},{name:"click",self:!0,delegate:function(){return this.slidesSelector},handler:function(e){e.preventDefault(),this.hide()}},{name:"shown",self:!0,handler:"showControls"},{name:"hide",self:!0,handler:function(){this.hideControls(),removeClass(this.slides,this.clsActive),Transition.stop(this.slides)}},{name:"keyup",el:document,handler:function(e){if(this.isToggled(this.$el))switch(e.keyCode){case 37:this.show("previous");break;case 39:this.show("next")}}},{name:"beforeitemshow",handler:function(e){this.isToggled()||(this.preventCatch=!0,e.preventDefault(),this.toggleNow(this.$el,!0),this.animation=Animations$1.scale,removeClass(e.target,this.clsActive),this.stack.splice(1,0,this.index))}},{name:"itemshow",handler:function(ref){var i=index(ref.target),caption=this.getItem(i).caption;css(this.caption,"display",caption?"":"none"),html(this.caption,caption);for(var j=0;j<=this.preload;j++)this.loadItem(this.getIndex(i+j)),this.loadItem(this.getIndex(i-j))}},{name:"itemshown",handler:function(){this.preventCatch=!1}},{name:"itemload",handler:function(_,item){var matches$$1,this$1=this,source=item.source,type=item.type,alt=item.alt;if(this.setItem(item,"<span uk-spinner></span>"),source)if("image"===type||source.match(/\.(jp(e)?g|png|gif|svg)($|\?)/i))getImage(source).then(function(img){return this$1.setItem(item,'<img width="'+img.width+'" height="'+img.height+'" src="'+source+'" alt="'+(alt||"")+'">')},function(){return this$1.setError(item)});else if("video"===type||source.match(/\.(mp4|webm|ogv)($|\?)/i)){var video=$("<video controls playsinline"+(item.poster?' poster="'+item.poster+'"':"")+' uk-video="'+this.videoAutoplay+'"></video>');attr(video,"src",source),on(video,"error",function(){return this$1.setError(item)}),on(video,"loadedmetadata",function(){attr(video,{width:video.videoWidth,height:video.videoHeight}),this$1.setItem(item,video)})}else if("iframe"===type||source.match(/\.(html|php)($|\?)/i))this.setItem(item,'<iframe class="uk-lightbox-iframe" src="'+source+'" frameborder="0" allowfullscreen></iframe>');else if(matches$$1=source.match(/\/\/.*?youtube(-nocookie)?\.[a-z]+\/watch\?v=([^&\s]+)/)||source.match(/()youtu\.be\/(.*)/)){var id=matches$$1[2],setIframe=function(width$$1,height$$1){return void 0===width$$1&&(width$$1=640),void 0===height$$1&&(height$$1=450),this$1.setItem(item,getIframe("https://www.youtube"+(matches$$1[1]||"")+".com/embed/"+id,width$$1,height$$1,this$1.videoAutoplay))};getImage("https://img.youtube.com/vi/"+id+"/maxresdefault.jpg").then(function(ref){var width$$1=ref.width,height$$1=ref.height;120===width$$1&&90===height$$1?getImage("https://img.youtube.com/vi/"+id+"/0.jpg").then(function(ref){var width$$1=ref.width,height$$1=ref.height;return setIframe(width$$1,height$$1)},setIframe):setIframe(width$$1,height$$1)},setIframe)}else(matches$$1=source.match(/(\/\/.*?)vimeo\.[a-z]+\/([0-9]+).*?/))&&ajax("https://vimeo.com/api/oembed.json?maxwidth=1920&url="+encodeURI(source),{responseType:"json",withCredentials:!1}).then(function(ref){var ref_response=ref.response,height$$1=ref_response.height,width$$1=ref_response.width;return this$1.setItem(item,getIframe("https://player.vimeo.com/video/"+matches$$1[2],width$$1,height$$1,this$1.videoAutoplay))},function(){return this$1.setError(item)})}}],methods:{loadItem:function(index$$1){void 0===index$$1&&(index$$1=this.index);var item=this.getItem(index$$1);item.content||trigger(this.$el,"itemload",[item])},getItem:function(index$$1){return void 0===index$$1&&(index$$1=this.index),this.items[index$$1]||{}},setItem:function(item,content){assign(item,{content:content});var el=html(this.slides[this.items.indexOf(item)],content);trigger(this.$el,"itemloaded",[this,el]),this.$update(el)},setError:function(item){this.setItem(item,'<span uk-icon="icon: bolt; ratio: 2"></span>')},showControls:function(){clearTimeout(this.controlsTimer),this.controlsTimer=setTimeout(this.hideControls,this.delayControls),addClass(this.$el,"uk-active","uk-transition-active")},hideControls:function(){removeClass(this.$el,"uk-active","uk-transition-active")}}};function getIframe(src,width$$1,height$$1,autoplay){return'<iframe src="'+src+'" width="'+width$$1+'" height="'+height$$1+'" style="max-width: 100%; box-sizing: border-box;" frameborder="0" allowfullscreen uk-video="autoplay: '+autoplay+'" uk-responsive></iframe>'}var obj,props=merge(LightboxPanel,"props"),defaults=merge(LightboxPanel,"data"),Lightbox={install:function(UIkit){UIkit.lightboxPanel||UIkit.component("lightboxPanel",LightboxPanel)},attrs:!0,props:assign({toggle:String},props),data:assign({toggle:"a"},Object.keys(props).reduce(function(data$$1,key){return data$$1[key]=defaults[key],data$$1},{})),computed:{toggles:function(ref,$el){return $$(ref.toggle,$el)}},disconnected:function(){this._destroy()},events:[{name:"click",delegate:function(){return this.toggle+":not(.uk-disabled)"},handler:function(e){e.preventDefault(),e.current.blur(),this.show(index(this.toggles,e.current))}}],update:function(data$$1){var listA,listB;(data$$1.toggles=data$$1.toggles||this.toggles,this.panel&&this.animation&&(this.panel.$props.animation=this.animation,this.panel.$emit()),this.panel&&(listA=data$$1.toggles,listB=this.toggles,listA.length!==listB.length||!listA.every(function(el,i){return el===listB[i]})))&&(data$$1.toggles=this.toggles,this._destroy(),this._init())},methods:{_init:function(){return this.panel=this.panel||this.$create("lightboxPanel",assign({},this.$props,{items:this.toggles.reduce(function(items,el){return items.push(["href","caption","type","poster","alt"].reduce(function(obj,attr$$1){return obj["href"===attr$$1?"source":attr$$1]=data(el,attr$$1),obj},{})),items},[])}))},_destroy:function(){this.panel&&(this.panel.$destroy(!0),this.panel=null)},show:function(index$$1){return this.panel||this._init(),this.panel.show(index$$1)},hide:function(){return this.panel&&this.panel.hide()}}};function merge(options,prop){return assign.apply(void 0,[{}].concat(options.mixins?options.mixins.map(function(mixin){return merge(mixin,prop)}):[],[isFunction(options[prop])?options[prop]():options[prop]]))}var containers={},Notification={functional:!0,args:["message","status"],data:{message:"",status:"",timeout:5e3,group:null,pos:"top-center",clsClose:"uk-notification-close",clsMsg:"uk-notification-message"},install:function(UIkit){UIkit.notification.closeAll=function(group,immediate){apply(document.body,function(el){var notification=UIkit.getComponent(el,"notification");!notification||group&&group!==notification.group||notification.close(immediate)})}},created:function(){containers[this.pos]||(containers[this.pos]=append(this.$container,'<div class="uk-notification uk-notification-'+this.pos+'"></div>'));var container=css(containers[this.pos],"display","block");this.$mount(append(container,'<div class="'+this.clsMsg+(this.status?" "+this.clsMsg+"-"+this.status:"")+'"> <a href="#" class="'+this.clsClose+'" data-uk-close></a> <div>'+this.message+"</div> </div>"))},ready:function(){var this$1=this,marginBottom=toFloat(css(this.$el,"marginBottom"));Transition.start(css(this.$el,{opacity:0,marginTop:-this.$el.offsetHeight,marginBottom:0}),{opacity:1,marginTop:0,marginBottom:marginBottom}).then(function(){this$1.timeout&&(this$1.timer=setTimeout(this$1.close,this$1.timeout))})},events:(obj={click:function(e){closest(e.target,'a[href="#"]')&&e.preventDefault(),this.close()}},obj[pointerEnter]=function(){this.timer&&clearTimeout(this.timer)},obj[pointerLeave]=function(){this.timeout&&(this.timer=setTimeout(this.close,this.timeout))},obj),methods:{close:function(immediate){var this$1=this,removeFn=function(){trigger(this$1.$el,"close",[this$1]),remove(this$1.$el),containers[this$1.pos].children.length||css(containers[this$1.pos],"display","none")};this.timer&&clearTimeout(this.timer),immediate?removeFn():Transition.start(this.$el,{opacity:0,marginTop:-this.$el.offsetHeight,marginBottom:0}).then(removeFn)}}};var props$1=["x","y","bgx","bgy","rotate","scale","color","backgroundColor","borderColor","opacity","blur","hue","grayscale","invert","saturate","sepia","fopacity"],Parallax={props:props$1.reduce(function(props,prop){return props[prop]="list",props},{media:"media"}),data:props$1.reduce(function(data$$1,prop){return data$$1[prop]=void 0,data$$1},{media:!1}),computed:{props:function(properties,$el){var this$1=this;return props$1.reduce(function(props,prop){if(isUndefined(properties[prop]))return props;var pos,bgPos,diff,isColor=prop.match(/color/i),isCssProp=isColor||"opacity"===prop,steps=properties[prop].slice(0);isCssProp&&css($el,prop,""),steps.length<2&&steps.unshift(("scale"===prop?1:isCssProp?css($el,prop):0)||0);var unit=includes(steps.join(""),"%")?"%":"px";if(isColor){var color=$el.style.color;steps=steps.map(function(step){return css(css($el,"color",step),"color").split(/[(),]/g).slice(1,-1).concat(1).slice(0,4).map(function(n){return toFloat(n)})}),$el.style.color=color}else steps=steps.map(toFloat);if(prop.match(/^bg/))if(css($el,"background-position-"+prop[2],""),bgPos=css($el,"backgroundPosition").split(" ")["x"===prop[2]?0:1],this$1.covers){var min=Math.min.apply(Math,steps),max=Math.max.apply(Math,steps),down=steps.indexOf(min)<steps.indexOf(max);diff=max-min,steps=steps.map(function(step){return step-(down?min:max)}),pos=(down?-diff:0)+"px"}else pos=bgPos;return props[prop]={steps:steps,unit:unit,pos:pos,bgPos:bgPos,diff:diff},props},{})},bgProps:function(){var this$1=this;return["bgx","bgy"].filter(function(bg){return bg in this$1.props})},covers:function(_,$el){return function(el){var backgroundSize=el.style.backgroundSize,covers="cover"===css(css(el,"backgroundSize",""),"backgroundSize");return el.style.backgroundSize=backgroundSize,covers}($el)}},disconnected:function(){delete this._image},update:[{read:function(data$$1){var this$1=this;if(data$$1.active=!this.media||window.matchMedia(this.media).matches,data$$1.image&&(data$$1.image.dimEl={width:this.$el.offsetWidth,height:this.$el.offsetHeight}),!("image"in data$$1)&&this.covers&&this.bgProps.length){var src=css(this.$el,"backgroundImage").replace(/^none|url\(["']?(.+?)["']?\)$/,"$1");src&&(data$$1.image=!1,getImage(src).then(function(img){data$$1.image={width:img.naturalWidth,height:img.naturalHeight},this$1.$emit()}))}},write:function(ref){var this$1=this,image=ref.image,active=ref.active;if(image)if(active){var dimEl=image.dimEl,dim=Dimensions.cover(image,dimEl);this.bgProps.forEach(function(prop){var ref=this$1.props[prop],diff=ref.diff,bgPos=ref.bgPos,steps=ref.steps,attr$$1="bgy"===prop?"height":"width",span=dim[attr$$1]-dimEl[attr$$1];if(bgPos.match(/%$|0px/)){if(span<diff)dimEl[attr$$1]=dim[attr$$1]+diff-span;else if(span>diff){var bgPosFloat=parseFloat(bgPos);bgPosFloat&&(this$1.props[prop].steps=steps.map(function(step){return step-(span-diff)/(100/bgPosFloat)}))}dim=Dimensions.cover(image,dimEl)}}),css(this.$el,{backgroundSize:dim.width+"px "+dim.height+"px",backgroundRepeat:"no-repeat"})}else css(this.$el,{backgroundSize:"",backgroundRepeat:""})},events:["load","resize"]}],methods:{reset:function(){var this$1=this;each(this.getCss(0),function(_,prop){return css(this$1.$el,prop,"")})},getCss:function(percent){var props=this.props,translated=!1;return Object.keys(props).reduce(function(css$$1,prop){var ref=props[prop],steps=ref.steps,unit=ref.unit,pos=ref.pos,value=getValue(steps,percent);switch(prop){case"x":case"y":if(translated)break;var ref$1=["x","y"].map(function(dir){return prop===dir?value+unit:props[dir]?getValue(props[dir].steps,percent)+props[dir].unit:0}),x=ref$1[0],y=ref$1[1];translated=css$$1.transform+=" translate3d("+x+", "+y+", 0)";break;case"rotate":css$$1.transform+=" rotate("+value+"deg)";break;case"scale":css$$1.transform+=" scale("+value+")";break;case"bgy":case"bgx":css$$1["background-position-"+prop[2]]="calc("+pos+" + "+(value+unit)+")";break;case"color":case"backgroundColor":case"borderColor":var ref$2=getStep(steps,percent),start=ref$2[0],end=ref$2[1],p=ref$2[2];css$$1[prop]="rgba("+start.map(function(value,i){return value+=p*(end[i]-value),3===i?toFloat(value):parseInt(value,10)}).join(",")+")";break;case"blur":css$$1.filter+=" blur("+value+"px)";break;case"hue":css$$1.filter+=" hue-rotate("+value+"deg)";break;case"fopacity":css$$1.filter+=" opacity("+value+"%)";break;case"grayscale":case"invert":case"saturate":case"sepia":css$$1.filter+=" "+prop+"("+value+"%)";break;default:css$$1[prop]=value}return css$$1},{transform:"",filter:""})}}};function getStep(steps,percent){var count=steps.length-1,index$$1=Math.min(Math.floor(count*percent),count-1),step=steps.slice(index$$1,index$$1+2);return step.push(1===percent?1:percent%(1/count)*count),step}function getValue(steps,percent){var ref=getStep(steps,percent),start=ref[0],end=ref[1],p=ref[2];return(isNumber(start)?start+Math.abs(start-end)*p*(start<end?1:-1):+end).toFixed(2)}var Parallax$1={mixins:[Parallax],props:{target:String,viewport:Number,easing:Number},data:{target:!1,viewport:1,easing:1},computed:{target:function(ref,$el){var target=ref.target;return target&&query(target,$el)||$el}},update:[{read:function(ref){return{prev:ref.percent,percent:function(percent,easing){return clamp(percent*(1-(easing-easing*percent)))}(scrolledOver(this.target)/(this.viewport||1),this.easing)}},write:function(ref,ref$1){var prev=ref.prev,percent=ref.percent,active=ref.active;"scroll"!==ref$1.type&&(prev=!1),active?prev!==percent&&css(this.$el,this.getCss(percent)):this.reset()},events:["scroll","load","resize"]}]};var SliderReactive={update:[{write:function(){if(!this.stack.length&&!this.dragging){var index$$1=this.getValidIndex();delete this.index,removeClass(this.slides,this.clsActive,this.clsActivated),this.show(index$$1)}},events:["load","resize"]}]};function getLeft(el,list,center){var left=getElLeft(el,list);return center?left-function(el,list){return list.offsetWidth/2-el.offsetWidth/2}(el,list):Math.min(left,getMax(list))}function getMax(list){return Math.max(0,getWidth(list)-list.offsetWidth)}function getWidth(list){return slides(list).reduce(function(right,el){return el.offsetWidth+right},0)}function getElLeft(el,list){return(el.offsetLeft+(isRtl?el.offsetWidth-list.offsetWidth:0))*(isRtl?-1:1)}function triggerUpdate$1(el,type,data$$1){trigger(el,createEvent(type,!1,!1,data$$1))}function slides(list){return toNodes(list.children)}var Slider$1={mixins:[Class,Slider,SliderReactive],props:{center:Boolean,sets:Boolean},data:{center:!1,sets:!1,attrItem:"uk-slider-item",selList:".uk-slider-items",selNav:".uk-slider-nav",clsContainer:"uk-slider-container",Transitioner:function(prev,next,dir,ref){var center=ref.center,easing=ref.easing,list=ref.list,deferred=new Deferred,from=prev?getLeft(prev,list,center):getLeft(next,list,center)+next.offsetWidth*dir,to=next?getLeft(next,list,center):from+prev.offsetWidth*dir*(isRtl?-1:1);return{dir:dir,show:function(duration,percent,linear){void 0===percent&&(percent=0);var timing=linear?"linear":easing;return duration-=Math.round(duration*clamp(percent,-1,1)),this.translate(percent),prev&&this.updateTranslates(),percent=prev?percent:clamp(percent,0,1),triggerUpdate$1(this.getItemIn(),"itemin",{percent:percent,duration:duration,timing:timing,dir:dir}),prev&&triggerUpdate$1(this.getItemIn(!0),"itemout",{percent:1-percent,duration:duration,timing:timing,dir:dir}),Transition.start(list,{transform:translate(-to*(isRtl?-1:1),"px")},duration,timing).then(deferred.resolve,noop),deferred.promise},stop:function(){return Transition.stop(list)},cancel:function(){Transition.cancel(list)},reset:function(){css(list,"transform","")},forward:function(duration,percent){return void 0===percent&&(percent=this.percent()),Transition.cancel(list),this.show(duration,percent,!0)},translate:function(percent){var distance=this.getDistance()*dir*(isRtl?-1:1);css(list,"transform",translate(clamp(distance-distance*percent-to,-getWidth(list),list.offsetWidth)*(isRtl?-1:1),"px")),this.updateTranslates(),prev&&(percent=clamp(percent,-1,1),triggerUpdate$1(this.getItemIn(),"itemtranslatein",{percent:percent,dir:dir}),triggerUpdate$1(this.getItemIn(!0),"itemtranslateout",{percent:1-percent,dir:dir}))},percent:function(){return Math.abs((css(list,"transform").split(",")[4]*(isRtl?-1:1)+from)/(to-from))},getDistance:function(){return Math.abs(to-from)},getItemIn:function(out){void 0===out&&(out=!1);var actives=this.getActives(),all=sortBy(slides(list),"offsetLeft"),i=index(all,actives[dir*(out?-1:1)>0?actives.length-1:0]);return~i&&all[i+(prev&&!out?dir:0)]},getActives:function(){var left=getLeft(prev||next,list,center);return sortBy(slides(list).filter(function(slide){var slideLeft=getElLeft(slide,list);return slideLeft>=left&&slideLeft+slide.offsetWidth<=list.offsetWidth+left}),"offsetLeft")},updateTranslates:function(){var actives=this.getActives();slides(list).forEach(function(slide){var isActive=includes(actives,slide);triggerUpdate$1(slide,"itemtranslate"+(isActive?"in":"out"),{percent:isActive?1:0,dir:slide.offsetLeft<=next.offsetLeft?1:-1})})}}}},computed:{avgWidth:function(){return getWidth(this.list)/this.length},finite:function(ref){return ref.finite||getWidth(this.list)<this.list.offsetWidth+slides(this.list).reduce(function(right,el){return Math.max(right,el.offsetWidth)},0)+this.center},maxIndex:function(){if(!this.finite||this.center&&!this.sets)return this.length-1;if(this.center)return this.sets[this.sets.length-1];css(this.slides,"order","");for(var max=getMax(this.list),i=this.length;i--;)if(getElLeft(this.list.children[i],this.list)<max)return Math.min(i+1,this.length-1);return 0},sets:function(ref){var this$1=this,sets=ref.sets,width$$1=this.list.offsetWidth/(this.center?2:1),left=0,leftCenter=width$$1,slideLeft=0;return(sets=sets&&this.slides.reduce(function(sets,slide,i){var slideWidth=offset(slide).width;if(slideLeft+slideWidth>left&&(!this$1.center&&i>this$1.maxIndex&&(i=this$1.maxIndex),!includes(sets,i))){var cmp=this$1.slides[i+1];this$1.center&&cmp&&slideWidth<leftCenter-offset(cmp).width/2?leftCenter-=slideWidth:(leftCenter=width$$1,sets.push(i),left=slideLeft+width$$1+(this$1.center?slideWidth/2:0))}return slideLeft+=slideWidth,sets},[]))&&sets.length&&sets},transitionOptions:function(){return{center:this.center,list:this.list}}},connected:function(){toggleClass(this.$el,this.clsContainer,!$("."+this.clsContainer,this.$el))},update:{write:function(){var this$1=this;$$("["+this.attrItem+"],[data-"+this.attrItem+"]",this.$el).forEach(function(el){var index$$1=data(el,this$1.attrItem);this$1.maxIndex&&toggleClass(el,"uk-hidden",isNumeric(index$$1)&&(this$1.sets&&!includes(this$1.sets,toFloat(index$$1))||index$$1>this$1.maxIndex))})},events:["load","resize"]},events:{beforeitemshow:function(e){!this.dragging&&this.sets&&this.stack.length<2&&!includes(this.sets,this.index)&&(this.index=this.getValidIndex());var diff=Math.abs(this.index-this.prevIndex+(this.dir>0&&this.index<this.prevIndex||this.dir<0&&this.index>this.prevIndex?(this.maxIndex+1)*this.dir:0));if(!this.dragging&&diff>1){for(var i=0;i<diff;i++)this.stack.splice(1,0,this.dir>0?"next":"previous");e.preventDefault()}else this.duration=speedUp(this.avgWidth/this.velocity)*((this.dir<0||!this.slides[this.prevIndex]?this.slides[this.index]:this.slides[this.prevIndex]).offsetWidth/this.avgWidth),this.reorder()},itemshow:function(){!isUndefined(this.prevIndex)&&addClass(this._getTransitioner().getItemIn(),this.clsActive)},itemshown:function(){var this$1=this,actives=this._getTransitioner(this.index).getActives();this.slides.forEach(function(slide){return toggleClass(slide,this$1.clsActive,includes(actives,slide))}),(!this.sets||includes(this.sets,toFloat(this.index)))&&this.slides.forEach(function(slide){return toggleClass(slide,this$1.clsActivated,includes(actives,slide))})}},methods:{reorder:function(){var this$1=this;if(css(this.slides,"order",""),!this.finite){var index$$1=this.dir>0&&this.slides[this.prevIndex]?this.prevIndex:this.index;if(this.slides.forEach(function(slide,i){return css(slide,"order",this$1.dir>0&&i<index$$1?1:this$1.dir<0&&i>=this$1.index?-1:"")}),this.center)for(var next=this.slides[index$$1],width$$1=this.list.offsetWidth/2-next.offsetWidth/2,j=0;width$$1>0;){var slideIndex=this$1.getIndex(--j+index$$1,index$$1),slide=this$1.slides[slideIndex];css(slide,"order",slideIndex>index$$1?-2:-1),width$$1-=slide.offsetWidth}}},getValidIndex:function(index$$1,prevIndex){var prev;if(void 0===index$$1&&(index$$1=this.index),void 0===prevIndex&&(prevIndex=this.prevIndex),index$$1=this.getIndex(index$$1,prevIndex),!this.sets)return index$$1;do{if(includes(this.sets,index$$1))return index$$1;prev=index$$1,index$$1=this.getIndex(index$$1+this.dir,prevIndex)}while(index$$1!==prev);return index$$1}}},SliderParallax={mixins:[Parallax],data:{selItem:"!li"},computed:{item:function(ref,$el){return query(ref.selItem,$el)}},events:[{name:"itemshown",self:!0,el:function(){return this.item},handler:function(){css(this.$el,this.getCss(.5))}},{name:"itemin itemout",self:!0,el:function(){return this.item},handler:function(ref){var type=ref.type,ref_detail=ref.detail,percent=ref_detail.percent,duration=ref_detail.duration,timing=ref_detail.timing,dir=ref_detail.dir;Transition.cancel(this.$el),css(this.$el,this.getCss(getCurrent(type,dir,percent))),Transition.start(this.$el,this.getCss(isIn(type)?.5:dir>0?1:0),duration,timing).catch(noop)}},{name:"transitioncanceled transitionend",self:!0,el:function(){return this.item},handler:function(){Transition.cancel(this.$el)}},{name:"itemtranslatein itemtranslateout",self:!0,el:function(){return this.item},handler:function(ref){var type=ref.type,ref_detail=ref.detail,percent=ref_detail.percent,dir=ref_detail.dir;Transition.cancel(this.$el),css(this.$el,this.getCss(getCurrent(type,dir,percent)))}}]};function isIn(type){return endsWith(type,"in")}function getCurrent(type,dir,percent){return percent/=2,isIn(type)?dir<0?1-percent:percent:dir<0?percent:1-percent}var obj$1,obj$2,Animations$2=assign({},Animations,{fade:{show:function(){return[{opacity:0,zIndex:0},{zIndex:-1}]},percent:function(current){return 1-css(current,"opacity")},translate:function(percent){return[{opacity:1-percent,zIndex:0},{zIndex:-1}]}},scale:{show:function(){return[{opacity:0,transform:scale3d(1.5),zIndex:0},{zIndex:-1}]},percent:function(current){return 1-css(current,"opacity")},translate:function(percent){return[{opacity:1-percent,transform:scale3d(1+.5*percent),zIndex:0},{zIndex:-1}]}},pull:{show:function(dir){return dir<0?[{transform:translate(30),zIndex:-1},{transform:translate(),zIndex:0}]:[{transform:translate(-100),zIndex:0},{transform:translate(),zIndex:-1}]},percent:function(current,next,dir){return dir<0?1-translated(next):translated(current)},translate:function(percent,dir){return dir<0?[{transform:translate(30*percent),zIndex:-1},{transform:translate(-100*(1-percent)),zIndex:0}]:[{transform:translate(100*-percent),zIndex:0},{transform:translate(30*(1-percent)),zIndex:-1}]}},push:{show:function(dir){return dir<0?[{transform:translate(100),zIndex:0},{transform:translate(),zIndex:-1}]:[{transform:translate(-30),zIndex:-1},{transform:translate(),zIndex:0}]},percent:function(current,next,dir){return dir>0?1-translated(next):translated(current)},translate:function(percent,dir){return dir<0?[{transform:translate(100*percent),zIndex:0},{transform:translate(-30*(1-percent)),zIndex:-1}]:[{transform:translate(-30*percent),zIndex:-1},{transform:translate(100*(1-percent)),zIndex:0}]}}}),Slideshow$1={mixins:[Class,Slideshow,SliderReactive],props:{ratio:String,minHeight:Boolean,maxHeight:Boolean},data:{ratio:"16:9",minHeight:!1,maxHeight:!1,selList:".uk-slideshow-items",attrItem:"uk-slideshow-item",selNav:".uk-slideshow-nav",Animations:Animations$2},update:{read:function(){var ref=this.ratio.split(":").map(Number),width$$1=ref[0],height$$1=ref[1];return height$$1=height$$1*this.$el.offsetWidth/width$$1,this.minHeight&&(height$$1=Math.max(this.minHeight,height$$1)),this.maxHeight&&(height$$1=Math.min(this.maxHeight,height$$1)),{height:height$$1}},write:function(ref){var hgt=ref.height;height(this.list,Math.floor(hgt))},events:["load","resize"]}},Sortable={mixins:[Class,Animate],props:{group:String,threshold:Number,clsItem:String,clsPlaceholder:String,clsDrag:String,clsDragState:String,clsBase:String,clsNoDrag:String,clsEmpty:String,clsCustom:String,handle:String},data:{group:!1,threshold:5,clsItem:"uk-sortable-item",clsPlaceholder:"uk-sortable-placeholder",clsDrag:"uk-sortable-drag",clsDragState:"uk-drag",clsBase:"uk-sortable",clsNoDrag:"uk-sortable-nodrag",clsEmpty:"uk-sortable-empty",clsCustom:"",handle:!1},init:function(){var this$1=this;["init","start","move","end"].forEach(function(key){var fn=this$1[key];this$1[key]=function(e){this$1.scrollY=window.pageYOffset;var ref=getPos$1(e),x=ref.x,y=ref.y;this$1.pos={x:x,y:y},fn(e)}})},events:(obj$1={},obj$1[pointerDown]="init",obj$1),update:{write:function(){if(this.clsEmpty&&toggleClass(this.$el,this.clsEmpty,!this.$el.children.length),this.drag){offset(this.drag,{top:this.pos.y+this.origin.top,left:this.pos.x+this.origin.left});var scroll,top=offset(this.drag).top,bottom=top+this.drag.offsetHeight;top>0&&top<this.scrollY?scroll=this.scrollY-5:bottom<height(document)&&bottom>height(window)+this.scrollY&&(scroll=this.scrollY+5),scroll&&setTimeout(function(){return window.scroll(window.pageXOffset,scroll)},5)}}},methods:{init:function(e){var target=e.target,button=e.button,defaultPrevented=e.defaultPrevented,placeholder=toNodes(this.$el.children).filter(function(el){return within(target,el)})[0];!placeholder||isInput(e.target)||this.handle&&!within(target,this.handle)||button>0||within(target,"."+this.clsNoDrag)||defaultPrevented||(e.preventDefault(),this.touched=[this],this.placeholder=placeholder,this.origin=assign({target:target,index:index(placeholder)},this.pos),on(document,pointerMove,this.move),on(document,pointerUp,this.end),on(window,"scroll",this.scroll),this.threshold||this.start(e))},start:function(e){this.drag=append(this.$container,this.placeholder.outerHTML.replace(/^<li/i,"<div").replace(/li>$/i,"div>")),css(this.drag,assign({boxSizing:"border-box",width:this.placeholder.offsetWidth,height:this.placeholder.offsetHeight},css(this.placeholder,["paddingLeft","paddingRight","paddingTop","paddingBottom"]))),attr(this.drag,"uk-no-boot",""),addClass(this.drag,this.clsDrag,this.clsCustom),height(this.drag.firstElementChild,height(this.placeholder.firstElementChild));var ref=offset(this.placeholder),left=ref.left,top=ref.top;assign(this.origin,{left:left-this.pos.x,top:top-this.pos.y}),addClass(this.placeholder,this.clsPlaceholder),addClass(this.$el.children,this.clsItem),addClass(document.documentElement,this.clsDragState),trigger(this.$el,"start",[this,this.placeholder]),this.move(e)},move:function(e){if(this.drag){this.$emit();var target="mousemove"===e.type?e.target:document.elementFromPoint(this.pos.x-document.body.scrollLeft,this.pos.y-document.body.scrollTop),sortable=this.getSortable(target),previous=this.getSortable(this.placeholder),move=sortable!==previous;if(sortable&&!within(target,this.placeholder)&&(!move||sortable.group&&sortable.group===previous.group)){if(target=sortable.$el===target.parentNode&&target||toNodes(sortable.$el.children).filter(function(element){return within(target,element)})[0],move)previous.remove(this.placeholder);else if(!target)return;sortable.insert(this.placeholder,target),includes(this.touched,sortable)||this.touched.push(sortable)}}else(Math.abs(this.pos.x-this.origin.x)>this.threshold||Math.abs(this.pos.y-this.origin.y)>this.threshold)&&this.start(e)},scroll:function(){var scroll=window.pageYOffset;scroll!==this.scrollY&&(this.pos.y+=scroll-this.scrollY,this.scrollY=scroll,this.$emit())},end:function(e){if(off(document,pointerMove,this.move),off(document,pointerUp,this.end),off(window,"scroll",this.scroll),this.drag){preventClick();var sortable=this.getSortable(this.placeholder);this===sortable?this.origin.index!==index(this.placeholder)&&trigger(this.$el,"moved",[this,this.placeholder]):(trigger(sortable.$el,"added",[sortable,this.placeholder]),trigger(this.$el,"removed",[this,this.placeholder])),trigger(this.$el,"stop",[this,this.placeholder]),remove(this.drag),this.drag=null;var classes=this.touched.map(function(sortable){return sortable.clsPlaceholder+" "+sortable.clsItem}).join(" ");this.touched.forEach(function(sortable){return removeClass(sortable.$el.children,classes)}),removeClass(document.documentElement,this.clsDragState)}else"mouseup"!==e.type&&within(e.target,"a[href]")&&(location.href=closest(e.target,"a[href]").href)},insert:function(element,target){var this$1=this;addClass(this.$el.children,this.clsItem);var insert=function(){target?!within(element,this$1.$el)||function(element,target){return element.parentNode===target.parentNode&&index(element)>index(target)}(element,target)?before(target,element):after(target,element):append(this$1.$el,element)};this.animation?this.animate(insert):insert()},remove:function(element){within(element,this.$el)&&(this.animation?this.animate(function(){return remove(element)}):remove(element))},getSortable:function(element){return element&&(this.$getComponent(element,"sortable")||this.getSortable(element.parentNode))}}};var actives=[],Tooltip={attrs:!0,args:"title",mixins:[Container,Togglable,Position],props:{delay:Number,title:String},data:{pos:"top",title:"",delay:0,animation:["uk-animation-scale-up"],duration:100,cls:"uk-active",clsPos:"uk-tooltip"},beforeConnect:function(){this._hasTitle=hasAttr(this.$el,"title"),attr(this.$el,{title:"","aria-expanded":!1})},disconnected:function(){this.hide(),attr(this.$el,{title:this._hasTitle?this.title:null,"aria-expanded":null})},methods:{show:function(){var this$1=this;includes(actives,this)||(actives.forEach(function(active){return active.hide()}),actives.push(this),this._unbind=on(document,"click",function(e){return!within(e.target,this$1.$el)&&this$1.hide()}),clearTimeout(this.showTimer),this.tooltip=append(this.container,'<div class="'+this.clsPos+'" aria-hidden><div class="'+this.clsPos+'-inner">'+this.title+"</div></div>"),attr(this.$el,"aria-expanded",!0),this.positionAt(this.tooltip,this.$el),this.origin="y"===this.getAxis()?flipPosition(this.dir)+"-"+this.align:this.align+"-"+flipPosition(this.dir),this.showTimer=setTimeout(function(){this$1.toggleElement(this$1.tooltip,!0),this$1.hideTimer=setInterval(function(){isVisible(this$1.$el)||this$1.hide()},150)},this.delay))},hide:function(){var index$$1=actives.indexOf(this);!~index$$1||matches(this.$el,"input")&&this.$el===document.activeElement||(actives.splice(index$$1,1),clearTimeout(this.showTimer),clearInterval(this.hideTimer),attr(this.$el,"aria-expanded",!1),this.toggleElement(this.tooltip,!1),this.tooltip&&remove(this.tooltip),this.tooltip=!1,this._unbind())}},events:(obj$2={},obj$2["focus "+pointerEnter+" "+pointerDown]=function(e){e.type===pointerDown&&isTouch(e)||this.show()},obj$2.blur="hide",obj$2[pointerLeave]=function(e){isTouch(e)||this.hide()},obj$2)},Upload={props:{allow:String,clsDragover:String,concurrent:Number,maxSize:Number,method:String,mime:String,msgInvalidMime:String,msgInvalidName:String,msgInvalidSize:String,multiple:Boolean,name:String,params:Object,type:String,url:String},data:{allow:!1,clsDragover:"uk-dragover",concurrent:1,maxSize:0,method:"POST",mime:!1,msgInvalidMime:"Invalid File Type: %s",msgInvalidName:"Invalid File Name: %s",msgInvalidSize:"Invalid File Size: %s Kilobytes Max",multiple:!1,name:"files[]",params:{},type:"",url:"",abort:noop,beforeAll:noop,beforeSend:noop,complete:noop,completeAll:noop,error:noop,fail:noop,load:noop,loadEnd:noop,loadStart:noop,progress:noop},events:{change:function(e){matches(e.target,'input[type="file"]')&&(e.preventDefault(),e.target.files&&this.upload(e.target.files),e.target.value="")},drop:function(e){stop(e);var transfer=e.dataTransfer;transfer&&transfer.files&&(removeClass(this.$el,this.clsDragover),this.upload(transfer.files))},dragenter:function(e){stop(e)},dragover:function(e){stop(e),addClass(this.$el,this.clsDragover)},dragleave:function(e){stop(e),removeClass(this.$el,this.clsDragover)}},methods:{upload:function(files){var this$1=this;if(files.length){trigger(this.$el,"upload",[files]);for(var i=0;i<files.length;i++){if(this$1.maxSize&&1e3*this$1.maxSize<files[i].size)return void this$1.fail(this$1.msgInvalidSize.replace("%s",this$1.maxSize));if(this$1.allow&&!match(this$1.allow,files[i].name))return void this$1.fail(this$1.msgInvalidName.replace("%s",this$1.allow));if(this$1.mime&&!match(this$1.mime,files[i].type))return void this$1.fail(this$1.msgInvalidMime.replace("%s",this$1.mime))}this.multiple||(files=[files[0]]),this.beforeAll(this,files);var chunks=function(files,size){for(var chunks=[],i=0;i<files.length;i+=size){for(var chunk=[],j=0;j<size;j++)chunk.push(files[i+j]);chunks.push(chunk)}return chunks}(files,this.concurrent),upload=function(files){var data$$1=new FormData;for(var key in files.forEach(function(file){return data$$1.append(this$1.name,file)}),this$1.params)data$$1.append(key,this$1.params[key]);ajax(this$1.url,{data:data$$1,method:this$1.method,responseType:this$1.type,beforeSend:function(env){var xhr=env.xhr;xhr.upload&&on(xhr.upload,"progress",this$1.progress),["loadStart","load","loadEnd","abort"].forEach(function(type){return on(xhr,type.toLowerCase(),this$1[type])}),this$1.beforeSend(env)}}).then(function(xhr){this$1.complete(xhr),chunks.length?upload(chunks.shift()):this$1.completeAll(xhr)},function(e){return this$1.error(e.message)})};upload(chunks.shift())}}}};function match(pattern,path){return path.match(new RegExp("^"+pattern.replace(/\//g,"\\/").replace(/\*\*/g,"(\\/[^\\/]+)*").replace(/\*/g,"[^\\/]+").replace(/((?!\\))\?/g,"$1.")+"$","i"))}function stop(e){e.preventDefault(),e.stopPropagation()}return UIkit.component("countdown",Countdown),UIkit.component("filter",Filter),UIkit.component("lightbox",Lightbox),UIkit.component("lightboxPanel",LightboxPanel),UIkit.component("notification",Notification),UIkit.component("parallax",Parallax$1),UIkit.component("slider",Slider$1),UIkit.component("sliderParallax",SliderParallax),UIkit.component("slideshow",Slideshow$1),UIkit.component("slideshowParallax",SliderParallax),UIkit.component("sortable",Sortable),UIkit.component("tooltip",Tooltip),UIkit.component("upload",Upload),function(UIkit){var connect=UIkit.connect,disconnect=UIkit.disconnect;function init(){apply$$1(document.body,connect),fastdom.flush(),new MutationObserver(function(mutations){return mutations.forEach(applyMutation)}).observe(document,{childList:!0,subtree:!0,characterData:!0,attributes:!0}),UIkit._initialized=!0}function applyMutation(mutation){var target=mutation.target;("attributes"!==mutation.type?function(ref){for(var addedNodes=ref.addedNodes,removedNodes=ref.removedNodes,i=0;i<addedNodes.length;i++)apply$$1(addedNodes[i],connect);for(var i$1=0;i$1<removedNodes.length;i$1++)apply$$1(removedNodes[i$1],disconnect);return!0}(mutation):function(ref){var target=ref.target,attributeName=ref.attributeName;if("href"===attributeName)return!0;var name=getComponentName(attributeName);if(name&&name in UIkit){if(hasAttr(target,attributeName))return UIkit[name](target),!0;var component=UIkit.getComponent(target,name);return component?(component.$destroy(),!0):void 0}}(mutation))&&UIkit.update(target)}function apply$$1(node,fn){if(1===node.nodeType&&!hasAttr(node,"uk-no-boot"))for(fn(node),node=node.firstElementChild;node;){var next=node.nextElementSibling;apply$$1(node,fn),node=next}}"MutationObserver"in window&&(document.body?init():new MutationObserver(function(){document.body&&(this.disconnect(),init())}).observe(document,{childList:!0,subtree:!0}))}(UIkit),UIkit});
+//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2pzL3NyYy9jb3VudGRvd24uanMiLCIuLi9qcy9zcmMvZXJyb3JzLmpzIiwiLi4vanMvc3JjL2ZvdWMuanMiLCIuLi9qcy9zcmMvamFtcy5qcyIsIi4uL2pzL3NyYy9yZXZpc2lvbl9kaWZmLmpzIiwiLi4vanMvc3JjL3dpa2kuanMiLCIuLi9qcy92ZW5kb3IvbW9tZW50L21vbWVudC5qcyIsIi4uL2pzL3ZlbmRvci9qcXVlcnkvanF1ZXJ5LTMuMy4xLmpzIiwiLi4vanMvdmVuZG9yL21vbWVudC9tb21lbnQtdGltZXpvbmUuanMiLCIuLi9qcy92ZW5kb3IvdHlwZXdyaXRlci90eXBld3JpdGVyLmpzIiwiLi4vanMvdmVuZG9yL3Vpa2l0L3Vpa2l0LmpzIl0sIm5hbWVzIjpbImVycm9yX3R5cGV3cml0ZXIiLCJhcHAiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwidHlwZXdyaXRlciIsIlR5cGV3cml0ZXIiLCJsb29wIiwiZGVsZXRlU3BlZWQiLCJ0eXBpbmdTcGVlZCIsImRldk1vZGUiLCJvbmNsaWNrIiwiY3VycmVudF9jbGFzcyIsImdldEF0dHJpYnV0ZSIsInNldEF0dHJpYnV0ZSIsInN0b3AiLCJhcHBlbmRUZXh0IiwicGF1c2VGb3IiLCJ0eXBlU3RyaW5nIiwiZGVsZXRlQ2hhcnMiLCJjaGFuZ2VTZXR0aW5ncyIsIndpbmRvdyIsIl9SZXF1ZXN0TWV0aG9kIiwiX1BhdGgiLCJfQ29kZSIsIl9FcnJvck1zZyIsInN0YXJ0IiwiZ2V0U2NyaXB0IiwidXJsIiwiaW50ZWdyaXR5IiwiY3Jvc3Nfb3JpZ2luIiwic2NyaXB0IiwiY3JlYXRlRWxlbWVudCIsInR5cGUiLCJzcmMiLCJkZWZlciIsInVuZGVmaW5lZCIsImNyb3NzT3JpZ2luIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJhcHBlbmRDaGlsZCIsInNldENsYXNzIiwic2VsZWN0b3IiLCJteV9jbGFzcyIsInF1ZXJ5U2VsZWN0b3IiLCJjbGFzc05hbWUiLCJyZW1vdmVDbGFzcyIsImVsZW1lbnQiLCJyZWciLCJSZWdFeHAiLCJyZXBsYWNlIiwic3RhcnRqYW0iLCJEYXRlIiwiVVRDIiwiZW5kamFtIiwibm93IiwiZ29hbCIsImdldFRpbWUiLCJVSWtpdCIsIm5vdGlmaWNhdGlvbiIsIm1lc3NhZ2UiLCJwb3MiLCJ0aW1lb3V0IiwiaGVhZGluZyIsImlubmVySFRNTCIsInJlZnJlc2hDb3VudGRvd24iLCJzZXRJbnRlcnZhbCIsImRlbHRhIiwiY2xlYXJJbnRlcnZhbCIsImxvY2F0aW9uIiwicmVsb2FkIiwiZGF5cyIsIk1hdGgiLCJmbG9vciIsImhvdXJzIiwibWludXRlcyIsInNlY29uZHMiLCJlIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsIkphbUFjdGlvbnMiLCJbb2JqZWN0IE9iamVjdF0iLCJjc3JmX3Rva2VuIiwidGhpcyIsImFjdGlvbiIsIm1ldGhvZCIsImRhdGEiLCJjYWxsYmFjayIsIiQiLCJhamF4IiwiZGF0YVR5cGUiLCJoZWFkZXJzIiwiWC1DU1JGVG9rZW4iLCJkb25lIiwiZmFpbCIsIkpTT04iLCJzdHJpbmdpZnkiLCJqYW0iLCJzdGF0ZSIsInNlbmQiLCJzZW5kX2pzb24iLCJpZCIsImZvcm0iLCJxdWVzdGlvbiIsInJlYXNvbiIsIm51bWJlciIsInBhcnRpY2lwYW50IiwicmV2aXNpb25fZGlmZiIsInJldmlzaW9ucyIsImJ1dHRvbnMiLCJxdWVyeVNlbGVjdG9yQWxsIiwiaWRfcmVnIiwiZ2V0UmV2aXNpb25JZCIsIm1hdGNoIiwiZ2V0UmV2aXNpb24iLCJmaWx0ZXIiLCJ4IiwiZm9yRWFjaCIsImJ1dHRvbiIsImNoZWNrZWQiLCJvbmNoYW5nZSIsInJldiIsImFmdCIsImJlZiIsImRhdGUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJocmVmIiwicmFkaW9CdXR0b25DaGVja2VkIiwid2lraV9zaWRlYmFyIiwic2lkZWJhciIsImNsYXNzTGlzdCIsImNvbnRhaW5zIiwicmVtb3ZlIiwiYWRkIiwiZ2xvYmFsIiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJtb21lbnQiLCJob29rQ2FsbGJhY2siLCJzb21lIiwiaG9va3MiLCJhcHBseSIsImFyZ3VtZW50cyIsImlzQXJyYXkiLCJpbnB1dCIsIkFycmF5IiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwiaXNPYmplY3QiLCJpc1VuZGVmaW5lZCIsImlzTnVtYmVyIiwiaXNEYXRlIiwibWFwIiwiYXJyIiwiZm4iLCJpIiwicmVzIiwibGVuZ3RoIiwicHVzaCIsImhhc093blByb3AiLCJhIiwiYiIsImhhc093blByb3BlcnR5IiwiZXh0ZW5kIiwidmFsdWVPZiIsImNyZWF0ZVVUQyIsImZvcm1hdCIsImxvY2FsZSIsInN0cmljdCIsImNyZWF0ZUxvY2FsT3JVVEMiLCJ1dGMiLCJnZXRQYXJzaW5nRmxhZ3MiLCJtIiwiX3BmIiwiZW1wdHkiLCJ1bnVzZWRUb2tlbnMiLCJ1bnVzZWRJbnB1dCIsIm92ZXJmbG93IiwiY2hhcnNMZWZ0T3ZlciIsIm51bGxJbnB1dCIsImludmFsaWRNb250aCIsImludmFsaWRGb3JtYXQiLCJ1c2VySW52YWxpZGF0ZWQiLCJpc28iLCJwYXJzZWREYXRlUGFydHMiLCJtZXJpZGllbSIsInJmYzI4MjIiLCJ3ZWVrZGF5TWlzbWF0Y2giLCJpc1ZhbGlkIiwiX2lzVmFsaWQiLCJmbGFncyIsInBhcnNlZFBhcnRzIiwiaXNOb3dWYWxpZCIsImlzTmFOIiwiX2QiLCJpbnZhbGlkV2Vla2RheSIsIl9zdHJpY3QiLCJiaWdIb3VyIiwiaXNGcm96ZW4iLCJjcmVhdGVJbnZhbGlkIiwiTmFOIiwiZnVuIiwidCIsImxlbiIsIm1vbWVudFByb3BlcnRpZXMiLCJjb3B5Q29uZmlnIiwidG8iLCJmcm9tIiwicHJvcCIsInZhbCIsIl9pc0FNb21lbnRPYmplY3QiLCJfaSIsIl9mIiwiX2wiLCJfdHptIiwiX2lzVVRDIiwiX29mZnNldCIsIl9sb2NhbGUiLCJ1cGRhdGVJblByb2dyZXNzIiwiTW9tZW50IiwiY29uZmlnIiwidXBkYXRlT2Zmc2V0IiwiaXNNb21lbnQiLCJvYmoiLCJhYnNGbG9vciIsImNlaWwiLCJ0b0ludCIsImFyZ3VtZW50Rm9yQ29lcmNpb24iLCJjb2VyY2VkTnVtYmVyIiwidmFsdWUiLCJpc0Zpbml0ZSIsImNvbXBhcmVBcnJheXMiLCJhcnJheTEiLCJhcnJheTIiLCJkb250Q29udmVydCIsIm1pbiIsImxlbmd0aERpZmYiLCJhYnMiLCJkaWZmcyIsIndhcm4iLCJtc2ciLCJzdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MiLCJjb25zb2xlIiwiZGVwcmVjYXRlIiwiZmlyc3RUaW1lIiwiZGVwcmVjYXRpb25IYW5kbGVyIiwiYXJnIiwiYXJncyIsImtleSIsInNsaWNlIiwiam9pbiIsIkVycm9yIiwic3RhY2siLCJrZXlzIiwiZGVwcmVjYXRpb25zIiwiZGVwcmVjYXRlU2ltcGxlIiwibmFtZSIsImlzRnVuY3Rpb24iLCJGdW5jdGlvbiIsIm1lcmdlQ29uZmlncyIsInBhcmVudENvbmZpZyIsImNoaWxkQ29uZmlnIiwiTG9jYWxlIiwic2V0IiwiYWxpYXNlcyIsImFkZFVuaXRBbGlhcyIsInVuaXQiLCJzaG9ydGhhbmQiLCJsb3dlckNhc2UiLCJ0b0xvd2VyQ2FzZSIsIm5vcm1hbGl6ZVVuaXRzIiwidW5pdHMiLCJub3JtYWxpemVPYmplY3RVbml0cyIsImlucHV0T2JqZWN0Iiwibm9ybWFsaXplZFByb3AiLCJub3JtYWxpemVkSW5wdXQiLCJwcmlvcml0aWVzIiwiYWRkVW5pdFByaW9yaXR5IiwicHJpb3JpdHkiLCJ6ZXJvRmlsbCIsInRhcmdldExlbmd0aCIsImZvcmNlU2lnbiIsImFic051bWJlciIsInplcm9zVG9GaWxsIiwicG93IiwibWF4Iiwic3Vic3RyIiwiZm9ybWF0dGluZ1Rva2VucyIsImxvY2FsRm9ybWF0dGluZ1Rva2VucyIsImZvcm1hdEZ1bmN0aW9ucyIsImZvcm1hdFRva2VuRnVuY3Rpb25zIiwiYWRkRm9ybWF0VG9rZW4iLCJ0b2tlbiIsInBhZGRlZCIsIm9yZGluYWwiLCJmdW5jIiwibG9jYWxlRGF0YSIsImZvcm1hdE1vbWVudCIsImV4cGFuZEZvcm1hdCIsImFycmF5IiwibW9tIiwib3V0cHV0IiwibWFrZUZvcm1hdEZ1bmN0aW9uIiwiaW52YWxpZERhdGUiLCJyZXBsYWNlTG9uZ0RhdGVGb3JtYXRUb2tlbnMiLCJsb25nRGF0ZUZvcm1hdCIsImxhc3RJbmRleCIsInRlc3QiLCJtYXRjaDEiLCJtYXRjaDIiLCJtYXRjaDMiLCJtYXRjaDQiLCJtYXRjaDYiLCJtYXRjaDF0bzIiLCJtYXRjaDN0bzQiLCJtYXRjaDV0bzYiLCJtYXRjaDF0bzMiLCJtYXRjaDF0bzQiLCJtYXRjaDF0bzYiLCJtYXRjaFVuc2lnbmVkIiwibWF0Y2hTaWduZWQiLCJtYXRjaE9mZnNldCIsIm1hdGNoU2hvcnRPZmZzZXQiLCJtYXRjaFdvcmQiLCJyZWdleGVzIiwiYWRkUmVnZXhUb2tlbiIsInJlZ2V4Iiwic3RyaWN0UmVnZXgiLCJpc1N0cmljdCIsImdldFBhcnNlUmVnZXhGb3JUb2tlbiIsInJlZ2V4RXNjYXBlIiwibWF0Y2hlZCIsInAxIiwicDIiLCJwMyIsInA0IiwicyIsInRva2VucyIsImFkZFBhcnNlVG9rZW4iLCJhZGRXZWVrUGFyc2VUb2tlbiIsIl93IiwiYWRkVGltZVRvQXJyYXlGcm9tVG9rZW4iLCJfYSIsIllFQVIiLCJNT05USCIsIkRBVEUiLCJIT1VSIiwiTUlOVVRFIiwiU0VDT05EIiwiTUlMTElTRUNPTkQiLCJXRUVLIiwiV0VFS0RBWSIsImRheXNJblllYXIiLCJ5ZWFyIiwiaXNMZWFwWWVhciIsInkiLCJwYXJzZVR3b0RpZ2l0WWVhciIsInBhcnNlSW50IiwiaW5kZXhPZiIsImdldFNldFllYXIiLCJtYWtlR2V0U2V0Iiwia2VlcFRpbWUiLCJzZXQkMSIsImdldCIsIm1vbnRoIiwiZGF5c0luTW9udGgiLCJtb2RNb250aCIsIm8iLCJtb250aHNTaG9ydCIsIm1vbnRocyIsIm1vbnRoc1Nob3J0UmVnZXgiLCJtb250aHNSZWdleCIsIm1vbnRoc1BhcnNlIiwiTU9OVEhTX0lOX0ZPUk1BVCIsImRlZmF1bHRMb2NhbGVNb250aHMiLCJzcGxpdCIsImRlZmF1bHRMb2NhbGVNb250aHNTaG9ydCIsInNldE1vbnRoIiwiZGF5T2ZNb250aCIsImdldFNldE1vbnRoIiwiZGVmYXVsdE1vbnRoc1Nob3J0UmVnZXgiLCJkZWZhdWx0TW9udGhzUmVnZXgiLCJjb21wdXRlTW9udGhzUGFyc2UiLCJjbXBMZW5SZXYiLCJzaG9ydFBpZWNlcyIsImxvbmdQaWVjZXMiLCJtaXhlZFBpZWNlcyIsInNvcnQiLCJfbW9udGhzUmVnZXgiLCJfbW9udGhzU2hvcnRSZWdleCIsIl9tb250aHNTdHJpY3RSZWdleCIsIl9tb250aHNTaG9ydFN0cmljdFJlZ2V4IiwiY3JlYXRlVVRDRGF0ZSIsImdldFVUQ0Z1bGxZZWFyIiwic2V0VVRDRnVsbFllYXIiLCJmaXJzdFdlZWtPZmZzZXQiLCJkb3ciLCJkb3kiLCJmd2QiLCJnZXRVVENEYXkiLCJkYXlPZlllYXJGcm9tV2Vla3MiLCJ3ZWVrIiwid2Vla2RheSIsInJlc1llYXIiLCJyZXNEYXlPZlllYXIiLCJkYXlPZlllYXIiLCJ3ZWVrT2ZZZWFyIiwicmVzV2VlayIsIndlZWtPZmZzZXQiLCJ3ZWVrc0luWWVhciIsIndlZWtPZmZzZXROZXh0Iiwid2Vla2RheXNNaW4iLCJ3ZWVrZGF5c1Nob3J0Iiwid2Vla2RheXMiLCJ3ZWVrZGF5c01pblJlZ2V4Iiwid2Vla2RheXNTaG9ydFJlZ2V4Iiwid2Vla2RheXNSZWdleCIsIndlZWtkYXlzUGFyc2UiLCJkIiwiZGVmYXVsdExvY2FsZVdlZWtkYXlzIiwiZGVmYXVsdExvY2FsZVdlZWtkYXlzU2hvcnQiLCJkZWZhdWx0TG9jYWxlV2Vla2RheXNNaW4iLCJkZWZhdWx0V2Vla2RheXNSZWdleCIsImRlZmF1bHRXZWVrZGF5c1Nob3J0UmVnZXgiLCJkZWZhdWx0V2Vla2RheXNNaW5SZWdleCIsImNvbXB1dGVXZWVrZGF5c1BhcnNlIiwibWlucCIsInNob3J0cCIsImxvbmdwIiwibWluUGllY2VzIiwiZGF5IiwiX3dlZWtkYXlzUmVnZXgiLCJfd2Vla2RheXNTaG9ydFJlZ2V4IiwiX3dlZWtkYXlzTWluUmVnZXgiLCJfd2Vla2RheXNTdHJpY3RSZWdleCIsIl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXgiLCJfd2Vla2RheXNNaW5TdHJpY3RSZWdleCIsImhGb3JtYXQiLCJsb3dlcmNhc2UiLCJtYXRjaE1lcmlkaWVtIiwiX21lcmlkaWVtUGFyc2UiLCJrSW5wdXQiLCJfaXNQbSIsImlzUE0iLCJfbWVyaWRpZW0iLCJwb3MxIiwicG9zMiIsImdsb2JhbExvY2FsZSIsImdldFNldEhvdXIiLCJiYXNlQ29uZmlnIiwiY2FsZW5kYXIiLCJzYW1lRGF5IiwibmV4dERheSIsIm5leHRXZWVrIiwibGFzdERheSIsImxhc3RXZWVrIiwic2FtZUVsc2UiLCJMVFMiLCJMVCIsIkwiLCJMTCIsIkxMTCIsIkxMTEwiLCJkYXlPZk1vbnRoT3JkaW5hbFBhcnNlIiwicmVsYXRpdmVUaW1lIiwiZnV0dXJlIiwicGFzdCIsInNzIiwibW0iLCJoIiwiaGgiLCJkZCIsIk0iLCJNTSIsInl5IiwibWVyaWRpZW1QYXJzZSIsImxvY2FsZXMiLCJsb2NhbGVGYW1pbGllcyIsIm5vcm1hbGl6ZUxvY2FsZSIsImxvYWRMb2NhbGUiLCJvbGRMb2NhbGUiLCJfYWJiciIsInJlcXVpcmUiLCJnZXRTZXRHbG9iYWxMb2NhbGUiLCJ2YWx1ZXMiLCJnZXRMb2NhbGUiLCJkZWZpbmVMb2NhbGUiLCJhYmJyIiwiX2NvbmZpZyIsInBhcmVudExvY2FsZSIsIm5hbWVzIiwiaiIsIm5leHQiLCJjaG9vc2VMb2NhbGUiLCJjaGVja092ZXJmbG93IiwiX292ZXJmbG93RGF5T2ZZZWFyIiwiX292ZXJmbG93V2Vla3MiLCJfb3ZlcmZsb3dXZWVrZGF5IiwiZGVmYXVsdHMiLCJjIiwiY29uZmlnRnJvbUFycmF5IiwiY3VycmVudERhdGUiLCJleHBlY3RlZFdlZWtkYXkiLCJ5ZWFyVG9Vc2UiLCJub3dWYWx1ZSIsIl91c2VVVEMiLCJnZXRVVENNb250aCIsImdldFVUQ0RhdGUiLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImN1cnJlbnREYXRlQXJyYXkiLCJ3Iiwid2Vla1llYXIiLCJ0ZW1wIiwid2Vla2RheU92ZXJmbG93IiwiR0ciLCJXIiwiRSIsImNyZWF0ZUxvY2FsIiwiX3dlZWsiLCJjdXJXZWVrIiwiZ2ciLCJfZGF5T2ZZZWFyIiwiZGF5T2ZZZWFyRnJvbVdlZWtJbmZvIiwiX25leHREYXkiLCJtcyIsInNldEZ1bGxZZWFyIiwiZ2V0RGF5Iiwic2V0VVRDTWludXRlcyIsImdldFVUQ01pbnV0ZXMiLCJleHRlbmRlZElzb1JlZ2V4IiwiYmFzaWNJc29SZWdleCIsInR6UmVnZXgiLCJpc29EYXRlcyIsImlzb1RpbWVzIiwiYXNwTmV0SnNvblJlZ2V4IiwiY29uZmlnRnJvbUlTTyIsImwiLCJhbGxvd1RpbWUiLCJkYXRlRm9ybWF0IiwidGltZUZvcm1hdCIsInR6Rm9ybWF0Iiwic3RyaW5nIiwiZXhlYyIsImNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQiLCJleHRyYWN0RnJvbVJGQzI4MjJTdHJpbmdzIiwieWVhclN0ciIsIm1vbnRoU3RyIiwiZGF5U3RyIiwiaG91clN0ciIsIm1pbnV0ZVN0ciIsInNlY29uZFN0ciIsInJlc3VsdCIsInVudHJ1bmNhdGVZZWFyIiwib2JzT2Zmc2V0cyIsIlVUIiwiR01UIiwiRURUIiwiRVNUIiwiQ0RUIiwiQ1NUIiwiTURUIiwiTVNUIiwiUERUIiwiUFNUIiwiY29uZmlnRnJvbVJGQzI4MjIiLCJwYXJzZWRBcnJheSIsIndlZWtkYXlTdHIiLCJwYXJzZWRJbnB1dCIsImNoZWNrV2Vla2RheSIsIm9ic09mZnNldCIsIm1pbGl0YXJ5T2Zmc2V0IiwibnVtT2Zmc2V0IiwiaG0iLCJjYWxjdWxhdGVPZmZzZXQiLCJJU09fODYwMSIsIlJGQ18yODIyIiwic2tpcHBlZCIsInN0cmluZ0xlbmd0aCIsInRvdGFsUGFyc2VkSW5wdXRMZW5ndGgiLCJob3VyIiwiaXNQbSIsIm1lcmlkaWVtSG91ciIsIm1lcmlkaWVtRml4V3JhcCIsInByZXBhcmVDb25maWciLCJwcmVwYXJzZSIsInRlbXBDb25maWciLCJiZXN0TW9tZW50Iiwic2NvcmVUb0JlYXQiLCJjdXJyZW50U2NvcmUiLCJzY29yZSIsImNvbmZpZ0Zyb21TdHJpbmdBbmRBcnJheSIsImNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrIiwiY29uZmlnRnJvbVN0cmluZyIsIm1pbnV0ZSIsInNlY29uZCIsIm1pbGxpc2Vjb25kIiwiY29uZmlnRnJvbU9iamVjdCIsImNvbmZpZ0Zyb21JbnB1dCIsImlzVVRDIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImsiLCJpc09iamVjdEVtcHR5IiwicHJvdG90eXBlTWluIiwib3RoZXIiLCJwcm90b3R5cGVNYXgiLCJwaWNrQnkiLCJtb21lbnRzIiwib3JkZXJpbmciLCJEdXJhdGlvbiIsImR1cmF0aW9uIiwieWVhcnMiLCJxdWFydGVycyIsInF1YXJ0ZXIiLCJ3ZWVrcyIsIm1pbGxpc2Vjb25kcyIsInVuaXRIYXNEZWNpbWFsIiwicGFyc2VGbG9hdCIsImlzRHVyYXRpb25WYWxpZCIsIl9taWxsaXNlY29uZHMiLCJfZGF5cyIsIl9tb250aHMiLCJfZGF0YSIsIl9idWJibGUiLCJpc0R1cmF0aW9uIiwiYWJzUm91bmQiLCJyb3VuZCIsIm9mZnNldCIsInNlcGFyYXRvciIsInV0Y09mZnNldCIsInNpZ24iLCJvZmZzZXRGcm9tU3RyaW5nIiwiY2h1bmtPZmZzZXQiLCJtYXRjaGVyIiwibWF0Y2hlcyIsInBhcnRzIiwiY2xvbmVXaXRoT2Zmc2V0IiwibW9kZWwiLCJkaWZmIiwiY2xvbmUiLCJzZXRUaW1lIiwibG9jYWwiLCJnZXREYXRlT2Zmc2V0IiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJpc1V0YyIsImFzcE5ldFJlZ2V4IiwiaXNvUmVnZXgiLCJjcmVhdGVEdXJhdGlvbiIsInJldCIsImRpZmZSZXMiLCJwYXJzZUlzbyIsImJhc2UiLCJpc0JlZm9yZSIsInBvc2l0aXZlTW9tZW50c0RpZmZlcmVuY2UiLCJtb21lbnRzRGlmZmVyZW5jZSIsImlucCIsImlzQWZ0ZXIiLCJjcmVhdGVBZGRlciIsImRpcmVjdGlvbiIsInBlcmlvZCIsInRtcCIsImFkZFN1YnRyYWN0IiwiaXNBZGRpbmciLCJpbnZhbGlkIiwic3VidHJhY3QiLCJtb250aERpZmYiLCJ3aG9sZU1vbnRoRGlmZiIsImFuY2hvciIsIm5ld0xvY2FsZURhdGEiLCJkZWZhdWx0Rm9ybWF0IiwiZGVmYXVsdEZvcm1hdFV0YyIsImxhbmciLCJhZGRXZWVrWWVhckZvcm1hdFRva2VuIiwiZ2V0dGVyIiwiZ2V0U2V0V2Vla1llYXJIZWxwZXIiLCJ3ZWVrc1RhcmdldCIsImRheU9mWWVhckRhdGEiLCJpc29XZWVrWWVhciIsIl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlIiwiX29yZGluYWxQYXJzZSIsIl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudCIsImdldFNldERheU9mTW9udGgiLCJnZXRTZXRNaW51dGUiLCJnZXRTZXRTZWNvbmQiLCJwYXJzZU1zIiwiZ2V0U2V0TWlsbGlzZWNvbmQiLCJwcm90byIsInByZVBhcnNlUG9zdEZvcm1hdCIsInRpbWUiLCJmb3JtYXRzIiwic29kIiwic3RhcnRPZiIsImNhbGVuZGFyRm9ybWF0IiwiYXNGbG9hdCIsInRoYXQiLCJ6b25lRGVsdGEiLCJlbmRPZiIsImlucHV0U3RyaW5nIiwicG9zdGZvcm1hdCIsIndpdGhvdXRTdWZmaXgiLCJodW1hbml6ZSIsImZyb21Ob3ciLCJ0b05vdyIsImludmFsaWRBdCIsImxvY2FsSW5wdXQiLCJpc0JldHdlZW4iLCJpbmNsdXNpdml0eSIsImlzU2FtZSIsImlucHV0TXMiLCJpc1NhbWVPckFmdGVyIiwiaXNTYW1lT3JCZWZvcmUiLCJwYXJzaW5nRmxhZ3MiLCJwcmlvcml0aXplZCIsInVuaXRzT2JqIiwidSIsImdldFByaW9yaXRpemVkVW5pdHMiLCJpc29XZWVrZGF5IiwidG9BcnJheSIsInRvT2JqZWN0IiwidG9EYXRlIiwidG9JU09TdHJpbmciLCJrZWVwT2Zmc2V0IiwiaW5zcGVjdCIsInpvbmUiLCJpc0xvY2FsIiwicHJlZml4Iiwic3VmZml4IiwidG9KU09OIiwidW5peCIsImNyZWF0aW9uRGF0YSIsImlzb1dlZWsiLCJpc29XZWVrcyIsIndlZWtJbmZvIiwiaXNvV2Vla3NJblllYXIiLCJwYXJzZVdlZWtkYXkiLCJwYXJzZUlzb1dlZWtkYXkiLCJrZWVwTG9jYWxUaW1lIiwia2VlcE1pbnV0ZXMiLCJsb2NhbEFkanVzdCIsIl9jaGFuZ2VJblByb2dyZXNzIiwicGFyc2Vab25lIiwidFpvbmUiLCJoYXNBbGlnbmVkSG91ck9mZnNldCIsImlzRFNUIiwiaXNVdGNPZmZzZXQiLCJ6b25lQWJiciIsInpvbmVOYW1lIiwiZGF0ZXMiLCJpc0RTVFNoaWZ0ZWQiLCJfaXNEU1RTaGlmdGVkIiwicHJvdG8kMSIsImdldCQxIiwiaW5kZXgiLCJmaWVsZCIsInNldHRlciIsImxpc3RNb250aHNJbXBsIiwib3V0IiwibGlzdFdlZWtkYXlzSW1wbCIsImxvY2FsZVNvcnRlZCIsInNoaWZ0IiwiX2NhbGVuZGFyIiwiX2xvbmdEYXRlRm9ybWF0IiwiZm9ybWF0VXBwZXIiLCJ0b1VwcGVyQ2FzZSIsIl9pbnZhbGlkRGF0ZSIsIl9vcmRpbmFsIiwiaXNGdXR1cmUiLCJfcmVsYXRpdmVUaW1lIiwicGFzdEZ1dHVyZSIsInNvdXJjZSIsImlzRm9ybWF0IiwiX21vbnRoc1Nob3J0IiwibW9udGhOYW1lIiwiX21vbnRoc1BhcnNlRXhhY3QiLCJpaSIsImxsYyIsInRvTG9jYWxlTG93ZXJDYXNlIiwiX21vbnRoc1BhcnNlIiwiX2xvbmdNb250aHNQYXJzZSIsIl9zaG9ydE1vbnRoc1BhcnNlIiwiZmlyc3REYXlPZlllYXIiLCJmaXJzdERheU9mV2VlayIsIl93ZWVrZGF5cyIsIl93ZWVrZGF5c01pbiIsIl93ZWVrZGF5c1Nob3J0Iiwid2Vla2RheU5hbWUiLCJfd2Vla2RheXNQYXJzZUV4YWN0IiwiX3dlZWtkYXlzUGFyc2UiLCJfc2hvcnRXZWVrZGF5c1BhcnNlIiwiX21pbldlZWtkYXlzUGFyc2UiLCJfZnVsbFdlZWtkYXlzUGFyc2UiLCJjaGFyQXQiLCJpc0xvd2VyIiwibGFuZ0RhdGEiLCJtYXRoQWJzIiwiYWRkU3VidHJhY3QkMSIsImFic0NlaWwiLCJkYXlzVG9Nb250aHMiLCJtb250aHNUb0RheXMiLCJtYWtlQXMiLCJhbGlhcyIsImFzIiwiYXNNaWxsaXNlY29uZHMiLCJhc1NlY29uZHMiLCJhc01pbnV0ZXMiLCJhc0hvdXJzIiwiYXNEYXlzIiwiYXNXZWVrcyIsImFzTW9udGhzIiwiYXNZZWFycyIsIm1ha2VHZXR0ZXIiLCJ0aHJlc2hvbGRzIiwiYWJzJDEiLCJ0b0lTT1N0cmluZyQxIiwiWSIsIkQiLCJ0b0ZpeGVkIiwidG90YWwiLCJ0b3RhbFNpZ24iLCJ5bVNpZ24iLCJkYXlzU2lnbiIsImhtc1NpZ24iLCJwcm90byQyIiwibW9udGhzRnJvbURheXMiLCJ3aXRoU3VmZml4IiwicG9zTmVnRHVyYXRpb24iLCJyZWxhdGl2ZVRpbWUkMSIsInRvSXNvU3RyaW5nIiwidmVyc2lvbiIsInVwZGF0ZUxvY2FsZSIsInRtcExvY2FsZSIsInJlbGF0aXZlVGltZVJvdW5kaW5nIiwicm91bmRpbmdGdW5jdGlvbiIsInJlbGF0aXZlVGltZVRocmVzaG9sZCIsInRocmVzaG9sZCIsImxpbWl0IiwibXlNb21lbnQiLCJIVE1MNV9GTVQiLCJEQVRFVElNRV9MT0NBTCIsIkRBVEVUSU1FX0xPQ0FMX1NFQ09ORFMiLCJEQVRFVElNRV9MT0NBTF9NUyIsIlRJTUUiLCJUSU1FX1NFQ09ORFMiLCJUSU1FX01TIiwibm9HbG9iYWwiLCJnZXRQcm90byIsImdldFByb3RvdHlwZU9mIiwiY29uY2F0IiwiY2xhc3MydHlwZSIsImhhc093biIsImZuVG9TdHJpbmciLCJPYmplY3RGdW5jdGlvblN0cmluZyIsInN1cHBvcnQiLCJub2RlVHlwZSIsImlzV2luZG93IiwicHJlc2VydmVkU2NyaXB0QXR0cmlidXRlcyIsIm5vTW9kdWxlIiwiRE9NRXZhbCIsImNvZGUiLCJkb2MiLCJub2RlIiwidGV4dCIsImhlYWQiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJ0b1R5cGUiLCJqUXVlcnkiLCJjb250ZXh0IiwiaW5pdCIsInJ0cmltIiwiaXNBcnJheUxpa2UiLCJqcXVlcnkiLCJjb25zdHJ1Y3RvciIsIm51bSIsInB1c2hTdGFjayIsImVsZW1zIiwibWVyZ2UiLCJwcmV2T2JqZWN0IiwiZWFjaCIsImVsZW0iLCJmaXJzdCIsImVxIiwibGFzdCIsImVuZCIsInNwbGljZSIsIm9wdGlvbnMiLCJjb3B5IiwiY29weUlzQXJyYXkiLCJ0YXJnZXQiLCJkZWVwIiwiaXNQbGFpbk9iamVjdCIsImV4cGFuZG8iLCJyYW5kb20iLCJpc1JlYWR5IiwiZXJyb3IiLCJub29wIiwiQ3RvciIsImlzRW1wdHlPYmplY3QiLCJnbG9iYWxFdmFsIiwidHJpbSIsIm1ha2VBcnJheSIsInJlc3VsdHMiLCJpbkFycmF5IiwiZ3JlcCIsImludmVydCIsImNhbGxiYWNrRXhwZWN0IiwiZ3VpZCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiU2l6emxlIiwiRXhwciIsImdldFRleHQiLCJpc1hNTCIsInRva2VuaXplIiwiY29tcGlsZSIsInNlbGVjdCIsIm91dGVybW9zdENvbnRleHQiLCJzb3J0SW5wdXQiLCJoYXNEdXBsaWNhdGUiLCJzZXREb2N1bWVudCIsImRvY0VsZW0iLCJkb2N1bWVudElzSFRNTCIsInJidWdneVFTQSIsInJidWdneU1hdGNoZXMiLCJwcmVmZXJyZWREb2MiLCJkaXJydW5zIiwiY2xhc3NDYWNoZSIsImNyZWF0ZUNhY2hlIiwidG9rZW5DYWNoZSIsImNvbXBpbGVyQ2FjaGUiLCJzb3J0T3JkZXIiLCJwb3AiLCJwdXNoX25hdGl2ZSIsImxpc3QiLCJib29sZWFucyIsIndoaXRlc3BhY2UiLCJpZGVudGlmaWVyIiwiYXR0cmlidXRlcyIsInBzZXVkb3MiLCJyd2hpdGVzcGFjZSIsInJjb21tYSIsInJjb21iaW5hdG9ycyIsInJhdHRyaWJ1dGVRdW90ZXMiLCJycHNldWRvIiwicmlkZW50aWZpZXIiLCJtYXRjaEV4cHIiLCJJRCIsIkNMQVNTIiwiVEFHIiwiQVRUUiIsIlBTRVVETyIsIkNISUxEIiwiYm9vbCIsIm5lZWRzQ29udGV4dCIsInJpbnB1dHMiLCJyaGVhZGVyIiwicm5hdGl2ZSIsInJxdWlja0V4cHIiLCJyc2libGluZyIsInJ1bmVzY2FwZSIsImZ1bmVzY2FwZSIsIl8iLCJlc2NhcGVkIiwiZXNjYXBlZFdoaXRlc3BhY2UiLCJoaWdoIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwicmNzc2VzY2FwZSIsImZjc3Nlc2NhcGUiLCJjaCIsImFzQ29kZVBvaW50IiwiY2hhckNvZGVBdCIsInVubG9hZEhhbmRsZXIiLCJkaXNhYmxlZEFuY2VzdG9yIiwiYWRkQ29tYmluYXRvciIsImRpc2FibGVkIiwiZGlyIiwiY2hpbGROb2RlcyIsImVscyIsInNlZWQiLCJuaWQiLCJncm91cHMiLCJuZXdTZWxlY3RvciIsIm5ld0NvbnRleHQiLCJvd25lckRvY3VtZW50IiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsInFzYSIsIm5vZGVOYW1lIiwidG9TZWxlY3RvciIsInRlc3RDb250ZXh0IiwicXNhRXJyb3IiLCJjYWNoZSIsImNhY2hlTGVuZ3RoIiwibWFya0Z1bmN0aW9uIiwiYXNzZXJ0IiwiZWwiLCJhZGRIYW5kbGUiLCJhdHRycyIsImhhbmRsZXIiLCJhdHRySGFuZGxlIiwic2libGluZ0NoZWNrIiwiY3VyIiwic291cmNlSW5kZXgiLCJuZXh0U2libGluZyIsImNyZWF0ZUlucHV0UHNldWRvIiwiY3JlYXRlQnV0dG9uUHNldWRvIiwiY3JlYXRlRGlzYWJsZWRQc2V1ZG8iLCJpc0Rpc2FibGVkIiwiY3JlYXRlUG9zaXRpb25hbFBzZXVkbyIsImFyZ3VtZW50IiwibWF0Y2hJbmRleGVzIiwiZG9jdW1lbnRFbGVtZW50IiwiaGFzQ29tcGFyZSIsInN1YldpbmRvdyIsImRlZmF1bHRWaWV3IiwidG9wIiwiYWRkRXZlbnRMaXN0ZW5lciIsImF0dGFjaEV2ZW50IiwiY3JlYXRlQ29tbWVudCIsImdldEJ5SWQiLCJnZXRFbGVtZW50c0J5TmFtZSIsImF0dHJJZCIsImZpbmQiLCJnZXRBdHRyaWJ1dGVOb2RlIiwidGFnIiwibWF0Y2hlc1NlbGVjdG9yIiwid2Via2l0TWF0Y2hlc1NlbGVjdG9yIiwibW96TWF0Y2hlc1NlbGVjdG9yIiwib01hdGNoZXNTZWxlY3RvciIsIm1zTWF0Y2hlc1NlbGVjdG9yIiwiZGlzY29ubmVjdGVkTWF0Y2giLCJjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiIsImFkb3duIiwiYnVwIiwiY29tcGFyZSIsInNvcnREZXRhY2hlZCIsImF1cCIsImFwIiwiYnAiLCJ1bnNoaWZ0IiwiZXhwciIsImVsZW1lbnRzIiwiYXR0ciIsInNwZWNpZmllZCIsImVzY2FwZSIsInNlbCIsInVuaXF1ZVNvcnQiLCJkdXBsaWNhdGVzIiwiZGV0ZWN0RHVwbGljYXRlcyIsInNvcnRTdGFibGUiLCJ0ZXh0Q29udGVudCIsImZpcnN0Q2hpbGQiLCJub2RlVmFsdWUiLCJzZWxlY3RvcnMiLCJjcmVhdGVQc2V1ZG8iLCJyZWxhdGl2ZSIsIj4iLCIgIiwiKyIsIn4iLCJwcmVGaWx0ZXIiLCJleGNlc3MiLCJ1bnF1b3RlZCIsIm5vZGVOYW1lU2VsZWN0b3IiLCJwYXR0ZXJuIiwib3BlcmF0b3IiLCJjaGVjayIsIndoYXQiLCJzaW1wbGUiLCJmb3J3YXJkIiwib2ZUeXBlIiwieG1sIiwidW5pcXVlQ2FjaGUiLCJvdXRlckNhY2hlIiwibm9kZUluZGV4IiwicGFyZW50IiwidXNlQ2FjaGUiLCJsYXN0Q2hpbGQiLCJ1bmlxdWVJRCIsInBzZXVkbyIsInNldEZpbHRlcnMiLCJpZHgiLCJub3QiLCJ1bm1hdGNoZWQiLCJoYXMiLCJpbm5lclRleHQiLCJlbGVtTGFuZyIsImhhc2giLCJyb290IiwiZm9jdXMiLCJhY3RpdmVFbGVtZW50IiwiaGFzRm9jdXMiLCJ0YWJJbmRleCIsImVuYWJsZWQiLCJzZWxlY3RlZCIsInNlbGVjdGVkSW5kZXgiLCJoZWFkZXIiLCJldmVuIiwib2RkIiwibHQiLCJndCIsInJhZGlvIiwiY2hlY2tib3giLCJmaWxlIiwicGFzc3dvcmQiLCJpbWFnZSIsInN1Ym1pdCIsInJlc2V0IiwiY29tYmluYXRvciIsInNraXAiLCJjaGVja05vbkVsZW1lbnRzIiwiZG9uZU5hbWUiLCJvbGRDYWNoZSIsIm5ld0NhY2hlIiwiZWxlbWVudE1hdGNoZXIiLCJtYXRjaGVycyIsImNvbmRlbnNlIiwibmV3VW5tYXRjaGVkIiwibWFwcGVkIiwic2V0TWF0Y2hlciIsInBvc3RGaWx0ZXIiLCJwb3N0RmluZGVyIiwicG9zdFNlbGVjdG9yIiwicHJlTWFwIiwicG9zdE1hcCIsInByZWV4aXN0aW5nIiwiY29udGV4dHMiLCJtdWx0aXBsZUNvbnRleHRzIiwibWF0Y2hlckluIiwibWF0Y2hlck91dCIsIm1hdGNoZXJGcm9tVG9rZW5zIiwiY2hlY2tDb250ZXh0IiwibGVhZGluZ1JlbGF0aXZlIiwiaW1wbGljaXRSZWxhdGl2ZSIsIm1hdGNoQ29udGV4dCIsIm1hdGNoQW55Q29udGV4dCIsImZpbHRlcnMiLCJwYXJzZU9ubHkiLCJzb0ZhciIsInByZUZpbHRlcnMiLCJjYWNoZWQiLCJzZXRNYXRjaGVycyIsImVsZW1lbnRNYXRjaGVycyIsImJ5U2V0IiwiYnlFbGVtZW50Iiwic3VwZXJNYXRjaGVyIiwib3V0ZXJtb3N0IiwibWF0Y2hlZENvdW50Iiwic2V0TWF0Y2hlZCIsImNvbnRleHRCYWNrdXAiLCJkaXJydW5zVW5pcXVlIiwibWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzIiwiY29tcGlsZWQiLCJkZWZhdWx0VmFsdWUiLCJ1bmlxdWUiLCJpc1hNTERvYyIsImVzY2FwZVNlbGVjdG9yIiwidW50aWwiLCJ0cnVuY2F0ZSIsImlzIiwic2libGluZ3MiLCJuIiwicm5lZWRzQ29udGV4dCIsInJzaW5nbGVUYWciLCJ3aW5ub3ciLCJxdWFsaWZpZXIiLCJzZWxmIiwicm9vdGpRdWVyeSIsInBhcnNlSFRNTCIsInJlYWR5IiwicnBhcmVudHNwcmV2IiwiZ3VhcmFudGVlZFVuaXF1ZSIsImNoaWxkcmVuIiwiY29udGVudHMiLCJwcmV2Iiwic2libGluZyIsInRhcmdldHMiLCJjbG9zZXN0IiwicHJldkFsbCIsImFkZEJhY2siLCJwYXJlbnRzIiwicGFyZW50c1VudGlsIiwibmV4dEFsbCIsIm5leHRVbnRpbCIsInByZXZVbnRpbCIsImNvbnRlbnREb2N1bWVudCIsImNvbnRlbnQiLCJyZXZlcnNlIiwicm5vdGh0bWx3aGl0ZSIsIklkZW50aXR5IiwidiIsIlRocm93ZXIiLCJleCIsImFkb3B0VmFsdWUiLCJyZXNvbHZlIiwicmVqZWN0Iiwibm9WYWx1ZSIsInByb21pc2UiLCJ0aGVuIiwiQ2FsbGJhY2tzIiwib2JqZWN0IiwiZmxhZyIsImNyZWF0ZU9wdGlvbnMiLCJmaXJpbmciLCJtZW1vcnkiLCJmaXJlZCIsImxvY2tlZCIsInF1ZXVlIiwiZmlyaW5nSW5kZXgiLCJmaXJlIiwib25jZSIsInN0b3BPbkZhbHNlIiwiZGlzYWJsZSIsImxvY2siLCJmaXJlV2l0aCIsIkRlZmVycmVkIiwidHVwbGVzIiwiYWx3YXlzIiwiZGVmZXJyZWQiLCJjYXRjaCIsInBpcGUiLCJmbnMiLCJuZXdEZWZlciIsInR1cGxlIiwicmV0dXJuZWQiLCJwcm9ncmVzcyIsIm5vdGlmeSIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsIm9uUHJvZ3Jlc3MiLCJtYXhEZXB0aCIsImRlcHRoIiwic3BlY2lhbCIsIm1pZ2h0VGhyb3ciLCJUeXBlRXJyb3IiLCJub3RpZnlXaXRoIiwicmVzb2x2ZVdpdGgiLCJwcm9jZXNzIiwiZXhjZXB0aW9uSG9vayIsInN0YWNrVHJhY2UiLCJyZWplY3RXaXRoIiwiZ2V0U3RhY2tIb29rIiwic2V0VGltZW91dCIsInN0YXRlU3RyaW5nIiwid2hlbiIsInNpbmdsZVZhbHVlIiwicmVtYWluaW5nIiwicmVzb2x2ZUNvbnRleHRzIiwicmVzb2x2ZVZhbHVlcyIsIm1hc3RlciIsInVwZGF0ZUZ1bmMiLCJyZXJyb3JOYW1lcyIsInJlYWR5RXhjZXB0aW9uIiwicmVhZHlMaXN0IiwiY29tcGxldGVkIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInJlYWR5V2FpdCIsIndhaXQiLCJkb1Njcm9sbCIsImFjY2VzcyIsImNoYWluYWJsZSIsImVtcHR5R2V0IiwicmF3IiwiYnVsayIsInJtc1ByZWZpeCIsInJkYXNoQWxwaGEiLCJmY2FtZWxDYXNlIiwiYWxsIiwibGV0dGVyIiwiY2FtZWxDYXNlIiwiYWNjZXB0RGF0YSIsIm93bmVyIiwiRGF0YSIsInVpZCIsImRlZmluZVByb3BlcnR5IiwiY29uZmlndXJhYmxlIiwiaGFzRGF0YSIsImRhdGFQcml2IiwiZGF0YVVzZXIiLCJyYnJhY2UiLCJybXVsdGlEYXNoIiwiZGF0YUF0dHIiLCJwYXJzZSIsImdldERhdGEiLCJyZW1vdmVEYXRhIiwiX3JlbW92ZURhdGEiLCJkZXF1ZXVlIiwic3RhcnRMZW5ndGgiLCJfcXVldWVIb29rcyIsImNsZWFyUXVldWUiLCJjb3VudCIsInBudW0iLCJyY3NzTnVtIiwiY3NzRXhwYW5kIiwiaXNIaWRkZW5XaXRoaW5UcmVlIiwic3R5bGUiLCJkaXNwbGF5IiwiY3NzIiwic3dhcCIsIm9sZCIsImFkanVzdENTUyIsInZhbHVlUGFydHMiLCJ0d2VlbiIsImFkanVzdGVkIiwic2NhbGUiLCJtYXhJdGVyYXRpb25zIiwiY3VycmVudFZhbHVlIiwiaW5pdGlhbCIsImNzc051bWJlciIsImluaXRpYWxJblVuaXQiLCJkZWZhdWx0RGlzcGxheU1hcCIsImdldERlZmF1bHREaXNwbGF5IiwiYm9keSIsInNob3dIaWRlIiwic2hvdyIsImhpZGUiLCJ0b2dnbGUiLCJyY2hlY2thYmxlVHlwZSIsInJ0YWdOYW1lIiwicnNjcmlwdFR5cGUiLCJ3cmFwTWFwIiwib3B0aW9uIiwidGhlYWQiLCJjb2wiLCJ0ciIsInRkIiwiX2RlZmF1bHQiLCJnZXRBbGwiLCJzZXRHbG9iYWxFdmFsIiwicmVmRWxlbWVudHMiLCJvcHRncm91cCIsInRib2R5IiwidGZvb3QiLCJjb2xncm91cCIsImNhcHRpb24iLCJ0aCIsImRpdiIsInJodG1sIiwiYnVpbGRGcmFnbWVudCIsInNjcmlwdHMiLCJzZWxlY3Rpb24iLCJpZ25vcmVkIiwid3JhcCIsImZyYWdtZW50IiwiY3JlYXRlRG9jdW1lbnRGcmFnbWVudCIsIm5vZGVzIiwiaHRtbFByZWZpbHRlciIsImNyZWF0ZVRleHROb2RlIiwiY2hlY2tDbG9uZSIsImNsb25lTm9kZSIsIm5vQ2xvbmVDaGVja2VkIiwicmtleUV2ZW50Iiwicm1vdXNlRXZlbnQiLCJydHlwZW5hbWVzcGFjZSIsInJldHVyblRydWUiLCJyZXR1cm5GYWxzZSIsInNhZmVBY3RpdmVFbGVtZW50IiwiZXJyIiwib24iLCJ0eXBlcyIsIm9uZSIsIm9yaWdGbiIsImV2ZW50Iiwib2ZmIiwiaGFuZGxlT2JqSW4iLCJldmVudEhhbmRsZSIsImV2ZW50cyIsImhhbmRsZU9iaiIsImhhbmRsZXJzIiwibmFtZXNwYWNlcyIsIm9yaWdUeXBlIiwiZWxlbURhdGEiLCJoYW5kbGUiLCJ0cmlnZ2VyZWQiLCJkaXNwYXRjaCIsImRlbGVnYXRlVHlwZSIsImJpbmRUeXBlIiwibmFtZXNwYWNlIiwiZGVsZWdhdGVDb3VudCIsInNldHVwIiwibWFwcGVkVHlwZXMiLCJvcmlnQ291bnQiLCJ0ZWFyZG93biIsInJlbW92ZUV2ZW50IiwibmF0aXZlRXZlbnQiLCJoYW5kbGVyUXVldWUiLCJmaXgiLCJkZWxlZ2F0ZVRhcmdldCIsInByZURpc3BhdGNoIiwiaXNQcm9wYWdhdGlvblN0b3BwZWQiLCJjdXJyZW50VGFyZ2V0IiwiaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQiLCJybmFtZXNwYWNlIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJwb3N0RGlzcGF0Y2giLCJtYXRjaGVkSGFuZGxlcnMiLCJtYXRjaGVkU2VsZWN0b3JzIiwiYWRkUHJvcCIsImhvb2siLCJFdmVudCIsImVudW1lcmFibGUiLCJvcmlnaW5hbEV2ZW50Iiwid3JpdGFibGUiLCJsb2FkIiwibm9CdWJibGUiLCJ0cmlnZ2VyIiwiYmx1ciIsImNsaWNrIiwiYmVmb3JldW5sb2FkIiwicmV0dXJuVmFsdWUiLCJwcm9wcyIsImlzRGVmYXVsdFByZXZlbnRlZCIsImRlZmF1bHRQcmV2ZW50ZWQiLCJyZWxhdGVkVGFyZ2V0IiwidGltZVN0YW1wIiwiaXNTaW11bGF0ZWQiLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJhbHRLZXkiLCJidWJibGVzIiwiY2FuY2VsYWJsZSIsImNoYW5nZWRUb3VjaGVzIiwiY3RybEtleSIsImRldGFpbCIsImV2ZW50UGhhc2UiLCJtZXRhS2V5IiwicGFnZVgiLCJwYWdlWSIsInNoaWZ0S2V5IiwidmlldyIsImNoYXIiLCJjaGFyQ29kZSIsImtleUNvZGUiLCJjbGllbnRYIiwiY2xpZW50WSIsIm9mZnNldFgiLCJvZmZzZXRZIiwicG9pbnRlcklkIiwicG9pbnRlclR5cGUiLCJzY3JlZW5YIiwic2NyZWVuWSIsInRhcmdldFRvdWNoZXMiLCJ0b0VsZW1lbnQiLCJ0b3VjaGVzIiwid2hpY2giLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsInBvaW50ZXJlbnRlciIsInBvaW50ZXJsZWF2ZSIsIm9yaWciLCJyZWxhdGVkIiwicnhodG1sVGFnIiwicm5vSW5uZXJodG1sIiwicmNoZWNrZWQiLCJyY2xlYW5TY3JpcHQiLCJtYW5pcHVsYXRpb25UYXJnZXQiLCJkaXNhYmxlU2NyaXB0IiwicmVzdG9yZVNjcmlwdCIsImNsb25lQ29weUV2ZW50IiwiZGVzdCIsInBkYXRhT2xkIiwicGRhdGFDdXIiLCJ1ZGF0YU9sZCIsInVkYXRhQ3VyIiwiZG9tTWFuaXAiLCJjb2xsZWN0aW9uIiwiaGFzU2NyaXB0cyIsImlOb0Nsb25lIiwidmFsdWVJc0Z1bmN0aW9uIiwiaHRtbCIsIl9ldmFsVXJsIiwia2VlcERhdGEiLCJjbGVhbkRhdGEiLCJkYXRhQW5kRXZlbnRzIiwiZGVlcERhdGFBbmRFdmVudHMiLCJzcmNFbGVtZW50cyIsImRlc3RFbGVtZW50cyIsImluUGFnZSIsImRldGFjaCIsImFwcGVuZCIsInByZXBlbmQiLCJpbnNlcnRCZWZvcmUiLCJiZWZvcmUiLCJhZnRlciIsInJlcGxhY2VXaXRoIiwicmVwbGFjZUNoaWxkIiwiYXBwZW5kVG8iLCJwcmVwZW5kVG8iLCJpbnNlcnRBZnRlciIsInJlcGxhY2VBbGwiLCJvcmlnaW5hbCIsImluc2VydCIsInJudW1ub25weCIsImdldFN0eWxlcyIsIm9wZW5lciIsImdldENvbXB1dGVkU3R5bGUiLCJyYm94U3R5bGUiLCJjdXJDU1MiLCJjb21wdXRlZCIsIndpZHRoIiwibWluV2lkdGgiLCJtYXhXaWR0aCIsImdldFByb3BlcnR5VmFsdWUiLCJwaXhlbEJveFN0eWxlcyIsImFkZEdldEhvb2tJZiIsImNvbmRpdGlvbkZuIiwiaG9va0ZuIiwiY29tcHV0ZVN0eWxlVGVzdHMiLCJjb250YWluZXIiLCJjc3NUZXh0IiwiZGl2U3R5bGUiLCJwaXhlbFBvc2l0aW9uVmFsIiwicmVsaWFibGVNYXJnaW5MZWZ0VmFsIiwicm91bmRQaXhlbE1lYXN1cmVzIiwibWFyZ2luTGVmdCIsInJpZ2h0IiwicGl4ZWxCb3hTdHlsZXNWYWwiLCJib3hTaXppbmdSZWxpYWJsZVZhbCIsInBvc2l0aW9uIiwic2Nyb2xsYm94U2l6ZVZhbCIsIm9mZnNldFdpZHRoIiwibWVhc3VyZSIsImJhY2tncm91bmRDbGlwIiwiY2xlYXJDbG9uZVN0eWxlIiwiYm94U2l6aW5nUmVsaWFibGUiLCJwaXhlbFBvc2l0aW9uIiwicmVsaWFibGVNYXJnaW5MZWZ0Iiwic2Nyb2xsYm94U2l6ZSIsInJkaXNwbGF5c3dhcCIsInJjdXN0b21Qcm9wIiwiY3NzU2hvdyIsInZpc2liaWxpdHkiLCJjc3NOb3JtYWxUcmFuc2Zvcm0iLCJsZXR0ZXJTcGFjaW5nIiwiZm9udFdlaWdodCIsImNzc1ByZWZpeGVzIiwiZW1wdHlTdHlsZSIsImZpbmFsUHJvcE5hbWUiLCJjc3NQcm9wcyIsImNhcE5hbWUiLCJ2ZW5kb3JQcm9wTmFtZSIsInNldFBvc2l0aXZlTnVtYmVyIiwiYm94TW9kZWxBZGp1c3RtZW50IiwiZGltZW5zaW9uIiwiYm94IiwiaXNCb3JkZXJCb3giLCJzdHlsZXMiLCJjb21wdXRlZFZhbCIsImV4dHJhIiwiZ2V0V2lkdGhPckhlaWdodCIsInZhbHVlSXNCb3JkZXJCb3giLCJUd2VlbiIsImVhc2luZyIsImNzc0hvb2tzIiwib3BhY2l0eSIsImFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IiwiY29sdW1uQ291bnQiLCJmaWxsT3BhY2l0eSIsImZsZXhHcm93IiwiZmxleFNocmluayIsImxpbmVIZWlnaHQiLCJvcmRlciIsIm9ycGhhbnMiLCJ3aWRvd3MiLCJ6SW5kZXgiLCJ6b29tIiwib3JpZ05hbWUiLCJpc0N1c3RvbVByb3AiLCJzZXRQcm9wZXJ0eSIsImdldENsaWVudFJlY3RzIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwibGVmdCIsIm1hcmdpbiIsInBhZGRpbmciLCJib3JkZXIiLCJleHBhbmQiLCJleHBhbmRlZCIsInByb3BIb29rcyIsInJ1biIsInBlcmNlbnQiLCJlYXNlZCIsInN0ZXAiLCJmeCIsInNjcm9sbFRvcCIsInNjcm9sbExlZnQiLCJsaW5lYXIiLCJwIiwic3dpbmciLCJjb3MiLCJQSSIsImZ4Tm93IiwiaW5Qcm9ncmVzcyIsInJmeHR5cGVzIiwicnJ1biIsInNjaGVkdWxlIiwiaGlkZGVuIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiaW50ZXJ2YWwiLCJ0aWNrIiwiY3JlYXRlRnhOb3ciLCJnZW5GeCIsImluY2x1ZGVXaWR0aCIsImhlaWdodCIsImNyZWF0ZVR3ZWVuIiwiYW5pbWF0aW9uIiwiQW5pbWF0aW9uIiwidHdlZW5lcnMiLCJwcm9wZXJ0aWVzIiwic3RvcHBlZCIsInByZWZpbHRlcnMiLCJjdXJyZW50VGltZSIsInN0YXJ0VGltZSIsInR3ZWVucyIsIm9wdHMiLCJzcGVjaWFsRWFzaW5nIiwib3JpZ2luYWxQcm9wZXJ0aWVzIiwib3JpZ2luYWxPcHRpb25zIiwiZ290b0VuZCIsInByb3BGaWx0ZXIiLCJiaW5kIiwiY29tcGxldGUiLCJ0aW1lciIsImFuaW0iLCIqIiwidHdlZW5lciIsIm9sZGZpcmUiLCJwcm9wVHdlZW4iLCJyZXN0b3JlRGlzcGxheSIsImlzQm94IiwiZGF0YVNob3ciLCJ1bnF1ZXVlZCIsIm92ZXJmbG93WCIsIm92ZXJmbG93WSIsInByZWZpbHRlciIsInNwZWVkIiwib3B0Iiwic3BlZWRzIiwiZmFkZVRvIiwiYW5pbWF0ZSIsIm9wdGFsbCIsImRvQW5pbWF0aW9uIiwiZmluaXNoIiwic3RvcFF1ZXVlIiwidGltZXJzIiwiY3NzRm4iLCJzbGlkZURvd24iLCJzbGlkZVVwIiwic2xpZGVUb2dnbGUiLCJmYWRlSW4iLCJmYWRlT3V0IiwiZmFkZVRvZ2dsZSIsInNsb3ciLCJmYXN0IiwiZGVsYXkiLCJjbGVhclRpbWVvdXQiLCJjaGVja09uIiwib3B0U2VsZWN0ZWQiLCJyYWRpb1ZhbHVlIiwiYm9vbEhvb2siLCJyZW1vdmVBdHRyIiwiblR5cGUiLCJhdHRySG9va3MiLCJhdHRyTmFtZXMiLCJsb3dlcmNhc2VOYW1lIiwicmZvY3VzYWJsZSIsInJjbGlja2FibGUiLCJzdHJpcEFuZENvbGxhcHNlIiwiZ2V0Q2xhc3MiLCJjbGFzc2VzVG9BcnJheSIsInJlbW92ZVByb3AiLCJwcm9wRml4IiwidGFiaW5kZXgiLCJmb3IiLCJjbGFzcyIsImFkZENsYXNzIiwiY2xhc3NlcyIsImN1clZhbHVlIiwiY2xhenoiLCJmaW5hbFZhbHVlIiwidG9nZ2xlQ2xhc3MiLCJzdGF0ZVZhbCIsImlzVmFsaWRWYWx1ZSIsImNsYXNzTmFtZXMiLCJoYXNDbGFzcyIsInJyZXR1cm4iLCJ2YWxIb29rcyIsIm9wdGlvblNldCIsImZvY3VzaW4iLCJyZm9jdXNNb3JwaCIsInN0b3BQcm9wYWdhdGlvbkNhbGxiYWNrIiwib25seUhhbmRsZXJzIiwiYnViYmxlVHlwZSIsIm9udHlwZSIsImxhc3RFbGVtZW50IiwiZXZlbnRQYXRoIiwiaXNUcmlnZ2VyIiwicGFyZW50V2luZG93Iiwic2ltdWxhdGUiLCJ0cmlnZ2VySGFuZGxlciIsImF0dGFjaGVzIiwibm9uY2UiLCJycXVlcnkiLCJwYXJzZVhNTCIsIkRPTVBhcnNlciIsInBhcnNlRnJvbVN0cmluZyIsInJicmFja2V0IiwickNSTEYiLCJyc3VibWl0dGVyVHlwZXMiLCJyc3VibWl0dGFibGUiLCJidWlsZFBhcmFtcyIsInRyYWRpdGlvbmFsIiwicGFyYW0iLCJ2YWx1ZU9yRnVuY3Rpb24iLCJlbmNvZGVVUklDb21wb25lbnQiLCJzZXJpYWxpemUiLCJzZXJpYWxpemVBcnJheSIsInIyMCIsInJoYXNoIiwicmFudGlDYWNoZSIsInJoZWFkZXJzIiwicm5vQ29udGVudCIsInJwcm90b2NvbCIsInRyYW5zcG9ydHMiLCJhbGxUeXBlcyIsIm9yaWdpbkFuY2hvciIsImFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyIsInN0cnVjdHVyZSIsImRhdGFUeXBlRXhwcmVzc2lvbiIsImRhdGFUeXBlcyIsImluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzIiwianFYSFIiLCJpbnNwZWN0ZWQiLCJzZWVraW5nVHJhbnNwb3J0IiwicHJlZmlsdGVyT3JGYWN0b3J5IiwiZGF0YVR5cGVPclRyYW5zcG9ydCIsImFqYXhFeHRlbmQiLCJmbGF0T3B0aW9ucyIsImFqYXhTZXR0aW5ncyIsImFjdGl2ZSIsImxhc3RNb2RpZmllZCIsImV0YWciLCJwcm90b2NvbCIsInByb2Nlc3NEYXRhIiwiYXN5bmMiLCJjb250ZW50VHlwZSIsImFjY2VwdHMiLCJqc29uIiwicmVzcG9uc2VGaWVsZHMiLCJjb252ZXJ0ZXJzIiwiKiB0ZXh0IiwidGV4dCBodG1sIiwidGV4dCBqc29uIiwidGV4dCB4bWwiLCJhamF4U2V0dXAiLCJzZXR0aW5ncyIsImFqYXhQcmVmaWx0ZXIiLCJhamF4VHJhbnNwb3J0IiwidHJhbnNwb3J0IiwiY2FjaGVVUkwiLCJyZXNwb25zZUhlYWRlcnNTdHJpbmciLCJyZXNwb25zZUhlYWRlcnMiLCJ0aW1lb3V0VGltZXIiLCJ1cmxBbmNob3IiLCJmaXJlR2xvYmFscyIsInVuY2FjaGVkIiwiY2FsbGJhY2tDb250ZXh0IiwiZ2xvYmFsRXZlbnRDb250ZXh0IiwiY29tcGxldGVEZWZlcnJlZCIsInN0YXR1c0NvZGUiLCJyZXF1ZXN0SGVhZGVycyIsInJlcXVlc3RIZWFkZXJzTmFtZXMiLCJzdHJBYm9ydCIsImdldFJlc3BvbnNlSGVhZGVyIiwiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIiwic2V0UmVxdWVzdEhlYWRlciIsIm92ZXJyaWRlTWltZVR5cGUiLCJtaW1lVHlwZSIsInN0YXR1cyIsImFib3J0Iiwic3RhdHVzVGV4dCIsImZpbmFsVGV4dCIsImNyb3NzRG9tYWluIiwiaG9zdCIsImhhc0NvbnRlbnQiLCJpZk1vZGlmaWVkIiwiYmVmb3JlU2VuZCIsInN1Y2Nlc3MiLCJuYXRpdmVTdGF0dXNUZXh0IiwicmVzcG9uc2VzIiwiaXNTdWNjZXNzIiwicmVzcG9uc2UiLCJtb2RpZmllZCIsImN0IiwiZmluYWxEYXRhVHlwZSIsImZpcnN0RGF0YVR5cGUiLCJhamF4SGFuZGxlUmVzcG9uc2VzIiwiY29udjIiLCJjdXJyZW50IiwiY29udiIsImRhdGFGaWx0ZXIiLCJ0aHJvd3MiLCJhamF4Q29udmVydCIsImdldEpTT04iLCJ3cmFwQWxsIiwiZmlyc3RFbGVtZW50Q2hpbGQiLCJ3cmFwSW5uZXIiLCJodG1sSXNGdW5jdGlvbiIsInVud3JhcCIsInZpc2libGUiLCJvZmZzZXRIZWlnaHQiLCJ4aHIiLCJYTUxIdHRwUmVxdWVzdCIsInhoclN1Y2Nlc3NTdGF0dXMiLCIwIiwiMTIyMyIsInhoclN1cHBvcnRlZCIsImNvcnMiLCJlcnJvckNhbGxiYWNrIiwib3BlbiIsInVzZXJuYW1lIiwieGhyRmllbGRzIiwib25sb2FkIiwib25lcnJvciIsIm9uYWJvcnQiLCJvbnRpbWVvdXQiLCJyZXNwb25zZVR5cGUiLCJyZXNwb25zZVRleHQiLCJiaW5hcnkiLCJ0ZXh0IHNjcmlwdCIsImNoYXJzZXQiLCJzY3JpcHRDaGFyc2V0IiwiZXZ0Iiwib2xkQ2FsbGJhY2tzIiwicmpzb25wIiwianNvbnAiLCJqc29ucENhbGxiYWNrIiwib3JpZ2luYWxTZXR0aW5ncyIsImNhbGxiYWNrTmFtZSIsIm92ZXJ3cml0dGVuIiwicmVzcG9uc2VDb250YWluZXIiLCJqc29uUHJvcCIsImNyZWF0ZUhUTUxEb2N1bWVudCIsImltcGxlbWVudGF0aW9uIiwia2VlcFNjcmlwdHMiLCJwYXJzZWQiLCJwYXJhbXMiLCJhbmltYXRlZCIsInNldE9mZnNldCIsImN1clBvc2l0aW9uIiwiY3VyTGVmdCIsImN1ckNTU1RvcCIsImN1clRvcCIsImN1ck9mZnNldCIsImN1ckNTU0xlZnQiLCJjdXJFbGVtIiwidXNpbmciLCJyZWN0Iiwid2luIiwicGFnZVlPZmZzZXQiLCJwYWdlWE9mZnNldCIsIm9mZnNldFBhcmVudCIsInBhcmVudE9mZnNldCIsInNjcm9sbFRvIiwiSGVpZ2h0IiwiV2lkdGgiLCIiLCJkZWZhdWx0RXh0cmEiLCJmdW5jTmFtZSIsImhvdmVyIiwiZm5PdmVyIiwiZm5PdXQiLCJ1bmJpbmQiLCJkZWxlZ2F0ZSIsInVuZGVsZWdhdGUiLCJwcm94eSIsImhvbGRSZWFkeSIsImhvbGQiLCJwYXJzZUpTT04iLCJpc051bWVyaWMiLCJfalF1ZXJ5IiwiXyQiLCJub0NvbmZsaWN0IiwiY2FjaGVkR3Vlc3MiLCJ6b25lcyIsImxpbmtzIiwiZ3Vlc3NlcyIsIm1vbWVudFZlcnNpb24iLCJtYWpvciIsIm1pbm9yIiwiY2hhckNvZGVUb0ludCIsInVucGFja0Jhc2U2MCIsIndob2xlIiwiZnJhY3Rpb25hbCIsIm11bHRpcGxpZXIiLCJhcnJheVRvSW50IiwibWFwSW5kaWNlcyIsImluZGljZXMiLCJ1bnBhY2siLCJvZmZzZXRzIiwidW50aWxzIiwiSW5maW5pdHkiLCJpbnRUb1VudGlsIiwiYWJicnMiLCJwb3B1bGF0aW9uIiwiWm9uZSIsInBhY2tlZFN0cmluZyIsIl9zZXQiLCJPZmZzZXRBdCIsImF0IiwidGltZVN0cmluZyIsInRvVGltZVN0cmluZyIsIlpvbmVTY29yZSIsIm9mZnNldFNjb3JlIiwiYWJiclNjb3JlIiwiZmluZENoYW5nZSIsImxvdyIsIm1pZCIsInNvcnRab25lU2NvcmVzIiwiYWRkVG9HdWVzc2VzIiwiZ3Vlc3Nlc0ZvclVzZXJPZmZzZXRzIiwiZ3Vlc3Nlc09mZnNldCIsIm9mZnNldHNMZW5ndGgiLCJmaWx0ZXJlZEd1ZXNzZXMiLCJyZWJ1aWxkR3Vlc3MiLCJpbnRsTmFtZSIsIkludGwiLCJEYXRlVGltZUZvcm1hdCIsInJlc29sdmVkT3B0aW9ucyIsInRpbWVab25lIiwibm9ybWFsaXplTmFtZSIsImxvZ0Vycm9yIiwiem9uZVNjb3JlIiwiY2hhbmdlIiwic3RhcnRZZWFyIiwidXNlck9mZnNldHMiLCJ6b25lU2NvcmVzIiwiZ2V0Wm9uZSIsInNjb3JlT2Zmc2V0QXQiLCJhZGRab25lIiwicGFja2VkIiwibm9ybWFsaXplZCIsImNhbGxlciIsImxpbmsiLCJhZGRMaW5rIiwibm9ybWFsMCIsIm5vcm1hbDEiLCJsb2FkRGF0YSIsInR6IiwiZGF0YVZlcnNpb24iLCJuZWVkc09mZnNldCIsImlzVW5peFRpbWVzdGFtcCIsInVucGFja2VkIiwiX2luZGV4IiwidGltZXN0YW1wIiwib2Zmc2V0TmV4dCIsIm9mZnNldFByZXYiLCJtb3ZlQW1iaWd1b3VzRm9yd2FyZCIsIm1vdmVJbnZhbGlkRm9yd2FyZCIsIm9mZnNldEF0IiwiX3pvbmVzIiwiX2xpbmtzIiwiX25hbWVzIiwiem9uZUV4aXN0cyIsImRpZFNob3dFcnJvciIsImd1ZXNzIiwiaWdub3JlQ2FjaGUiLCJhYmJyV3JhcCIsIl96IiwiZGVmYXVsdFpvbmUiLCJzZXREZWZhdWx0IiwibGFzdFRpbWUiLCJ2ZW5kb3JzIiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJjdXJyVGltZSIsInRpbWVUb0NhbGwiLCJfc2V0dGluZ3MiLCJjdXJzb3JBbmltYXRpb25QYXVzZWQiLCJvcGFjaXR5SW5jcmVhc2luZyIsImN1cnJlbnRPcGFjaXR5IiwiZGVsYXllZFF1ZSIsImRlbGF5SXRlbXNDb3VudCIsImV2ZW50UXVlIiwiY2FsbGVkRXZlbnRzIiwiZXZlbnRSdW5uaW5nIiwiZGVsYXlFeGVjdXRpb24iLCJmcHMiLCJ0eXBpbmdGcmFtZUNvdW50Iiwic3RyaW5nVG9UeXBlSFRNTEFycmF5IiwiY3VycmVudFR5cGVkQ2hhcmFjdGVycyIsInR5cGluZyIsInVzZWRJRHMiLCJjaGFyQW1vdW50VG9EZWxldGUiLCJ1c2VyT3B0aW9ucyIsImV2ZW50TG9vcFJlcnVuIiwiZGVmYXVsdF9vcHRpb25zIiwic3RyaW5ncyIsImN1cnNvckNsYXNzTmFtZSIsImN1cnNvciIsImFuaW1hdGVDdXJzb3IiLCJibGlua1NwZWVkIiwiY2hhclNwYW5DbGFzc05hbWUiLCJ3cmFwcGVyQ2xhc3NOYW1lIiwiYXV0b1N0YXJ0IiwiX3NldHVwT3B0aW9ucyIsIl9zZXR1cFR5cHdyaXRlcldyYXBwZXIiLCJfc3RhcnRDdXJzb3JBbmltYXRpb24iLCJ0eXBlT3V0QWxsU3RyaW5ncyIsIlR5cGV3cml0ZXJQcm90b3R5cGUiLCJfYWRkVG9FdmVudFF1ZSIsIl9zdG9wRXZlbnRMb29wIiwiX3N0YXJ0RXZlbnRMb29wIiwicmVydW4iLCJfcmVydW5DYWxsZWRFdmVudHMiLCJzdHJpbmdfY2hhcnMiLCJfZ2V0Q2hhcmFjdGVycyIsIl90eXBlQ2hhcmFjdGVycyIsImRlbGV0ZUFsbCIsIl9kZWxldGVDaGFycyIsImFtb3VudCIsIl9wYXVzZUZvciIsImNoYXJhY3RlcnNfYXJyYXkiLCJfZ2V0U3RyaW5nc0FzQ2hhcnNBcnJheSIsIl9yYW5kb21JbnRlZ2VyIiwibmV3X3NldHRpbmdzIiwiX2NoYW5nZVNldHRpbmdzIiwiY2hhbmdlQmxpbmtTcGVlZCIsIm5ld19zcGVlZCIsImNoYW5nZVR5cGluZ1NwZWVkIiwiY2hhbmdlRGVsZXRlU3BlZWQiLCJfcmVzZXRFdmVudExvb3AiLCJfZGVsZXRpbmdDaGFySWRzQW5pbWF0aW9uIiwiX2RlbGV0aW5nQ2hhckFuaW1hdGlvbkZyYW1lIiwibG9nIiwiZGVsZXRlX3NwZWVkIiwidHlwZXdyaXRlcl93cmFwcGVyX2NsYXNzX25hbWUiLCJjdXJyZW50X3R5cGVkX2NoYXJfaWRzIiwiY2hhcl9hbW91bnRfdG9fZGVsZXRlIiwibGFzdF90eXBlZF9jaGFyX2luZGV4IiwiZ2V0X2xhc3RfdHlwZWRfY2hhciIsImNoYXJfdG9fZGVsZXRlX2VsIiwibmV3X29wdGlvbnMiLCJtZXJnZWRfb3B0aW9ucyIsImF0dHJuYW1lIiwiZmlyc3RfZXZlbnQiLCJfZXZlbnRRdWVBbmltYXRpb24iLCJldmVudF9uYW1lIiwidHlwZXdyaXRlcl93cmFwcGVyIiwiX2NvbnZlcnRDaGFyc1RvSFRNTCIsIl90eXBpbmdBbmltYXRpb24iLCJfdHlwaW5nQW5pbWF0aW9uRnJhbWUiLCJ0b3RhbF9pdGVtcyIsInR5cGluZ19zcGVlZCIsIml0ZW1fdG9fdHlwZSIsImNoYXJzIiwiY2hhcnNfaHRtbF93cmFwX2FycmF5IiwiY2hhcl9jbGFzc19uYW1lIiwiY2hhcnNfYXJyYXkiLCJjaGFyX2VsZW1lbnQiLCJjaGFyX2lkIiwiX2dlbmVyYXRlVW5pcXVlSUQiLCJzdHJpbmdzX2FycmF5X2NoZWNrIiwic3RyaW5nc19zdHJpbmdfY2hlY2siLCJzdHJpbmdzX2NoYXJzX2FycmF5IiwiX2N1cnNvckFuaW1hdGlvbkZyYW1lIiwib3BhY2l0eV9hbW91bnQiLCJjdXJzb3JfZWwiLCJfY3Vyc29yQW5pbWF0aW9uIiwiX2FwcGVuZFRleHQiLCJpdGVtcyIsImN1cnNvcl9jbGFzc19uYW1lIiwiY3Vyc29yX2VsZW1lbnQiLCJfcGF1c2VDdXJzb3JBbmltYXRpb24iLCJfcmVzdGFydEN1cnNvckFuaW1hdGlvbiIsIl9yYW5kb21JRCIsInBvc3NpYmxlIiwidGVtcF9pZCIsImh5cGhlbmF0ZUNhY2hlIiwiaHlwaGVuYXRlUmUiLCJoeXBoZW5hdGUiLCJzdHIiLCJjYW1lbGl6ZVJlIiwiY2FtZWxpemUiLCJ0b1VwcGVyIiwidWNmaXJzdCIsInN0clByb3RvdHlwZSIsInN0YXJ0c1dpdGhGbiIsInN0YXJ0c1dpdGgiLCJzZWFyY2giLCJsYXN0SW5kZXhPZiIsImVuZHNXaXRoRm4iLCJlbmRzV2l0aCIsImluY2x1ZGVzRm4iLCJpbmNsdWRlc1N0ciIsImluY2x1ZGVzIiwiaW5jbHVkZXNBcnJheSIsImlzU3RyaW5nIiwiaXNEb2N1bWVudCIsImlzSlF1ZXJ5IiwiaXNOb2RlIiwiTm9kZSIsImlzTm9kZUNvbGxlY3Rpb24iLCJOb2RlTGlzdCIsIkhUTUxDb2xsZWN0aW9uIiwiaXNCb29sZWFuIiwidG9Cb29sZWFuIiwidG9OdW1iZXIiLCJOdW1iZXIiLCJ0b0Zsb2F0IiwidG9Ob2RlIiwiYXJyYXlQcm90byIsInRvTm9kZXMiLCJCb29sZWFuIiwidG9MaXN0IiwidG9NcyIsImFzc2lnbiIsImNiIiwic29ydEJ5IiwiY2xhbXAiLCJpbnRlcnNlY3RSZWN0IiwicjEiLCJyMiIsImJvdHRvbSIsInBvaW50SW5SZWN0IiwicG9pbnQiLCJEaW1lbnNpb25zIiwicmF0aW8iLCJkaW1lbnNpb25zIiwiYVByb3AiLCJjb250YWluIiwibWF4RGltZW5zaW9ucyIsInRoaXMkMSIsImNvdmVyIiwiaGFzQXR0ciIsImhhc0F0dHJpYnV0ZSIsImZpbHRlckF0dHIiLCJhdHRyaWJ1dGUiLCJyZXBsYWNlbWVudCIsInF1ZXJ5IiwiaXNDb250ZXh0U2VsZWN0b3IiLCJxdWVyeUFsbCIsImZpbmRBbGwiLCJfcXVlcnkiLCJxdWVyeUZuIiwicmVtb3ZlcyIsImNvbnRleHRTYW5pdGl6ZVJlIiwiY3R4Iiwic2VsZWN0b3JzJDEiLCJwcmV2aW91c0VsZW1lbnRTaWJsaW5nIiwiY29udGV4dFNlbGVjdG9yUmUiLCJlbFByb3RvIiwiRWxlbWVudCIsIm1hdGNoZXNGbiIsImNsb3Nlc3RGbiIsImFuY2VzdG9yIiwiZXNjYXBlRm4iLCJDU1MiLCJ2b2lkRWxlbWVudHMiLCJhcmVhIiwiYnIiLCJlbWJlZCIsImhyIiwiaW1nIiwia2V5Z2VuIiwibWVudWl0ZW0iLCJtZXRhIiwidHJhY2siLCJ3YnIiLCJpc1ZvaWRFbGVtZW50IiwidGFnTmFtZSIsImlzVmlzaWJsZSIsInNlbElucHV0IiwiaXNJbnB1dCIsIndpdGhpbiIsInJlZiIsImdldEFyZ3MiLCJsaXN0ZW5lciIsInVzZUNhcHR1cmUiLCJ0b0V2ZW50VGFyZ2V0IiwiY29uZGl0aW9uIiwidG9FdmVudFRhcmdldHMiLCJyZWR1Y2UiLCJub3RDYW5jZWxlZCIsImRpc3BhdGNoRXZlbnQiLCJjcmVhdGVFdmVudCIsImluaXRDdXN0b21FdmVudCIsImlzRXZlbnRUYXJnZXQiLCJFdmVudFRhcmdldCIsInByZXZlbnRDbGljayIsIlByb21pc2UkMSIsIlByb21pc2UiLCJQcm9taXNlRm4iLCJQRU5ESU5HIiwic2V0SW1tZWRpYXRlIiwiZXhlY3V0b3IiLCJyIiwiaXRlcmFibGUiLCJyZXNvbHZlciIsInJhY2UiLCJlbnYiLCJnZXRJbWFnZSIsInNyY3NldCIsInNpemVzIiwiSW1hZ2UiLCJ1bmJpbmQxIiwidW5iaW5kMiIsImdldEluZGV4IiwiZmluaXRlIiwiaGFzQ2hpbGROb2RlcyIsImluc2VydE5vZGVzIiwiY2FsbGVkIiwib25SZXNvbHZlZCIsImZyYWdtZW50UmUiLCJzaW5nbGVUYWdSZSIsImluc2VydEFkamFjZW50SFRNTCIsIm5leHRFbGVtZW50U2libGluZyIsImFwcGx5JDEiLCJyZW1vdmVDbGFzc2VzIiwiY2xzIiwicmVwbGFjZUNsYXNzIiwiZm9yY2UiLCJnZXRBcmdzJDEiLCJzdXBwb3J0cyIsIkZvcmNlIiwiTXVsdGlwbGUiLCJhbmltYXRpb24taXRlcmF0aW9uLWNvdW50IiwiY29sdW1uLWNvdW50IiwiZmlsbC1vcGFjaXR5IiwiZmxleC1ncm93IiwiZmxleC1zaHJpbmsiLCJmb250LXdlaWdodCIsImxpbmUtaGVpZ2h0Iiwiei1pbmRleCIsInByb3BlcnR5IiwicHJvcE5hbWUiLCJnZXRTdHlsZSIsInJlbW92ZVByb3BlcnR5IiwicHNldWRvRWx0IiwidmFycyIsImdldENzc1ZhciIsInByZWZpeGVkTmFtZSIsInRyYW5zaXRpb24iLCJ0aW1pbmciLCJ0cmFuc2l0aW9uLXByb3BlcnR5IiwidHJhbnNpdGlvbi1kdXJhdGlvbiIsInRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIiwiVHJhbnNpdGlvbiIsImNhbmNlbCIsImFuaW1hdGlvblByZWZpeCIsImNsc0NhbmNlbEFuaW1hdGlvbiIsIm9yaWdpbiIsImFyZ3VtZW50cyQxIiwiaGFzUmVzZXQiLCJpbiIsImlzSHRtbCIsIiQkIiwiZGlycyIsInBvc2l0aW9uQXQiLCJlbEF0dGFjaCIsInRhcmdldEF0dGFjaCIsImVsT2Zmc2V0IiwidGFyZ2V0T2Zmc2V0IiwiZmxpcCIsImJvdW5kYXJ5IiwiZ2V0UG9zIiwiZmxpcHBlZCIsImRpbSIsImdldERpbWVuc2lvbnMiLCJ0YXJnZXREaW0iLCJtb3ZlVG8iLCJnZXRPZmZzZXRzIiwid2luZG93JDEiLCJhbGlnbiIsImFsaWduRmxpcCIsImVsZW1PZmZzZXQiLCJjZW50ZXJPZmZzZXQiLCJjZW50ZXJUYXJnZXRPZmZzZXQiLCJuZXdWYWwiLCJjb29yZGluYXRlcyIsImN1cnJlbnRPZmZzZXQiLCJpbm5lckhlaWdodCIsImlubmVyV2lkdGgiLCJkb2NFbCIsInByb3BOYW1lJCQxIiwiYm94TW9kZWxBZGp1c3QiLCJhdHRhY2giLCJmYWN0b3IiLCJmbGlwUG9zaXRpb24iLCJpc0luVmlldyIsInRvcE9mZnNldCIsImxlZnRPZmZzZXQiLCJyZWxhdGl2ZVRvVmlld3BvcnQiLCJvZmZzZXRQb3NpdGlvbiIsImVsVG9wIiwiZWxMZWZ0Iiwic2Nyb2xsZWRPdmVyIiwiaGVpZ2h0T2Zmc2V0IiwiZG9jdW1lbnQkMSIsImVsSGVpZ2h0IiwidnAiLCJ2aCIsIm9mZnNldFRvcCIsIm9mZnNldExlZnQiLCJpc1J0bCIsImhhc1RvdWNoRXZlbnRzIiwiaGFzUG9pbnRlckV2ZW50cyIsIlBvaW50ZXJFdmVudCIsImhhc1RvdWNoIiwiRG9jdW1lbnRUb3VjaCIsIm5hdmlnYXRvciIsIm1heFRvdWNoUG9pbnRzIiwicG9pbnRlckRvd24iLCJwb2ludGVyTW92ZSIsInBvaW50ZXJVcCIsInBvaW50ZXJFbnRlciIsInBvaW50ZXJMZWF2ZSIsImZhc3Rkb20iLCJyZWFkcyIsIndyaXRlcyIsInJlYWQiLCJ0YXNrIiwic2NoZWR1bGVGbHVzaCIsIndyaXRlIiwiY2xlYXIiLCJyZW1vdmUkMSIsImZsdXNoIiwicnVuVGFza3MiLCJzY2hlZHVsZWQiLCJ0YXNrcyIsIml0ZW0iLCJNb3VzZVRyYWNrZXIiLCJzbG9wZSIsInBvc2l0aW9ucyIsInRpY2tpbmciLCJtb3Zlc1RvIiwicG9zaXRpb24kJDEiLCJwcmV2UG9zIiwicG9pbnRzIiwic3RyYXRzIiwibWVyZ2VGbkRhdGEiLCJwYXJlbnRWYWwiLCJjaGlsZFZhbCIsInZtIiwiY3JlYXRlZCIsImJlZm9yZUNvbm5lY3QiLCJjb25uZWN0ZWQiLCJiZWZvcmVEaXNjb25uZWN0IiwiZGlzY29ubmVjdGVkIiwiZGVzdHJveSIsInVwZGF0ZSIsIm1ldGhvZHMiLCJkZWZhdWx0U3RyYXQiLCJtZXJnZU9wdGlvbnMiLCJjaGlsZCIsImV4dGVuZHMiLCJtaXhpbnMiLCJtZXJnZUtleSIsImtleSQxIiwicGFyc2VPcHRpb25zIiwiUGxheWVyIiwicG9zdCIsImNtZCIsImNvbnRlbnRXaW5kb3ciLCJwb3N0TWVzc2FnZSIsImlzVmlkZW8iLCJpc1lvdXR1YmUiLCJpc1ZpbWVvIiwiaXNIVE1MNSIsImlzSUZyYW1lIiwiZW5hYmxlQXBpIiwicG9sbGVyIiwieW91dHViZSIsInZpbWVvIiwiZGF0YSQkMSIsInBsYXllcl9pZCIsInBsYXkiLCJwYXVzZSIsIm11dGUiLCJtdXRlZCIsImNsaWNrVGltZW91dCIsInN3aXBlVGltZW91dCIsInRhcFRpbWVvdXQiLCJjbGlja2VkIiwidG91Y2giLCJjYW5jZWxBbGwiLCJnZXRQb3MkMSIsImdldFR5cGUiLCJ4MSIsInkxIiwieDIiLCJ5MiIsInRvdWNoaW5nIiwiaXNUb3VjaCIsImdldENvbXBvbmVudE5hbWUiLCJfaW5pdCIsInV0aWwiLCJmcmVlemUiLCJEQVRBIiwiX2lzUmVhZHkiLCJfY2FsbFVwZGF0ZSIsInVzZSIsInBsdWdpbiIsImluc3RhbGxlZCIsIm1peGluIiwiY29tcG9uZW50IiwiU3ViIiwiY3JlYXRlIiwicGF0aCIsImdsb2JhbEFQSSIsIl9jYWxsSG9vayIsIiRvcHRpb25zIiwiX2NhbGxDb25uZWN0ZWQiLCJfY29ubmVjdGVkIiwiX2luaXRQcm9wcyIsIl9pbml0RXZlbnRzIiwiX2luaXRPYnNlcnZlciIsIl9jYWxsUmVhZHkiLCJfY2FsbERpc2Nvbm5lY3RlZCIsIl9vYnNlcnZlciIsImRpc2Nvbm5lY3QiLCJfdW5iaW5kRXZlbnRzIiwiX3Jlc2V0Q29tcHV0ZWRzIiwidXBkYXRlcyIsIl9mcmFtZXMiLCJob29rc0FQSSIsImdldFByb3BzIiwiY29lcmNlIiwicHJvcCQxIiwicmVnaXN0ZXJDb21wdXRlZCIsIl9jb21wdXRlZHMiLCIkcHJvcHMiLCIkZWwiLCJyZWdpc3RlckV2ZW50IiwiY2FwdHVyZSIsImZpbHRlciQkMSIsInNlbGZGaWx0ZXIiLCJfZXZlbnRzIiwibm90SW4iLCJldmVyeSIsInRvTWVkaWEiLCJyZWYkMSIsImluZGV4JCQxIiwibm9ybWFsaXplRGF0YSIsIl91aWQiLCJfaW5pdERhdGEiLCJfaW5pdE1ldGhvZHMiLCJfaW5pdENvbXB1dGVkcyIsIiRtb3VudCIsIiRuYW1lIiwiZXhjbHVkZSIsIk11dGF0aW9uT2JzZXJ2ZXIiLCIkcmVzZXQiLCJvYnNlcnZlIiwiYXR0cmlidXRlRmlsdGVyIiwic3RhdGVBUEkiLCJjb21wb25lbnRzIiwiYXJnc0FycmF5IiwiZnVuY3Rpb25hbCIsImluc3RhbmNlIiwiZ2V0Q29tcG9uZW50IiwiJGRlc3Ryb3kiLCJpbnN0YWxsIiwiX2luaXRpYWxpemVkIiwiZ2V0Q29tcG9uZW50cyIsImNvbm5lY3QiLCJuYW1lJDEiLCJjb21wb25lbnRBUEkiLCIkZW1pdCIsInJlbW92ZUVsIiwiJGNyZWF0ZSIsIiR1cGRhdGUiLCIkZ2V0Q29tcG9uZW50IiwiZGVmaW5lUHJvcGVydGllcyIsIiRjb250YWluZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJpbnN0YW5jZUFQSSIsIkNsYXNzIiwiVG9nZ2xhYmxlIiwicXVldWVkIiwiaW5pdFByb3BzIiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iLCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iLCJoaWRlUHJvcHMiLCJoYXNBbmltYXRpb24iLCJoYXNUcmFuc2l0aW9uIiwidG9nZ2xlRWxlbWVudCIsImFuaW1hdGUkJDEiLCJfdG9nZ2xlRWxlbWVudCIsInRvZ2dsZWQiLCJpc1RvZ2dsZWQiLCJ1bnRvZ2dsZWQiLCJzY3JvbGwiLCJ0b2dnbGVOb3ciLCJ1cGRhdGVBcmlhIiwiX3RvZ2dsZUhlaWdodCIsIl90b2dnbGVBbmltYXRpb24iLCJfdG9nZ2xlSW1tZWRpYXRlIiwiX3RvZ2dsZSIsImNoYW5nZWQiLCJpbm5lciIsImxhc3RFbGVtZW50Q2hpbGQiLCJjdXJyZW50SGVpZ2h0IiwiZW5kSGVpZ2h0IiwiQWNjb3JkaW9uIiwiY29sbGFwc2libGUiLCJtdWx0aXBsZSIsImNsc09wZW4iLCJpc0l0ZW0iLCJfd3JhcHBlciIsIkFsZXJ0IiwiY2xvc2UiLCJzZWxDbG9zZSIsIkNvcmUiLCJzdGFydGVkIiwicGFzc2l2ZSIsImhvdmVyU2VsZWN0b3IiLCJyZWdpc3RlcmVkIiwiVmlkZW8iLCJhdXRvbXV0ZSIsImF1dG9wbGF5IiwiaW5WaWV3IiwicHJlbG9hZCIsInBsYXllciIsIkNvdmVyIiwiaGVpZ2h0JCQxIiwid2lkdGgkJDEiLCJjbGllbnRXaWR0aCIsImNsaWVudEhlaWdodCIsImxvYWRlZG1ldGFkYXRhIiwiUG9zaXRpb24iLCJjbHNQb3MiLCJvZmZzZXQkJDEiLCJheGlzIiwiZ2V0QXhpcyIsIkRyb3AiLCJtb2RlIiwiYm91bmRhcnlBbGlnbiIsImRlbGF5U2hvdyIsImRlbGF5SGlkZSIsImNsc0Ryb3AiLCJob3ZlcklkbGUiLCJ0cmFja2VyIiwiY2xlYXJUaW1lcnMiLCJpc0FjdGl2ZSIsInRyeVNob3ciLCJpc0RlbGF5aW5nIiwic2hvd1RpbWVyIiwiaXNQYXJlbnRPZiIsImhpZGVUaW1lciIsImlzQ2hpbGRPZiIsImRyb3AiLCJhbGlnblRvIiwiRHJvcGRvd24iLCJGb3JtQ3VzdG9tIiwiZmlsZXMiLCJHaWYiLCJpbnZpZXciLCJNYXJnaW4iLCJmaXJzdENvbHVtbiIsInJvd3MiLCJnZXRSb3dzIiwic3RhY2tzIiwicm93IiwiZ2V0T2Zmc2V0IiwibGVmdERpbSIsIkdyaWQiLCJtYXNvbnJ5IiwicGFyYWxsYXgiLCJjbHNTdGFjayIsInRyYW5zbGF0ZXMiLCJzdW0iLCJtYXhDb2x1bW5IZWlnaHQiLCJzY3JvbGxlZCIsIkhlaWdodE1hdGNoIiwibWluSGVpZ2h0IiwiYm94U2l6aW5nIiwiaGVpZ2h0cyIsIkhlaWdodFZpZXdwb3J0Iiwib2Zmc2V0Qm90dG9tIiwidmlld3BvcnQiLCJzdmdzIiwiU1ZHIiwiaWNvbiIsImFzc2lnbiQkMSIsInN2ZyIsImdldFN2ZyIsInN5bWJvbHMiLCJzeW1ib2xSZSIsInBhcnNlU3ltYm9scyIsImlzRXF1YWxOb2RlIiwic3ZnRWwiLCJkZWNvZGVVUklDb21wb25lbnQiLCJpY29ucyIsInNwaW5uZXIiLCJ0b3RvcCIsIm1hcmtlciIsImNsb3NlLWljb24iLCJjbG9zZS1sYXJnZSIsIm5hdmJhci10b2dnbGUtaWNvbiIsIm92ZXJsYXktaWNvbiIsInBhZ2luYXRpb24tbmV4dCIsInBhZ2luYXRpb24tcHJldmlvdXMiLCJzZWFyY2gtaWNvbiIsInNlYXJjaC1sYXJnZSIsInNlYXJjaC1uYXZiYXIiLCJzbGlkZW5hdi1uZXh0Iiwic2xpZGVuYXYtbmV4dC1sYXJnZSIsInNsaWRlbmF2LXByZXZpb3VzIiwic2xpZGVuYXYtcHJldmlvdXMtbGFyZ2UiLCJJY29uIiwiYWRkZWQiLCJjbXAiLCJpc0ljb24iLCJnZXRJY29uIiwiYXBwbHlSdGwiLCJJY29uQ29tcG9uZW50IiwiU2xpZGVuYXYiLCJTZWFyY2giLCJDbG9zZSIsIlNwaW5uZXIiLCJJbWciLCJkYXRhU3JjIiwiZGF0YVNyY3NldCIsImRhdGFTaXplcyIsImRhdGFXaWR0aCIsImRhdGFIZWlnaHQiLCJjYWNoZUtleSIsImlzSW1nIiwidG9QeCIsInN0b3JhZ2UiLCJzZXRTcmNBdHRycyIsImNvbG9yIiwibWF0Y2hlcyQkMSIsInNpemVzUmUiLCJtYXRjaE1lZGlhIiwic2l6ZSIsInN1YnN0cmluZyIsInNpemVSZSIsImFkZGl0aW9uUmUiLCJ1cmxDYWNoZSIsImNhbnZhcyIsImdldENvbnRleHQiLCJmaWxsU3R5bGUiLCJmaWxsUmVjdCIsInRvRGF0YVVSTCIsImdldFBsYWNlaG9sZGVySW1hZ2UiLCJjdXJyZW50U3JjIiwic2Vzc2lvblN0b3JhZ2UiLCJhY3RpdmUkMSIsIkxlYWRlciIsImZpbGwiLCJtZWRpYSIsImNsc1dyYXBwZXIiLCJjbHNIaWRlIiwiYXR0ckZpbGwiLCJ3cmFwcGVyIiwiQ29udGFpbmVyIiwiTW9kYWwiLCJzZWxQYW5lbCIsImVzY0Nsb3NlIiwiYmdDbG9zZSIsIm92ZXJsYXkiLCJwYW5lbCIsInRyYW5zaXRpb25FbGVtZW50IiwidHJhbnNpdGlvbkR1cmF0aW9uIiwicmVnaXN0ZXJFdmVudHMiLCJjbHNQYWdlIiwic2Nyb2xsYmFyV2lkdGgiLCJmb3VuZCIsImdldEFjdGl2ZSIsIk1vZGFsJDEiLCJtb2RhbCIsImRpYWxvZyIsImFsZXJ0IiwibGFiZWxzIiwiY29uZmlybSIsInJlc29sdmVkIiwicHJvbXB0Iiwib2siLCJOYXYiLCJOYXZiYXIiLCJkcm9wZG93biIsImRyb3BiYXIiLCJkcm9wYmFyTW9kZSIsImRyb3BiYXJBbmNob3IiLCJkcm9wZG93bnMiLCJnZXREcm9wZG93biIsInRyYW5zaXRpb25UbyIsIm5ld0hlaWdodCIsIm9sZEhlaWdodCIsImNsaXAiLCJPZmZjYW52YXMiLCJjbHNDb250YWluZXIiLCJjbHNGbGlwIiwiY2xzQ29udGVudCIsImNsc0NvbnRlbnRBbmltYXRpb24iLCJjbHNTaWRlYmFyQW5pbWF0aW9uIiwiY2xzTW9kZSIsImNsc092ZXJsYXkiLCJPdmVyZmxvd0F1dG8iLCJSZXNwb25zaXZlIiwiU2Nyb2xsIiwiZG9jSGVpZ2h0Iiwid2luSGVpZ2h0Iiwic3RhcnRZIiwiY3VycmVudFkiLCJTY3JvbGxzcHkiLCJyZXBlYXQiLCJpblZpZXdDbGFzcyIsImVsRGF0YSIsInRvZ2dsZXMiLCJTY3JvbGxzcHlOYXYiLCJTdGlja3kiLCJjbHNBY3RpdmUiLCJjbHNJbmFjdGl2ZSIsImNsc0ZpeGVkIiwiY2xzQmVsb3ciLCJzZWxUYXJnZXQiLCJ3aWR0aEVsZW1lbnQiLCJzaG93T25VcCIsInBsYWNlaG9sZGVyIiwiYm90dG9tT2Zmc2V0IiwicGFyc2VQcm9wIiwiaW5hY3RpdmUiLCJzY3JvbGxZIiwicHJvcE9mZnNldCIsIlN3aXRjaGVyIiwic3dpcGluZyIsImF0dHJJdGVtIiwiY29ubmVjdHMiLCJnZXRTZWxlY3Rpb24iLCJoYXNQcmV2IiwiVGFiIiwiVG9nZ2xlIiwiY29yZSIsIkNvdW50ZG93biIsInRpbWVzcGFuIiwiZGlnaXRzIiwiZGlnaXQiLCJzdHlsZSQxIiwidGFyZ2V0Q2xhc3MiLCJBbmltYXRlIiwic2hlZXQiLCJpbnNlcnRSdWxlIiwicHJvcHNGcm9tIiwib2xkU2Nyb2xsWSIsInByb3BzVG8iLCJnZXRQb3NpdGlvbldpdGhNYXJnaW4iLCJwb2ludGVyRXZlbnRzIiwiRmlsdGVyIiwic2VsQWN0aXZlIiwiYWN0aXZlcyIsImlzRXF1YWxMaXN0Iiwic2V0U3RhdGUiLCJnZXRTdGF0ZSIsIm1lcmdlU3RhdGUiLCJhdHRyJCQxIiwic3RhdGVGaWx0ZXIiLCJyZWZfc29ydCIsInN0YXRlU29ydCIsInN0YXRlT3JkZXIiLCJnZXRGaWx0ZXIiLCJncm91cCIsIm1hdGNoRmlsdGVyIiwiYXBwbHkkJDEiLCJnZXRTZWxlY3RvciIsInNvcnRlZCIsImxvY2FsZUNvbXBhcmUiLCJzb3J0SXRlbXMiLCJmaWx0ZXJCeSIsImxpc3RBIiwibGlzdEIiLCJBbmltYXRpb25zIiwic2xpZGUiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUiLCJ0cmFuc2xhdGVkIiwic2NhbGUzZCIsIkFuaW1hdGlvbnMkMSIsImZhZGUiLCJ0cmlnZ2VyVXBkYXRlIiwiU2xpZGVyIiwiYXV0b3BsYXlJbnRlcnZhbCIsInBhdXNlT25Ib3ZlciIsInN0YXJ0QXV0b3BsYXkiLCJzdG9wQXV0b3BsYXkiLCJpc0hvdmVyaW5nIiwicHJldmVudENhdGNoIiwic2xpZGVzU2VsZWN0b3IiLCJkcmFnIiwiX3RyYW5zaXRpb25lciIsImdldERpc3RhbmNlIiwiZHJhZ2dpbmciLCJwcmV2SW5kZXgiLCJ1bmJpbmRNb3ZlIiwibW92ZSIsImRpc3RhbmNlIiwic2xpZGVzIiwiZGlzIiwibmV4dEluZGV4IiwiX2dldERpc3RhbmNlIiwiaXRlbVNob3duIiwiZWRnZSIsIl90cmFuc2xhdGUiLCJfc2hvdyIsImRpckNoYW5nZSIsInNlbE5hdiIsIm5hdiIsIm5hdkl0ZW1TZWxlY3RvciIsIm5hdkl0ZW1zIiwibWF4SW5kZXgiLCJ1cGRhdGVOYXYiLCJnZXRWYWxpZEluZGV4IiwiY2xzQWN0aXZhdGVkIiwidmVsb2NpdHkiLCJUcmFuc2l0aW9uZXIiLCJ0cmFuc2l0aW9uT3B0aW9ucyIsInNwZWVkVXAiLCJzZWxMaXN0IiwiaXRlbXNob3duIiwicXVldWVJbmRleCIsImdldERpcmVjdGlvbiIsIl9nZXRUcmFuc2l0aW9uZXIiLCJ0cmFuc2l0aW9uZXIiLCJTbGlkZXNob3ciLCJBbmltYXRpb25zJCQxIiwiaXRlbXNob3cgaXRlbWhpZGUgaXRlbXNob3duIGl0ZW1oaWRkZW4iLCJpdGVtc2hvdyIsImJlZm9yZWl0ZW1zaG93IiwiaXRlbWhpZGRlbiIsIkxpZ2h0Ym94UGFuZWwiLCJkZWxheUNvbnRyb2xzIiwidmlkZW9BdXRvcGxheSIsInRlbXBsYXRlIiwiaGlkZUNvbnRyb2xzIiwiZ2V0SXRlbSIsImxvYWRJdGVtIiwiYWx0Iiwic2V0SXRlbSIsInNldEVycm9yIiwidmlkZW8iLCJwb3N0ZXIiLCJ2aWRlb1dpZHRoIiwidmlkZW9IZWlnaHQiLCJzZXRJZnJhbWUiLCJnZXRJZnJhbWUiLCJlbmNvZGVVUkkiLCJ3aXRoQ3JlZGVudGlhbHMiLCJyZWZfcmVzcG9uc2UiLCJzaG93Q29udHJvbHMiLCJjb250cm9sc1RpbWVyIiwiTGlnaHRib3giLCJsaWdodGJveFBhbmVsIiwiX2Rlc3Ryb3kiLCJjb250YWluZXJzIiwiTm90aWZpY2F0aW9uIiwiY2xzQ2xvc2UiLCJjbHNNc2ciLCJjbG9zZUFsbCIsImltbWVkaWF0ZSIsInJlbW92ZUZuIiwicHJvcHMkMSIsIlBhcmFsbGF4IiwiYmdQb3MiLCJpc0NvbG9yIiwiaXNDc3NQcm9wIiwic3RlcHMiLCJjb3ZlcnMiLCJkb3duIiwiYmdQcm9wcyIsImJnIiwiYmFja2dyb3VuZFNpemUiLCJfaW1hZ2UiLCJkaW1FbCIsIm5hdHVyYWxXaWR0aCIsIm5hdHVyYWxIZWlnaHQiLCJzcGFuIiwiYmdQb3NGbG9hdCIsImJhY2tncm91bmRSZXBlYXQiLCJnZXRDc3MiLCJjc3MkJDEiLCJnZXRWYWx1ZSIsInJlZiQyIiwiZ2V0U3RlcCIsIlBhcmFsbGF4JDEiLCJlYXNlJDEiLCJTbGlkZXJSZWFjdGl2ZSIsImdldExlZnQiLCJjZW50ZXIiLCJnZXRFbExlZnQiLCJjZW50ZXJFbCIsImdldE1heCIsImdldFdpZHRoIiwidHJpZ2dlclVwZGF0ZSQxIiwiU2xpZGVyJDEiLCJzZXRzIiwidXBkYXRlVHJhbnNsYXRlcyIsImdldEl0ZW1JbiIsImdldEFjdGl2ZXMiLCJzbGlkZUxlZnQiLCJhdmdXaWR0aCIsImxlZnRDZW50ZXIiLCJzbGlkZVdpZHRoIiwicmVvcmRlciIsInNsaWRlSW5kZXgiLCJTbGlkZXJQYXJhbGxheCIsInNlbEl0ZW0iLCJyZWZfZGV0YWlsIiwiZ2V0Q3VycmVudCIsImlzSW4iLCJvYmokMSIsIm9iaiQyIiwiQW5pbWF0aW9ucyQyIiwicHVsbCIsIlNsaWRlc2hvdyQxIiwibWF4SGVpZ2h0IiwiaGd0IiwiU29ydGFibGUiLCJjbHNJdGVtIiwiY2xzUGxhY2Vob2xkZXIiLCJjbHNEcmFnIiwiY2xzRHJhZ1N0YXRlIiwiY2xzQmFzZSIsImNsc05vRHJhZyIsImNsc0VtcHR5IiwiY2xzQ3VzdG9tIiwidG91Y2hlZCIsIm91dGVySFRNTCIsImVsZW1lbnRGcm9tUG9pbnQiLCJzb3J0YWJsZSIsImdldFNvcnRhYmxlIiwicHJldmlvdXMiLCJpc1ByZWRlY2Vzc29yIiwiVG9vbHRpcCIsInRpdGxlIiwiX2hhc1RpdGxlIiwiYXJpYS1leHBhbmRlZCIsIl91bmJpbmQiLCJ0b29sdGlwIiwiVXBsb2FkIiwiYWxsb3ciLCJjbHNEcmFnb3ZlciIsImNvbmN1cnJlbnQiLCJtYXhTaXplIiwibWltZSIsIm1zZ0ludmFsaWRNaW1lIiwibXNnSW52YWxpZE5hbWUiLCJtc2dJbnZhbGlkU2l6ZSIsImJlZm9yZUFsbCIsImNvbXBsZXRlQWxsIiwibG9hZEVuZCIsImxvYWRTdGFydCIsInVwbG9hZCIsInRyYW5zZmVyIiwiZGF0YVRyYW5zZmVyIiwiZHJhZ2VudGVyIiwiZHJhZ292ZXIiLCJkcmFnbGVhdmUiLCJjaHVua3MiLCJjaHVuayIsIkZvcm1EYXRhIiwibXV0YXRpb25zIiwiYXBwbHlNdXRhdGlvbiIsImNoaWxkTGlzdCIsInN1YnRyZWUiLCJjaGFyYWN0ZXJEYXRhIiwibXV0YXRpb24iLCJhZGRlZE5vZGVzIiwicmVtb3ZlZE5vZGVzIiwiaSQxIiwiYXBwbHlDaGlsZExpc3QiLCJhdHRyaWJ1dGVOYW1lIiwiYXBwbHlBdHRyaWJ1dGUiLCJib290Il0sIm1hcHBpbmdzIjoiQUFBQSxhQ0lBLFNBQUFBLG1CQUNBLE1BQUFDLElBQUFDLFNBQUFDLGVBQUEsU0FFQUMsV0FBQSxJQUFBQyxXQUFBSixLQUNBSyxNQUFBLEVBQ0FDLFlBQUEsR0FDQUMsWUFBQSxVQUNBQyxTQUFBLElBVUFQLFNBQUFDLGVBQUEsa0JBQUFPLFFBUEEsV0FDQSxNQUFBVCxJQUFBQyxTQUFBQyxlQUFBLE9BQ0FRLGNBQUFWLElBQUFXLGFBQUEsU0FDQVgsSUFBQVksYUFBQSxXQUFBRiw0REFDQVAsV0FBQVUsUUFLQVYsV0FBQVcsV0FBQSxtREFDQUEsV0FBQSxvQ0FDQUEsV0FBQSw0RUFDQUEsV0FBQSxRQUNBQyxTQUFBLEtBQ0FDLFdBQUEsa0JBQ0FDLFlBQUEsR0FDQUQsV0FBQSxnQkFDQUYsV0FBQSxRQUNBQyxTQUFBLEtBQ0FHLGdCQUFBWCxZQUFBLFlBQ0FTLGtDQUFBRyxPQUFBQyxrQ0FDQUgsWUFBQSxHQUNBRCxXQUFBLGtCQUNBQyxZQUFBLEdBQ0FELGVBQUFHLE9BQUFFLGFBQ0FOLFNBQUEsS0FDQUQsNEJBQUFLLE9BQUFHLG9CQUNBTixXQUFBLFdBQ0FELFNBQUEsS0FDQUUsWUFBQSxHQUNBRixTQUFBLEtBQ0FDLFdBQUEsbUJBQ0FGLGNBQUFLLE9BQUFJLG1CQUNB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QUNBLCtCQUNBLGdDQUNBLDhCQUNBLGlDQUNBLDZCQUNBLG1DQUNBLG9DQUNBLGlDQUNBLG9DQUNBLHFCQUNBLG9DQUNBLHFDQUNBLDZCQUNBLGtDQUNBLDZCQUNBLCtCQUNBLGlDQUNBLDZCQUNBLDZCQUNBLDZCQUNBLGlDQUNBLGdDQUNBLGlDQUNBLGdDQUNBLDhCQUNBLDhCQUNBLGtDQUNBLDhCQUNBLG9DQUNBLCtCQUNBLCtCQUNBLHNDQUNBLGlDQUNBLGdDQUNBLGtDQUNBLHFDQUNBLCtCQUNBLGdDQUNBLHVCQUNBLDRCQUNBLDJCQUNBLDhCQUNBLHNEQUNBLCtEQUNBLGdEQUNBLDRDQUNBLDRDQUNBLHdDQUNBLDRDQUNBLHlDQUNBLDZCQUNBLGdDQUNBLHFDQUNBLHdDQUNBLGtDQUNBLHdCQUNBLDZCQUNBLDhCQUNBLG1DQUNBLGtEQUNBLDBDQUNBLHFDQUNBLGtDQUNBLHNCQUNBLHVDQUNBLHlDQUNBLDBCQUNBLGlEQUNBLGlDQUNBLHFDQUNBLDZCQUNBLGtDQUNBLHFDQUNBLDhCQUNBLG1DQUNBLGdDQUNBLDZCQUNBLHlDQUNBLHdDQUNBLHlDQUNBLHdDQUNBLDJDQUNBLHdDQUNBLDJDQUNBLDhDQUNBLHlDQUNBLHlDQUNBLDBDQUNBLDJDQUNBLHdDQUNBLHVDQUNBLHFDQUNBLHdDQUNBLGlDQUNBLHFDQUNBLGdDQUNBLHVDQUNBLG1DQUNBLHVDQUNBLG1DQUNBLG1DQUNBLGlDQUNBLG1DQUNBLGtDQUNBLGtDQUNBLCtCQUNBLCtCQUNBLDhCQUNBLHdCQUNBLHlCQUNBLCtCQUNBLDBCQUNBLCtCQUNBLHdCQUNBLCtCQUNBLDZCQUNBLG1DQUNBLDhCQUNBLHdCQUNBLG1DQUNBLDhCQUNBLDBCQUNBLDJCQUNBLHdCQUNBLDBCQUNBLGlCQUNBLCtCQUNBLCtCQUNBLDRCQUNBLG9CQUNBLGtCQUNBLG1CQUNBLDJCQUNBLG1CQUNBLG1DQUNBLDJCQUNBLGlDQUNBLDZCQUNBLG1DQUNBLHFDQUNBLDBDQUNBLDZDQUNBLG1DQUNBLHNDQUNBLG9DQUNBLHlDQUNBLGlDQUNBLGlDQUNBLHNDQUNBLGlDQUNBLG9CQUNBLHNCQUNBLHFCQUNBLDBCQUNBLGdCQUNBLGtCQUNBLGtCQUNBLGlCQUNBLHNCQUNBLGNBQ0Esd0JBQ0EsbUJBQ0EsY0FDQSxvQkFDQSxlQUNBLG1DQUNBLG1DQUNBLGtDQUNBLGdDQUNBLGdDQUNBLGtDQUNBLHFCQUNBLG1DQUNBLGdDQUNBLHlCQUNBLHlCQUNBLCtCQUNBLGdDQUNBLG1DQUNBLDhCQUNBLG1CQUNBLHdCQUNBLHFCQUNBLGtDQUNBLGlDQUNBLGtDQUNBLGdDQUNBLDZCQUNBLHVCQUNBLGdDQUNBLDZCQUNBLDZCQUNBLHNDQUNBLHlDQUNBLHNCQUNBLDBCQUNBLG9DQUNBLDhCQUNBLG9DQUNBLDZCQUNBLDhCQUNBLG1DQUNBLGtDQUNBLDZCQUNBLDBCQUNBLDZCQUNBLGlDQUNBLGtDQUNBLHFDQUNBLG9DQUNBLG1DQUNBLDRCQUNBLGtDQUNBLDhCQUNBLG1DQUtBdHRELFNDMXFDQSxZQVFBLFdBR0EsSUFGQSxJQUFBNHlELFNBQUEsRUFDQUMsU0FBQSxLQUFBLE1BQUEsU0FBQSxLQUNBcjBELEVBQUEsRUFBQUEsRUFBQXEwRCxRQUFBdnhELFNBQUE1SSxPQUFBNGlELHdCQUFBOThDLEVBQ0E5RixPQUFBNGlELHNCQUFBNWlELE9BQUFtNkQsUUFBQXIwRCxHQUFBLHlCQUNBOUYsT0FBQW82RCxxQkFBQXA2RCxPQUFBbTZELFFBQUFyMEQsR0FBQSx5QkFDQTlGLE9BQUFtNkQsUUFBQXIwRCxHQUFBLCtCQUdBOUYsT0FBQTRpRCx3QkFDQTVpRCxPQUFBNGlELHNCQUFBLFNBQUEzK0MsU0FBQXhDLFNBQ0EsSUFBQTQ0RCxVQUFBLElBQUF2NEQsTUFBQUssVUFDQW00RCxXQUFBcDNELEtBQUEwTixJQUFBLEVBQUEsSUFBQXlwRCxTQUFBSCxXQUNBbjFELEdBQUEvRSxPQUFBMHNDLFdBQUEsV0FBQXpvQyxTQUFBbzJELFNBQUFDLGFBQ0FBLFlBRUEsT0FEQUosU0FBQUcsU0FBQUMsV0FDQXYxRCxLQUdBL0UsT0FBQW82RCx1QkFDQXA2RCxPQUFBbzZELHFCQUFBLFNBQUFyMUQsSUFDQXVoRCxhQUFBdmhELE1BckJBLEdBeUJBL0UsT0FBQWYsV0FBQSxTQUFBd0MsUUFBQTQwQixTQXVCQSxPQXRCQXh5QixLQUFBMDJELFdBQ0FDLHVCQUFBLEVBQ0FDLG1CQUFBLEVBQ0FDLGVBQUEsRUFDQUMsY0FDQUMsZ0JBQUEsRUFDQUMsWUFDQUMsZ0JBQ0FDLGNBQUEsRUFDQXY0RCxTQUFBLEVBQ0F3NEQsZ0JBQUEsRUFDQUMsSUFBQSxJQUNBQyxpQkFBQSxFQUNBQyx5QkFDQUMsMEJBQ0FDLFFBQUEsRUFDQUMsV0FDQUMsb0JBQUEsRUFDQUMsZUFDQUMsZUFBQSxHQUdBaDZELFFBUUEsaUJBQUE0MEIsUUFDQXBvQixRQUFBNm9CLE1BQUEsc0RBR0FqekIsS0FBQTAyRCxVQUFBaUIsWUFBQW5sQyxRQUVBeHlCLEtBQUE2M0QsaUJBQ0FDLFNBQUEsRUFDQUMsZ0JBQUEsb0JBQ0FDLE9BQUEsSUFDQUMsZUFBQSxFQUNBQyxXQUFBLEdBQ0EzOEQsWUFBQSxVQUNBRCxZQUFBLFVBQ0E2OEQsa0JBQUEsa0JBQ0FDLGlCQUFBLHFCQUNBLzhELE1BQUEsRUFDQWc5RCxXQUFBLEVBQ0E3OEQsU0FBQSxHQUdBd0UsS0FBQXd5QixRQUFBeHlCLEtBQUFzNEQsY0FBQTlsQyxTQUVBeHlCLEtBQUFzNUIsR0FBQTE3QixRQUVBb0MsS0FBQXU0RCx5QkFFQXY0RCxLQUFBdzRELDhCQUVBLElBQUF4NEQsS0FBQXd5QixRQUFBNmxDLFdBQUFyNEQsS0FBQXd5QixRQUFBc2xDLFNBQ0E5M0QsS0FBQXk0RCxzQkFyQ0FydUQsUUFBQTZvQixNQUFBLHlFQTBDQSxJQUFBeWxDLG9CQUFBdjhELE9BQUFmLFdBQUErSSxVQUVBdTBELG9CQUFBNzhELEtBQUEsV0FFQSxPQURBbUUsS0FBQTI0RCxlQUFBMzRELEtBQUE0NEQsZ0JBQ0E1NEQsTUFHQTA0RCxvQkFBQWw4RCxNQUFBLFdBRUEsT0FEQXdELEtBQUE2NEQsa0JBQ0E3NEQsTUFHQTA0RCxvQkFBQUksTUFBQSxXQUVBLE9BREE5NEQsS0FBQTI0RCxlQUFBMzRELEtBQUErNEQsb0JBQ0EvNEQsTUFHQTA0RCxvQkFBQTE4RCxXQUFBLFNBQUFpaEIsUUFDQSxJQUFBQSxRQUFBLGlCQUFBQSxPQUNBLE9BQUE3UyxRQUFBNm9CLE1BQUEsMkNBR0EsSUFBQStsQyxhQUFBaDVELEtBQUFpNUQsZUFBQWg4QyxRQUdBLE9BREFqZCxLQUFBMjRELGdCQUFBMzRELEtBQUFrNUQsaUJBQUFGLGdCQUNBaDVELE1BR0EwNEQsb0JBQUFTLFVBQUEsV0FFQSxPQURBbjVELEtBQUEyNEQsZ0JBQUEzNEQsS0FBQW81RCxjQUFBLFNBQ0FwNUQsTUFHQTA0RCxvQkFBQXo4RCxZQUFBLFNBQUFvOUQsUUFFQSxPQURBcjVELEtBQUEyNEQsZ0JBQUEzNEQsS0FBQW81RCxjQUFBQyxVQUNBcjVELE1BR0EwNEQsb0JBQUEzOEQsU0FBQSxTQUFBaWdCLElBRUEsT0FEQWhjLEtBQUEyNEQsZ0JBQUEzNEQsS0FBQXM1RCxXQUFBdDlDLE1BQ0FoYyxNQUdBMDRELG9CQUFBRCxrQkFBQSxXQUNBLElBQUFjLGlCQUFBdjVELEtBQUF3NUQsMEJBRUEsR0FBQSxJQUFBRCxpQkFBQXgwRCxPQUNBL0UsS0FBQWs1RCxnQkFBQUssaUJBQUEsU0FFQSxJQUFBLElBQUExMEQsRUFBQSxFQUFBRSxPQUFBdzBELGlCQUFBeDBELE9BQUFGLEVBQUFFLE9BQUFGLElBQ0E3RSxLQUFBMjRELGdCQUFBMzRELEtBQUFrNUQsaUJBQUFLLGlCQUFBMTBELE1BQ0E3RSxLQUFBakUsU0FBQWlFLEtBQUF5NUQsZUFBQSxLQUFBLE9BQ0F6NUQsS0FBQW01RCxZQUNBbjVELEtBQUFqRSxTQUFBaUUsS0FBQXk1RCxlQUFBLEtBQUEsT0FJQSxPQUFBejVELE1BSUEwNEQsb0JBQUF4OEQsZUFBQSxTQUFBdzlELGNBQ0EsT0FBQUEsY0FBQSxpQkFBQUEsY0FJQTE1RCxLQUFBMjRELGdCQUFBMzRELEtBQUEyNUQsaUJBQUEvNEQsS0FBQUMsVUFBQTY0RCxpQkFFQTE1RCxNQUxBb0ssUUFBQTZvQixNQUFBLDJEQVNBeWxDLG9CQUFBa0IsaUJBQUEsU0FBQUMsV0FDQSxPQUFBQSxXQUFBLGlCQUFBQSxXQUlBNzVELEtBQUE5RCxnQkFDQWc4RCxXQUFBMkIsWUFHQTc1RCxNQVBBb0ssUUFBQTZvQixNQUFBLG1EQVVBeWxDLG9CQUFBb0Isa0JBQUEsU0FBQUQsV0FDQSxJQUFBQSxXQUFBLGlCQUFBQSxVQUNBLE9BQUF6dkQsUUFBQTZvQixNQUFBLG1EQVdBLE9BSkFqekIsS0FBQTlELGdCQUNBWCxZQUFBcytELFlBR0E3NUQsTUFHQTA0RCxvQkFBQXFCLGtCQUFBLFNBQUFGLFdBQ0EsT0FBQUEsV0FBQSxpQkFBQUEsV0FJQTc1RCxLQUFBOUQsZ0JBQ0E2OUQsa0JBQUFGLFlBR0E3NUQsTUFQQW9LLFFBQUE2b0IsTUFBQSxvREFVQXlsQyxvQkFBQUssbUJBQUEsV0FDQS80RCxLQUFBMDJELFVBQUFhLHVCQUFBeHlELE9BQUEsR0FDQS9FLEtBQUFtNUQsWUFDQW41RCxLQUFBZzZELGdCQUFBLHVCQUVBaDZELEtBQUEwMkQsVUFBQU0sU0FBQWgzRCxLQUFBMDJELFVBQUFPLGFBQ0FqM0QsS0FBQTAyRCxVQUFBTyxnQkFDQWozRCxLQUFBd3lCLFFBQUF4eUIsS0FBQXM0RCxjQUFBdDRELEtBQUEwMkQsVUFBQWlCLGFBQ0EzM0QsS0FBQTAyRCxVQUFBZSxXQUNBejNELEtBQUEwM0Qsb0JBQUEsRUFDQTEzRCxLQUFBNjRELG9CQUlBSCxvQkFBQVUsYUFBQSxTQUFBQyxRQU9BLE9BSkFBLFNBQ0FyNUQsS0FBQTAyRCxVQUFBZ0IsbUJBQUEyQixRQUVBcjVELEtBQUFpNkQsMEJBQUE5OUQsT0FBQTRpRCxzQkFBQS8rQyxLQUFBazZELDRCQUFBNVosS0FBQXRnRCxPQUNBQSxNQUdBMDRELG9CQUFBWSxVQUFBLFNBQUF0OUMsSUFDQSxJQUFBaW9CLEtBQUFqa0MsS0FDQWlrQyxLQUFBeXlCLFVBQUFRLGNBQUEsRUFDQXJ1QixXQUFBLFdBQ0E1RSxLQUFBKzFCLGdCQUFBLGFBQ0FoK0MsS0FHQTA4QyxvQkFBQWlCLGdCQUFBLFNBQUFELGNBQ0ExNUQsS0FBQXd5QixRQUFBeHlCLEtBQUFzNEQsY0FBQTEzRCxLQUFBeXFDLE1BQUFxdUIsYUFBQSxLQUNBMTVELEtBQUFnNkQsZ0JBQUEsa0JBRUFoNkQsS0FBQXd5QixRQUFBaDNCLFNBQ0E0TyxRQUFBK3ZELElBQUEsZUFBQW42RCxLQUFBd3lCLFVBS0FrbUMsb0JBQUF3Qiw0QkFBQSxXQUNBLElBQUFqMkIsS0FBQWprQyxLQUNBbzZELGFBQUFwNkQsS0FBQXd5QixRQUFBbDNCLFlBQ0ErK0QsOEJBQUFwMkIsS0FBQXpSLFFBQUE0bEMsaUJBQ0FrQyx1QkFBQXIyQixLQUFBeXlCLFVBQUFhLHVCQUNBZ0Qsc0JBQUF0MkIsS0FBQXl5QixVQUFBZ0IsbUJBRUEsSUFBQXp6QixLQUFBeXlCLFVBQUFnQixvQkFBQSxJQUFBenpCLEtBQUF5eUIsVUFBQWdCLG9CQUFBLElBQUE0Qyx1QkFFQSxPQURBcjJCLEtBQUErMUIsZ0JBQUEsK0JBQ0EsRUFHQSxXQUFBSSxlQUNBQSxhQUFBbjJCLEtBQUF3MUIsZUFBQSxHQUFBLE1BR0EsT0FBQWMsd0JBQ0FBLHNCQUFBRCx1QkFBQXYxRCxPQUNBay9CLEtBQUF5eUIsVUFBQWdCLG1CQUFBNkMsdUJBR0ExeEIsV0FBQSxXQUNBLEdBQUE1RSxLQUFBeXlCLFVBQUFnQixtQkFBQSxDQUNBLElBQUE4QyxzQkFBQUYsdUJBQUF2MUQsT0FBQSxFQUNBMDFELG9CQUFBSCx1QkFBQUUsdUJBRUF2MkIsS0FBQXl5QixVQUFBYSx1QkFBQWhsQyxPQUFBaW9DLHNCQUFBLEdBRUEsSUFBQUUsa0JBQUF6L0QsU0FBQUMsZUFBQXUvRCxxQkFFQSxHQUFBQyxrQkFDQXoyQixLQUFBM0ssR0FBQTc3QixjQUFBLElBQUE0OEQsK0JBQ0FscEMsWUFBQXVwQyxtQkFDQXoyQixLQUFBeXlCLFVBQUFnQixtQkFBQTZDLHNCQUFBLEVBRUF0MkIsS0FBQXpSLFFBQUFoM0IsU0FDQTRPLFFBQUErdkQsSUFBQSx1QkFBQU0scUJBTUF4MkIsS0FBQWcyQiwwQkFBQTk5RCxPQUFBNGlELHNCQUFBOWEsS0FBQWkyQiw0QkFBQTVaLEtBQUFyYyxRQUVBbTJCLGVBR0ExQixvQkFBQUosY0FBQSxTQUFBcUMsYUFDQSxJQUFBQyxrQkFFQSxJQUFBLElBQUFDLFlBQUE3NkQsS0FBQTYzRCxnQkFDQStDLGVBQUFDLFVBQUE3NkQsS0FBQTYzRCxnQkFBQWdELFVBR0EsR0FBQTc2RCxLQUFBMDJELFVBQUFpQixZQUNBLElBQUEsSUFBQWtELFlBQUE3NkQsS0FBQTAyRCxVQUFBaUIsWUFDQWlELGVBQUFDLFVBQUE3NkQsS0FBQTAyRCxVQUFBaUIsWUFBQWtELFVBSUEsSUFBQSxJQUFBQSxZQUFBRixZQUNBQyxlQUFBQyxVQUFBRixZQUFBRSxVQUdBLE9BQUFELGdCQUdBbEMsb0JBQUFDLGVBQUEsU0FBQXRvQixPQUNBcndDLEtBQUEwMkQsVUFBQU0sU0FBQWh5RCxLQUFBcXJDLE9BQ0Fyd0MsS0FBQTAyRCxVQUFBTSxTQUFBanlELE9BQUEsSUFBQS9FLEtBQUEwMkQsVUFBQVEsY0FBQWwzRCxLQUFBd3lCLFFBQUE2bEMsV0FDQXI0RCxLQUFBNjRELG1CQUlBSCxvQkFBQUcsZ0JBQUEsV0FLQSxHQUpBNzRELEtBQUF3eUIsUUFBQWgzQixTQUNBNE8sUUFBQSt2RCxJQUFBLHdCQUdBbjZELEtBQUEwMkQsVUFBQVEsYUFBQSxDQUVBLEdBQUFsM0QsS0FBQTAyRCxVQUFBTSxTQUFBanlELE9BQUEsRUFBQSxDQUNBL0UsS0FBQTQzRCxlQUFBLEVBQ0EsSUFBQWtELFlBQUE5NkQsS0FBQTAyRCxVQUFBTSxTQUFBLEdBQ0EsbUJBQUE4RCxhQUNBOTZELEtBQUEwMkQsVUFBQVEsY0FBQSxFQUNBbDNELEtBQUEwMkQsVUFBQU8sYUFBQWp5RCxLQUFBODFELGFBQ0E5NkQsS0FBQTAyRCxVQUFBTSxTQUFBemtDLE9BQUEsRUFBQSxHQUNBdW9DLFlBQUF6MkQsS0FBQXJFLE1BQ0FBLEtBQUF3eUIsUUFBQWgzQixTQUNBNE8sUUFBQSt2RCxJQUFBLG1CQUVBVyx1QkFBQTcyRCxPQUNBLG1CQUFBNjJELFlBQUEsSUFBQUEsWUFBQSxhQUFBNzJELFFBQ0FqRSxLQUFBMDJELFVBQUFRLGNBQUEsRUFDQWwzRCxLQUFBMDJELFVBQUFPLGFBQUFqeUQsS0FBQTgxRCxhQUNBOTZELEtBQUEwMkQsVUFBQU0sU0FBQXprQyxPQUFBLEVBQUEsR0FDQXVvQyxZQUFBLEdBQUF6MkQsS0FBQXJFLEtBQUE4NkQsWUFBQSxJQUNBOTZELEtBQUF3eUIsUUFBQWgzQixTQUNBNE8sUUFBQSt2RCxJQUFBLG1CQUtBbjZELEtBQUErNkQsbUJBQUE1K0QsT0FBQTRpRCxzQkFBQS8rQyxLQUFBNjRELGdCQUFBdlksS0FBQXRnRCxPQUdBLElBQUFBLEtBQUEwMkQsVUFBQVEsY0FBQWwzRCxLQUFBMDJELFVBQUFNLFNBQUFqeUQsUUFBQSxFQUFBLENBQ0EsSUFBQWsvQixLQUFBamtDLEtBbUJBLE9BbEJBaWtDLEtBQUEyMEIsc0JBQ0EvdkIsV0FBQSxXQUNBNUUsS0FBQXpSLFFBQUFuM0IsT0FDQTRvQyxLQUFBMnpCLGlCQUNBM3pCLEtBQUF6UixRQUFBaDNCLFNBQ0E0TyxRQUFBK3ZELElBQUEsb0JBQUFsMkIsS0FBQXl5QixXQUVBenlCLEtBQUEyekIsZUFBQSxHQUNBeHRELFFBQUE2b0IsTUFBQSwyQ0FDQWdSLEtBQUEyMEIsbUJBRUEzMEIsS0FBQXpSLFFBQUFoM0IsU0FDQTRPLFFBQUErdkQsSUFBQSxtQkFFQWwyQixLQUFBODBCLHdCQUdBLE9BTUFMLG9CQUFBc0IsZ0JBQUEsU0FBQTl1RCxNQUNBLElBQUE4dkQsV0FBQTl2RCxNQUFBLFFBQ0FsTCxLQUFBMDJELFVBQUFRLGNBQUEsRUFDQWwzRCxLQUFBNjRELGtCQUNBNzRELEtBQUF3eUIsUUFBQWgzQixTQUNBNE8sUUFBQSt2RCxJQUFBYSxXQUFBLGFBSUF0QyxvQkFBQUUsZUFBQSxXQUNBejhELE9BQUFvNkQscUJBQUF2MkQsS0FBQSs2RCxvQkFDQS82RCxLQUFBd3lCLFFBQUFoM0IsU0FDQTRPLFFBQUErdkQsSUFBQSx3QkFJQXpCLG9CQUFBSCx1QkFBQSxXQUNBLElBQUE4Qiw4QkFBQXI2RCxLQUFBd3lCLFFBQUE0bEMsaUJBQ0E2QyxtQkFBQWhnRSxTQUFBNkIsY0FBQSxRQUNBbStELG1CQUFBdjlELFVBQUEyOEQsOEJBQ0FyNkQsS0FBQXM1QixHQUFBejZCLFVBQUEsR0FDQW1CLEtBQUFzNUIsR0FBQWo4QixZQUFBNDlELHFCQUdBdkMsb0JBQUFRLGdCQUFBLFNBQUFLLGtCQUdBLE9BRkF2NUQsS0FBQTAyRCxVQUFBWSxzQkFBQXQzRCxLQUFBazdELG9CQUFBM0Isa0JBQ0F2NUQsS0FBQW03RCxpQkFBQWgvRCxPQUFBNGlELHNCQUFBLytDLEtBQUFvN0Qsc0JBQUE5YSxLQUFBdGdELEtBQUF1NUQsaUJBQUF4MEQsU0FDQS9FLE1BR0EwNEQsb0JBQUEwQyxzQkFBQSxTQUFBQyxhQUNBLElBQUFwM0IsS0FBQWprQyxLQUNBczdELGFBQUF0N0QsS0FBQXd5QixRQUFBajNCLFlBQ0E4K0QsOEJBQUFwMkIsS0FBQXpSLFFBQUE0bEMsaUJBRUEsR0FBQSxHQUFBbjBCLEtBQUF5eUIsVUFBQVksc0JBQUF2eUQsT0FHQSxPQUZBNUksT0FBQW82RCxxQkFBQXR5QixLQUFBazNCLGtCQUNBbjdELEtBQUFnNkQsZ0JBQUEseUJBQ0EsRUFHQSxXQUFBc0IsZUFDQUEsYUFBQXQ3RCxLQUFBeTVELGVBQUEsR0FBQSxNQUdBNXdCLFdBQUEsV0FDQTVFLEtBQUEzSyxHQUFBejZCLFVBQUEsSUFDQTA4RCxhQUFBdDNCLEtBQUF5eUIsVUFBQVksc0JBQUEsR0FDQXJ6QixLQUFBM0ssR0FBQTc3QixjQUFBLElBQUE0OEQsK0JBQUFoOUQsWUFBQWsrRCxhQUFBamlDLElBQ0EySyxLQUFBeXlCLFVBQUFhLHVCQUFBdnlELEtBQUF1MkQsYUFBQXI2RCxJQUNBK2lDLEtBQUF5eUIsVUFBQVksc0JBQUEva0MsT0FBQSxFQUFBLEdBQ0EwUixLQUFBazNCLGlCQUFBaC9ELE9BQUE0aUQsc0JBQUE5YSxLQUFBbTNCLHNCQUFBOWEsS0FBQXJjLEtBQUFvM0IsY0FDQXAzQixLQUFBelIsUUFBQWgzQixTQUNBNE8sUUFBQSt2RCxJQUFBLFFBQUFvQixlQUVBRCxlQUdBNUMsb0JBQUF3QyxvQkFBQSxTQUFBTSxPQUtBLElBSkEsSUFBQUMseUJBQ0FDLGdCQUFBMTdELEtBQUF3eUIsUUFBQTJsQyxrQkFDQXdELFlBQUFILE1BQUEsR0FFQTMyRCxFQUFBLEVBQUFFLE9BQUE0MkQsWUFBQTUyRCxPQUFBRixFQUFBRSxPQUFBRixJQUFBLENBQ0EsSUFBQSsyRCxhQUFBM2dFLFNBQUE2QixjQUFBLFFBQ0ErK0QsUUFBQTc3RCxLQUFBODdELG9CQUNBRixhQUFBMTZELEdBQUEyNkQsUUFDQUQsYUFBQWwrRCxVQUFBZytELGdCQUFBLG9CQUFBNzJELEVBQ0ErMkQsYUFBQS84RCxVQUFBODhELFlBQUE5MkQsR0FDQTQyRCxzQkFBQXoyRCxNQUNBOUQsR0FBQTI2RCxRQUNBdmlDLEdBQUFzaUMsZUFJQSxPQUFBSCx1QkFHQS9DLG9CQUFBTyxlQUFBLFNBQUFoOEMsUUFDQSxNQUFBLGlCQUFBQSxRQUdBQSxPQUFBeEssTUFBQSxLQUdBaW1ELG9CQUFBYyx3QkFBQSxXQUNBLElBQUF1QyxvQkFBQS83RCxLQUFBd3lCLFFBQUFzbEMsbUJBQUE3ekQsTUFDQSszRCxxQkFBQSxpQkFBQWg4RCxLQUFBd3lCLFFBQUFzbEMsUUFDQSxJQUFBaUUsb0JBQ0EsT0FBQUMsc0JBR0FoOEQsS0FBQXd5QixRQUFBc2xDLFFBQUFybEQsTUFBQSxLQUZBckksUUFBQTZvQixNQUFBLHdFQU9BLElBRkEsSUFBQWdwQyx1QkFFQXAzRCxFQUFBLEVBQUFFLE9BQUEvRSxLQUFBd3lCLFFBQUFzbEMsUUFBQS95RCxPQUFBRixFQUFBRSxPQUFBRixJQUFBLENBQ0EsSUFBQW0wRCxhQUFBaDVELEtBQUFpNUQsZUFBQWo1RCxLQUFBd3lCLFFBQUFzbEMsUUFBQWp6RCxJQUNBLElBQUFtMEQsYUFBQSxDQUNBNXVELFFBQUE2b0IsTUFBQSw4QkFDQSxNQUVBZ3BDLG9CQUFBajNELEtBQUFnMEQsY0FHQSxPQUFBaUQscUJBR0F2RCxvQkFBQXdELHNCQUFBLFdBQ0EsSUFBQWw4RCxLQUFBMDJELFVBQUFDLHNCQUFBLENBQ0EsSUFDQXdGLGVBQUEsS0FEQW44RCxLQUFBd3lCLFFBQUEwbEMsV0FHQWtFLFVBQUFwOEQsS0FBQXM1QixHQUFBNzdCLGNBQUEsc0JBRUEsR0FBQXVDLEtBQUEwMkQsVUFBQUUsb0JBQ0E1MkQsS0FBQTAyRCxVQUFBRyxnQkFBQSxJQUNBNzJELEtBQUEwMkQsVUFBQUUsbUJBQUEsRUFDQTUyRCxLQUFBMDJELFVBQUFHLGVBQUEsR0FHQTcyRCxLQUFBMDJELFVBQUFHLGdCQUFBc0YsZ0JBR0EsR0FBQW44RCxLQUFBMDJELFVBQUFFLG9CQUNBNTJELEtBQUEwMkQsVUFBQUcsZ0JBQUEsSUFDQTcyRCxLQUFBMDJELFVBQUFFLG1CQUFBLEVBQ0E1MkQsS0FBQTAyRCxVQUFBRyxlQUFBLEdBR0E3MkQsS0FBQTAyRCxVQUFBRyxnQkFBQXNGLGdCQUdBQyxVQUFBbHdCLE1BQUFtUSxRQUFBcjhDLEtBQUEwMkQsVUFBQUcsZUFDQTcyRCxLQUFBcThELGlCQUFBbGdFLE9BQUE0aUQsc0JBQUEvK0MsS0FBQWs4RCxzQkFBQTViLEtBQUF0Z0QsU0FJQTA0RCxvQkFBQTU4RCxXQUFBLFNBQUFrMUIsTUFFQSxPQURBaHhCLEtBQUEyNEQsZ0JBQUEzNEQsS0FBQXM4RCxhQUFBdHJDLFFBQ0FoeEIsTUFHQTA0RCxvQkFBQTRELFlBQUEsU0FBQXRyQyxNQUNBLElBQUEwcUMsZ0JBQUExN0QsS0FBQXd5QixRQUFBMmxDLGtCQUNBeUQsYUFBQTNnRSxTQUFBNkIsY0FBQSxRQUNBKytELFFBQUE3N0QsS0FBQTg3RCxvQkFDQUYsYUFBQTE2RCxHQUFBMjZELFFBQ0FELGFBQUFsK0QsVUFBQWcrRCxnQkFBQSxnQkFDQUUsYUFBQS84RCxVQUFBbXlCLEtBQ0EsSUFBQXVyQyxTQUNBQSxNQUFBdjNELE1BQ0E5RCxHQUFBMjZELFFBQ0F2aUMsR0FBQXNpQyxlQUdBNTdELEtBQUEwMkQsVUFBQVksc0JBQUFpRixNQUVBcGdFLE9BQUE0aUQsc0JBQUEvK0MsS0FBQW83RCxzQkFBQTlhLEtBQUF0Z0QsS0FBQSxLQUlBMDRELG9CQUFBRixzQkFBQSxXQUNBLElBQUFSLE9BQUFoNEQsS0FBQXd5QixRQUFBd2xDLE9BQ0F3RSxrQkFBQXg4RCxLQUFBd3lCLFFBQUF1bEMsZ0JBRUEwRSxlQUFBeGhFLFNBQUE2QixjQUFBLFFBQ0EyL0QsZUFBQS8rRCxVQUFBOCtELGtCQUNBQyxlQUFBNTlELFVBQUFtNUQsT0FFQWg0RCxLQUFBczVCLEdBQUFqOEIsWUFBQW8vRCxnQkFDQXo4RCxLQUFBd3lCLFFBQUF5bEMsZ0JBQ0FqNEQsS0FBQXE4RCxpQkFBQWxnRSxPQUFBNGlELHNCQUFBLytDLEtBQUFrOEQsc0JBQUE1YixLQUFBdGdELFNBSUEwNEQsb0JBQUFnRSxzQkFBQSxXQUNBMThELEtBQUEwMkQsVUFBQUMsd0JBQ0F4NkQsT0FBQW82RCxxQkFBQXYyRCxLQUFBcThELGtCQUNBcjhELEtBQUEwMkQsVUFBQUMsdUJBQUEsSUFJQStCLG9CQUFBaUUsd0JBQUEsV0FDQSxJQUFBMzhELEtBQUEwMkQsVUFBQUMsc0JBQ0EsT0FBQXZzRCxRQUFBNm9CLE1BQUEsd0NBR0FqekIsS0FBQTAyRCxVQUFBQyx1QkFBQSxFQUNBMzJELEtBQUFxOEQsaUJBQUFsZ0UsT0FBQTRpRCxzQkFBQS8rQyxLQUFBazhELHNCQUFBNWIsS0FBQXRnRCxRQUlBMDRELG9CQUFBZSxlQUFBLFNBQUE1dkQsSUFBQWtELEtBQ0EsT0FBQTFOLEtBQUFDLE1BQUFELEtBQUEwekIsVUFBQWhtQixJQUFBbEQsSUFBQSxJQUFBQSxLQUdBNnVELG9CQUFBa0UsVUFBQSxXQUlBLElBSEEsSUFBQTVyQyxLQUFBLEdBQ0E2ckMsU0FBQSxpRUFFQWg0RCxFQUFBLEVBQUFBLEVBQUE3RSxLQUFBeTVELGVBQUEsRUFBQSxJQUFBNTBELElBQ0Ftc0IsTUFBQTZyQyxTQUFBbndDLE9BQUFydEIsS0FBQUMsTUFBQUQsS0FBQTB6QixTQUFBOHBDLFNBQUE5M0QsU0FFQSxPQUFBaXNCLE1BR0EwbkMsb0JBQUFvRCxrQkFBQSxXQUNBLElBQUFnQixRQUFBOThELEtBQUE0OEQsWUFDQSxPQUFBLEdBQUE1OEQsS0FBQTAyRCxVQUFBZSxRQUFBam1ELFFBQUFzckQsVUFDQTk4RCxLQUFBMDJELFVBQUFlLFFBQUF6eUQsS0FBQTgzRCxTQUNBQSxTQUVBOThELEtBQUE4N0Qsa0JBQUF6M0QsS0FBQXJFLE9BdmxCQSxHQ05BLFNBQUFtRCxPQUFBQyxTQUNBLGlCQUFBQyxTQUFBLG9CQUFBQyxPQUFBQSxPQUFBRCxRQUFBRCxVQUNBLG1CQUFBRyxRQUFBQSxPQUFBQyxJQUFBRCxPQUFBLFFBQUFILFNBQ0FELE9BQUE1RSxNQUFBNkUsVUFIQSxDQUlBcEQsS0FBQSxXQUVBLFNBQUFzZ0QsS0FBQTE3QyxHQUFBMHNCLFNBQ0EsT0FBQSxTQUFBcHNCLEdBQ0EsSUFBQTBYLEVBQUE5WSxVQUFBaUIsT0FDQSxPQUFBNlgsRUFBQUEsRUFBQSxFQUFBaFksR0FBQWYsTUFBQXl0QixRQUFBeHRCLFdBQUFjLEdBQUFQLEtBQUFpdEIsUUFBQXBzQixHQUFBTixHQUFBUCxLQUFBaXRCLFVBSUEsSUFDQWxzQixlQURBbEIsT0FBQUMsVUFDQWlCLGVBRUEsU0FBQWdyQixPQUFBbm5CLElBQUF5QixLQUNBLE9BQUF0RixlQUFBZixLQUFBNEUsSUFBQXlCLEtBR0EsSUFBQXF5RCxrQkFDQUMsWUFBQSxvQkFFQSxTQUFBQyxVQUFBQyxLQVFBLE9BTkFBLE9BQUFILGlCQUNBQSxlQUFBRyxLQUFBQSxJQUNBbi9ELFFBQUFpL0QsWUFBQSxTQUNBanhELGVBR0FneEQsZUFBQUcsS0FHQSxJQUFBQyxXQUFBLFNBRUEsU0FBQUMsU0FBQUYsS0FDQSxPQUFBQSxJQUFBbi9ELFFBQUFvL0QsV0FBQUUsU0FHQSxTQUFBQSxRQUFBam1DLEVBQUEvYyxHQUNBLE9BQUFBLEVBQUFBLEVBQUF5USxjQUFBLEdBR0EsU0FBQXd5QyxRQUFBSixLQUNBLE9BQUFBLElBQUFuNEQsT0FBQXM0RCxRQUFBLEVBQUFILElBQUF4d0MsT0FBQSxJQUFBd3dDLElBQUF2eUQsTUFBQSxHQUFBLEdBR0EsSUFBQTR5RCxhQUFBL2xDLE9BQUFyekIsVUFDQXE1RCxhQUFBRCxhQUFBRSxZQUFBLFNBQUFDLFFBQUEsT0FBQSxJQUFBMTlELEtBQUEyOUQsWUFBQUQsT0FBQSxJQUVBLFNBQUFELFdBQUFQLElBQUFRLFFBQ0EsT0FBQUYsYUFBQW41RCxLQUFBNjRELElBQUFRLFFBR0EsSUFBQUUsV0FBQUwsYUFBQU0sVUFBQSxTQUFBSCxRQUFBLE9BQUExOUQsS0FBQWdOLFFBQUEwd0QsT0FBQTM0RCxVQUFBMjRELFFBRUEsU0FBQUcsU0FBQVgsSUFBQVEsUUFDQSxPQUFBRSxXQUFBdjVELEtBQUE2NEQsSUFBQVEsUUFHQSxJQUFBSSxXQUFBLFNBQUFKLFFBQUEsT0FBQTE5RCxLQUFBd1IsUUFBQWtzRCxTQUNBSyxZQUFBUixhQUFBUyxVQUFBRixXQUNBRyxjQUFBaDZELE1BQUFFLFVBQUE2NUQsVUFBQUYsV0FFQSxTQUFBRSxTQUFBLzBELElBQUF5MEQsUUFDQSxPQUFBejBELE1BQUFpMUQsU0FBQWoxRCxLQUFBODBELFlBQUFFLGVBQUE1NUQsS0FBQTRFLElBQUF5MEQsUUFHQSxJQUFBMzVELFFBQUFFLE1BQUFGLFFBRUEsU0FBQW9ILFdBQUFsQyxLQUNBLE1BQUEsbUJBQUFBLElBR0EsU0FBQTNFLFNBQUEyRSxLQUNBLE9BQUEsT0FBQUEsS0FBQSxpQkFBQUEsSUFHQSxTQUFBNHBCLGNBQUE1cEIsS0FDQSxPQUFBM0UsU0FBQTJFLE1BQUEvRSxPQUFBK3JCLGVBQUFobkIsT0FBQS9FLE9BQUFDLFVBR0EsU0FBQXNzQixTQUFBeG5CLEtBQ0EsT0FBQTNFLFNBQUEyRSxNQUFBQSxNQUFBQSxJQUFBOU0sT0FHQSxTQUFBZ2lFLFdBQUFsMUQsS0FDQSxPQUFBM0UsU0FBQTJFLE1BQUEsSUFBQUEsSUFBQXVuQixTQUdBLFNBQUE0dEMsU0FBQW4xRCxLQUNBLE9BQUEzRSxTQUFBMkUsUUFBQUEsSUFBQXlvQixPQUdBLFNBQUEyc0MsT0FBQXpnRSxTQUNBLE9BQUFBLG1CQUFBMGdFLE1BQUFoNkQsU0FBQTFHLFVBQUEsSUFBQUEsUUFBQTR5QixTQUdBLFNBQUErdEMsaUJBQUEzZ0UsU0FDQSxPQUFBQSxtQkFBQTRnRSxVQUFBNWdFLG1CQUFBNmdFLGVBR0EsU0FBQUMsVUFBQW4xRCxPQUNBLE1BQUEsa0JBQUFBLE1BR0EsU0FBQTIwRCxTQUFBMzBELE9BQ0EsTUFBQSxpQkFBQUEsTUFHQSxTQUFBL0UsU0FBQStFLE9BQ0EsTUFBQSxpQkFBQUEsTUFHQSxTQUFBa25ELFVBQUFsbkQsT0FDQSxPQUFBL0UsU0FBQStFLFFBQUEyMEQsU0FBQTMwRCxTQUFBcEMsTUFBQW9DLE1BQUFxWSxXQUFBclksUUFHQSxTQUFBaEYsWUFBQWdGLE9BQ0EsWUFBQSxJQUFBQSxNQUdBLFNBQUFvMUQsVUFBQXAxRCxPQUNBLE9BQUFtMUQsVUFBQW4xRCxPQUNBQSxNQUNBLFNBQUFBLE9BQUEsTUFBQUEsT0FBQSxLQUFBQSxPQUVBLFVBQUFBLE9BQUEsTUFBQUEsT0FFQUEsTUFHQSxTQUFBcTFELFNBQUFyMUQsT0FDQSxJQUFBakksT0FBQXU5RCxPQUFBdDFELE9BQ0EsT0FBQXBDLE1BQUE3RixTQUFBQSxPQUdBLFNBQUF3OUQsUUFBQXYxRCxPQUNBLE9BQUFxWSxXQUFBclksUUFBQSxFQUdBLFNBQUF3MUQsT0FBQW5oRSxTQUNBLE9BQUF5Z0UsT0FBQXpnRSxVQUFBNnlCLFNBQUE3eUIsVUFBQXVnRSxXQUFBdmdFLFNBQ0FBLFFBQ0EyZ0UsaUJBQUEzZ0UsVUFBQXdnRSxTQUFBeGdFLFNBQ0FBLFFBQUEsR0FDQW1HLFFBQUFuRyxTQUNBbWhFLE9BQUFuaEUsUUFBQSxJQUNBLEtBR0EsSUFBQW9oRSxXQUFBLzZELE1BQUFFLFVBQ0EsU0FBQTg2RCxRQUFBcmhFLFNBQ0EsT0FBQXlnRSxPQUFBemdFLFVBQ0FBLFNBQ0EyZ0UsaUJBQUEzZ0UsU0FDQW9oRSxXQUFBcjBELE1BQUF0RyxLQUFBekcsU0FDQW1HLFFBQUFuRyxTQUNBQSxRQUFBOEcsSUFBQXE2RCxRQUFBLzhELE9BQUFrOUQsU0FDQWQsU0FBQXhnRSxTQUNBQSxRQUFBb3FCLGFBSUEsU0FBQW0zQyxPQUFBNTFELE9BQ0EsT0FBQXhGLFFBQUF3RixPQUNBQSxNQUNBMjBELFNBQUEzMEQsT0FDQUEsTUFBQWtKLE1BQUEsZ0JBQUEvTixJQUFBLFNBQUE2RSxPQUFBLE9BQUFrbkQsVUFBQWxuRCxPQUNBcTFELFNBQUFyMUQsT0FDQW8xRCxVQUFBcDFELE1BQUErcEIsV0FDQS9wQixPQUdBLFNBQUE2MUQsS0FBQWo1QyxNQUNBLE9BQUFBLEtBRUEwM0MsU0FBQTEzQyxLQUFBLE1BQ0EyNEMsUUFBQTM0QyxNQUNBLElBQUEyNEMsUUFBQTM0QyxNQUhBLEVBTUEsU0FBQWttQixLQUFBOWlDLE1BQUFyRSxFQUFBQyxHQUNBLE9BQUFvRSxNQUFBeEwsUUFBQSxJQUFBRCxPQUFBb0gsRUFBQSxJQUFBQyxFQUFBLE1BQUEsU0FBQXJELE9BQ0EsT0FBQUEsUUFBQW9ELEVBQUFDLEVBQUFELElBSUEsSUFBQW02RCxPQUFBbjdELE9BQUFtN0QsUUFBQSxTQUFBMXNDLFFBRUEsSUFEQSxJQUFBbG9CLFFBQUE1QyxJQUFBL0QsVUFBQWlCLE9BQUEsRUFDQThDLE9BQUEsR0FBQTRDLEtBQUE1QyxLQUFBL0QsVUFBQStELElBQUEsR0FFQThxQixPQUFBenVCLE9BQUF5dUIsUUFDQSxJQUFBLElBQUE5dEIsRUFBQSxFQUFBQSxFQUFBNEYsS0FBQTFGLE9BQUFGLElBQUEsQ0FDQSxJQUFBdW1CLE9BQUEzZ0IsS0FBQTVGLEdBQ0EsR0FBQSxPQUFBdW1CLE9BQ0EsSUFBQSxJQUFBMWdCLE9BQUEwZ0IsT0FDQWdGLE9BQUFoRixPQUFBMWdCLE9BQ0Fpb0IsT0FBQWpvQixLQUFBMGdCLE9BQUExZ0IsTUFLQSxPQUFBaW9CLFFBR0EsU0FBQVYsS0FBQWhwQixJQUFBcTJELElBQ0EsSUFBQSxJQUFBNTBELE9BQUF6QixJQUNBcTJELEdBQUFqN0QsS0FBQTRFLElBQUF5QixLQUFBekIsSUFBQXlCLEtBQUFBLEtBSUEsU0FBQTYwRCxPQUFBM29CLFdBQUExdUMsTUFDQSxPQUFBMHVDLFdBQUF2akMsS0FBQSxTQUFBbk8sRUFBQUMsR0FBQSxPQUFBRCxFQUFBZ0QsTUFBQS9DLEVBQUErQyxNQUNBLEVBQ0EvQyxFQUFBK0MsTUFBQWhELEVBQUFnRCxPQUNBLEVBQ0EsSUFJQSxTQUFBczNELE1BQUFsK0QsT0FBQXVJLElBQUFrRCxLQUlBLFlBSEEsSUFBQWxELE1BQUFBLElBQUEsUUFDQSxJQUFBa0QsTUFBQUEsSUFBQSxHQUVBMU4sS0FBQXdLLElBQUF4SyxLQUFBME4sSUFBQXpMLE9BQUF1SSxLQUFBa0QsS0FHQSxTQUFBbW1CLFFBRUEsU0FBQXVzQyxjQUFBQyxHQUFBQyxJQUNBLE9BQUFELEdBQUFwaUIsTUFBQXFpQixHQUFBN2xCLE9BQ0E2bEIsR0FBQXJpQixNQUFBb2lCLEdBQUE1bEIsT0FDQTRsQixHQUFBaGxDLEtBQUFpbEMsR0FBQUMsUUFDQUQsR0FBQWpsQyxLQUFBZ2xDLEdBQUFFLE9BR0EsU0FBQUMsWUFBQUMsTUFBQTNRLE1BQ0EsT0FBQXNRLGVBQUEva0MsSUFBQW9sQyxNQUFBenVELEVBQUF1dUQsT0FBQUUsTUFBQXp1RCxFQUFBaXNDLEtBQUF3aUIsTUFBQTc5RCxFQUFBNjNDLE1BQUFnbUIsTUFBQTc5RCxHQUFBa3RELE1BR0EsSUFBQTRRLFlBRUFDLE1BQUEsU0FBQUMsV0FBQS8zRCxLQUFBcUIsT0FDQSxJQUFBTixJQUdBaTNELE1BQUEsVUFBQWg0RCxLQUFBLFNBQUEsUUFFQSxPQUFBZSxRQUFBaTNELE9BQUE3Z0UsS0FBQWdqQixNQUFBOVksTUFBQTAyRCxXQUFBQyxPQUFBRCxXQUFBLzNELE9BQUFlLElBQUFmLE1BQUFxQixNQUFBTixLQUdBazNELFFBQUEsU0FBQUYsV0FBQUcsZUFDQSxJQUFBQyxPQUFBcmdFLEtBU0EsT0FMQWl5QixLQUZBZ3VDLFdBQUFaLFVBQUFZLFlBRUEsU0FBQTdvQyxFQUFBbHZCLE1BQUEsT0FBQSszRCxXQUFBQSxXQUFBLzNELE1BQUFrNEQsY0FBQWw0RCxNQUNBbTRELE9BQUFMLE1BQUFDLFdBQUEvM0QsS0FBQWs0RCxjQUFBbDRELE9BQ0ErM0QsYUFHQUEsWUFHQUssTUFBQSxTQUFBTCxXQUFBRyxlQUNBLElBQUFDLE9BQUFyZ0UsS0FTQSxPQUxBaXlCLEtBRkFndUMsV0FBQWpnRSxLQUFBbWdFLFFBQUFGLFdBQUFHLGVBRUEsU0FBQWhwQyxFQUFBbHZCLE1BQUEsT0FBQSszRCxXQUFBQSxXQUFBLzNELE1BQUFrNEQsY0FBQWw0RCxNQUNBbTRELE9BQUFMLE1BQUFDLFdBQUEvM0QsS0FBQWs0RCxjQUFBbDRELE9BQ0ErM0QsYUFHQUEsYUFLQSxTQUFBNWpDLEtBQUF6K0IsUUFBQXNOLEtBQUEzQixPQUVBLEdBQUFqRixTQUFBNEcsTUFDQSxJQUFBLElBQUFSLE9BQUFRLEtBQ0FteEIsS0FBQXorQixRQUFBOE0sSUFBQVEsS0FBQVIsVUFGQSxDQU9BLEdBQUFuRyxZQUFBZ0YsT0FFQSxPQURBM0wsUUFBQW1oRSxPQUFBbmhFLFdBQ0FBLFFBQUFqQyxhQUFBdVAsTUFFQSt6RCxRQUFBcmhFLFNBQUFzRSxRQUFBLFNBQUF0RSxTQUVBdU4sV0FBQTVCLFNBQ0FBLE1BQUFBLE1BQUFsRixLQUFBekcsUUFBQXkrQixLQUFBeitCLFFBQUFzTixRQUdBLE9BQUEzQixNQUNBdTVDLFdBQUFsbEQsUUFBQXNOLE1BRUF0TixRQUFBaEMsYUFBQXNQLEtBQUEzQixVQU9BLFNBQUFnM0QsUUFBQTNpRSxRQUFBc04sTUFDQSxPQUFBK3pELFFBQUFyaEUsU0FBQStGLEtBQUEsU0FBQS9GLFNBQUEsT0FBQUEsUUFBQTRpRSxhQUFBdDFELFFBR0EsU0FBQTQzQyxXQUFBbGxELFFBQUFzTixNQUNBdE4sUUFBQXFoRSxRQUFBcmhFLFNBQ0FzTixLQUFBdUgsTUFBQSxLQUFBdlEsUUFBQSxTQUFBZ0osTUFBQSxPQUFBdE4sUUFBQXNFLFFBQUEsU0FBQXRFLFNBQUEsT0FBQUEsUUFBQThFLGdCQUFBd0ksVUFLQSxTQUFBdTFELFdBQUE3aUUsUUFBQThpRSxVQUFBL2lDLFFBQUFnakMsYUFDQXRrQyxLQUFBeitCLFFBQUE4aUUsVUFBQSxTQUFBbjNELE9BQUEsT0FBQUEsTUFBQUEsTUFBQXhMLFFBQUE0L0IsUUFBQWdqQyxhQUFBcDNELFFBR0EsU0FBQXBKLEtBQUF2QyxRQUFBOGlFLFdBQ0EsSUFBQSxJQUFBNzdELEVBQUEsRUFBQTIwQixPQUFBa25DLFVBQUEsUUFBQUEsV0FBQTc3RCxFQUFBMjBCLE1BQUF6MEIsT0FBQUYsSUFDQSxHQUFBMDdELFFBQUEzaUUsUUFBQTQ3QixNQUFBMzBCLElBQ0EsT0FBQXczQixLQUFBeitCLFFBQUE0N0IsTUFBQTMwQixJQUtBLFNBQUErN0QsTUFBQXJqRSxTQUFBK3pCLFNBQ0EsT0FBQXl0QyxPQUFBeGhFLFdBQUEwOUIsS0FBQTE5QixTQUFBc2pFLGtCQUFBdGpFLFVBQUErekIsUUFBQXIyQixVQUdBLFNBQUE2bEUsU0FBQXZqRSxTQUFBK3pCLFNBQ0EsSUFBQThkLE1BQUE2dkIsUUFBQTFoRSxVQUNBLE9BQUE2eEMsTUFBQXJxQyxRQUFBcXFDLE9BQUEyeEIsUUFBQXhqRSxTQUFBc2pFLGtCQUFBdGpFLFVBQUErekIsUUFBQXIyQixVQUdBLFNBQUFnZ0MsS0FBQTE5QixTQUFBK3pCLFNBQ0EsT0FBQXl0QyxPQUFBaUMsT0FBQXpqRSxTQUFBK3pCLFFBQUEsa0JBR0EsU0FBQXl2QyxRQUFBeGpFLFNBQUErekIsU0FDQSxPQUFBMnRDLFFBQUErQixPQUFBempFLFNBQUErekIsUUFBQSxxQkFHQSxTQUFBMHZDLE9BQUF6akUsU0FBQSt6QixRQUFBMnZDLFNBSUEsUUFIQSxJQUFBM3ZDLFVBQUFBLFFBQUFyMkIsV0FHQXNDLFdBQUEyZ0UsU0FBQTNnRSxVQUNBLE9BQUEsS0FLQSxJQUFBMmpFLFFBRUFMLGtCQUpBdGpFLFNBQUFBLFNBQUFRLFFBQUFvakUsa0JBQUEsV0FNQUQsV0FFQTNqRSxTQUFBQSxTQUFBa1YsTUFBQSxLQUFBL04sSUFBQSxTQUFBbkgsU0FBQXNILEdBRUEsSUFBQXU4RCxJQUFBOXZDLFFBSUEsR0FBQSxPQUZBL3pCLFNBQUFBLFNBQUErMUIsUUFFQSxHQUFBLENBRUEsSUFBQTBKLFVBQUF6L0IsU0FBQXlQLE9BQUEsR0FBQXNtQixPQUFBN2dCLE1BQUEsS0FDQTJ1RCxJQUFBeDhCLFFBQUF0VCxRQUFBSixXQUFBOEwsVUFBQSxJQUNBei9CLFNBQUF5L0IsVUFBQXJ5QixNQUFBLEdBQUFDLEtBQUEsS0FBQTBvQixPQUlBLEdBQUEsTUFBQS8xQixTQUFBLEdBQUEsQ0FFQSxJQUFBOGpFLFlBQUE5akUsU0FBQXlQLE9BQUEsR0FBQXNtQixPQUFBN2dCLE1BQUEsS0FDQWd5QixNQUFBMjhCLEtBQUE5dkMsU0FBQWd3Qyx1QkFDQUYsSUFBQXYrQyxRQUFBNGhCLEtBQUFsbkMsU0FBQXlQLE9BQUEsSUFBQXkzQixLQUFBLEtBQ0FsbkMsU0FBQThqRSxZQUFBMTJELE1BQUEsR0FBQUMsS0FBQSxLQUlBLE9BQUF3MkQsS0FJQUEsSUFBQWxnRSxLQUNBa2dFLElBQUFsZ0UsR0FBQSxNQUFBakQsS0FBQUcsTUFBQXlHLEVBQ0FxOEQsUUFBQWw4RCxLQUFBLFdBQUEsT0FBQTg5QyxXQUFBc2UsSUFBQSxTQUdBLElBQUE3a0MsT0FBQTZrQyxJQUFBbGdFLElBQUEsSUFBQTNELFVBUkEsT0FVQXlFLE9BQUFrOUQsU0FBQXQwRCxLQUFBLEtBRUEwbUIsUUFBQXIyQixVQUlBLElBRUEsT0FBQXEyQixRQUFBMnZDLFNBQUExakUsVUFFQSxNQUFBbUMsR0FFQSxPQUFBLEtBRUEsUUFFQXdoRSxTQUFBQSxRQUFBaC9ELFFBQUEsU0FBQWUsUUFBQSxPQUFBQSxZQU1BLElBQUFzK0Qsa0JBQUEsa0JBQ0FKLGtCQUFBLGdDQUVBLFNBQUFOLGtCQUFBdGpFLFVBQ0EsT0FBQTJnRSxTQUFBM2dFLFdBQUFBLFNBQUF1RSxNQUFBeS9ELG1CQUdBLElBQUFDLFFBQUFDLFFBQUF0OUQsVUFDQXU5RCxVQUFBRixRQUFBMytDLFNBQUEyK0MsUUFBQW5tQyx1QkFBQW1tQyxRQUFBaG1DLGtCQUVBLFNBQUEzWSxRQUFBamxCLFFBQUFMLFVBQ0EsT0FBQTBoRSxRQUFBcmhFLFNBQUErRixLQUFBLFNBQUEvRixTQUFBLE9BQUE4akUsVUFBQXI5RCxLQUFBekcsUUFBQUwsWUFHQSxJQUFBb2tFLFVBQUFILFFBQUE1OEIsU0FBQSxTQUFBcm5DLFVBQ0EsSUFBQXFrRSxTQUFBNWhFLEtBRUEsRUFBQSxDQUVBLEdBQUE2aUIsUUFBQSsrQyxTQUFBcmtFLFVBQ0EsT0FBQXFrRSxTQUdBQSxTQUFBQSxTQUFBMXdDLGlCQUVBMHdDLFVBQUEsSUFBQUEsU0FBQXB4QyxXQUdBLFNBQUFvVSxRQUFBaG5DLFFBQUFMLFVBTUEsT0FKQWtnRSxXQUFBbGdFLFNBQUEsT0FDQUEsU0FBQUEsU0FBQW9OLE1BQUEsSUFHQTB6RCxPQUFBemdFLFNBQ0FBLFFBQUFzekIsWUFBQXl3QyxVQUFBdDlELEtBQUF6RyxRQUFBTCxVQUNBMGhFLFFBQUFyaEUsU0FBQThHLElBQUEsU0FBQTlHLFNBQUEsT0FBQUEsUUFBQXN6QixZQUFBeXdDLFVBQUF0OUQsS0FBQXpHLFFBQUFMLFlBQUF5RSxPQUFBazlELFNBR0EsU0FBQW42QixRQUFBbm5DLFFBQUFMLFVBSUEsSUFIQSxJQUFBNitCLFlBQ0FrQyxPQUFBeWdDLE9BQUFuaEUsU0FBQXN6QixXQUVBb04sUUFBQSxJQUFBQSxPQUFBOU4sVUFFQTNOLFFBQUF5YixPQUFBL2dDLFdBQ0E2K0IsU0FBQXAzQixLQUFBczVCLFFBR0FBLE9BQUFBLE9BQUFwTixXQUdBLE9BQUFrTCxTQUdBLElBQUF5bEMsU0FBQTFsRSxPQUFBMmxFLEtBQUFBLElBQUF2bEMsUUFBQSxTQUFBNlAsS0FBQSxPQUFBQSxJQUFBcnVDLFFBQUEsdUJBQUEsU0FBQStELE9BQUEsTUFBQSxLQUFBQSxTQUNBLFNBQUF5NkIsT0FBQTZQLEtBQ0EsT0FBQTh4QixTQUFBOXhCLEtBQUF5MUIsU0FBQXg5RCxLQUFBLEtBQUErbkMsS0FBQSxHQUdBLElBQUEyMUIsY0FDQUMsTUFBQSxFQUNBbCtDLE1BQUEsRUFDQW0rQyxJQUFBLEVBQ0FuMEIsS0FBQSxFQUNBbzBCLE9BQUEsRUFDQUMsSUFBQSxFQUNBQyxLQUFBLEVBQ0FwK0QsT0FBQSxFQUNBcStELFFBQUEsRUFDQTVOLE1BQUEsRUFDQTZOLFVBQUEsRUFDQUMsTUFBQSxFQUNBcmMsT0FBQSxFQUNBOTZCLFFBQUEsRUFDQW8zQyxPQUFBLEVBQ0FDLEtBQUEsR0FFQSxTQUFBQyxjQUFBOWtFLFNBQ0EsT0FBQXFoRSxRQUFBcmhFLFNBQUErRixLQUFBLFNBQUEvRixTQUFBLE9BQUFta0UsYUFBQW5rRSxRQUFBK2tFLFFBQUE1MkQsaUJBR0EsU0FBQTYyRCxVQUFBaGxFLFNBQ0EsT0FBQXFoRSxRQUFBcmhFLFNBQUErRixLQUFBLFNBQUEvRixTQUFBLE9BQUFBLFFBQUF1OEMsYUFBQXY4QyxRQUFBd3VELGNBQUF4dUQsUUFBQXcvQyxpQkFBQXI0QyxTQUdBLElBQUE4OUQsU0FBQSwrQkFDQSxTQUFBQyxRQUFBbGxFLFNBQ0EsT0FBQXFoRSxRQUFBcmhFLFNBQUErRixLQUFBLFNBQUEvRixTQUFBLE9BQUFpbEIsUUFBQWpsQixRQUFBaWxFLFlBR0EsU0FBQTdnRSxPQUFBcEUsUUFBQUwsVUFDQSxPQUFBMGhFLFFBQUFyaEUsU0FBQW9FLE9BQUEsU0FBQXBFLFNBQUEsT0FBQWlsQixRQUFBamxCLFFBQUFMLFlBR0EsU0FBQXdsRSxPQUFBbmxFLFFBQUFMLFVBQ0EsT0FBQTJnRSxTQUFBM2dFLFVBSUFzbEIsUUFBQWpsQixRQUFBTCxXQUFBcW5DLFFBQUFobkMsUUFBQUwsVUFIQUssVUFBQUwsV0FBQTRnRSxXQUFBNWdFLFVBQ0FBLFNBQUErOEIsZ0JBQ0F5a0MsT0FBQXhoRSxXQUFBeUYsU0FBQSs3RCxPQUFBbmhFLFVBSUEsU0FBQXF5QyxLQUVBLElBREEsSUFBQXhsQyxRQUFBNUMsSUFBQS9ELFVBQUFpQixPQUNBOEMsT0FBQTRDLEtBQUE1QyxLQUFBL0QsVUFBQStELEtBR0EsSUFBQW03RCxJQUFBQyxRQUFBeDRELE1BQ0Frb0IsT0FBQXF3QyxJQUFBLEdBQ0FqbUUsS0FBQWltRSxJQUFBLEdBQ0F6bEUsU0FBQXlsRSxJQUFBLEdBQ0FFLFNBQUFGLElBQUEsR0FDQUcsV0FBQUgsSUFBQSxHQWFBLE9BWEFyd0MsT0FBQXl3QyxjQUFBendDLFFBRUFwMUIsV0FDQTJsRSxTQXVFQSxTQUFBdGxFLFFBQUFMLFNBQUEybEUsVUFDQSxJQUFBN0MsT0FBQXJnRSxLQUVBLE9BQUEsU0FBQU4sR0FFQSxJQUFBaXpCLE9BQUFqekIsRUFBQWl6QixPQUNBNjRCLFFBQUEsTUFBQWp1RCxTQUFBLEdBQ0F3akUsUUFBQXhqRSxTQUFBSyxTQUFBMG5DLFVBQUF0akMsT0FBQSxTQUFBcEUsU0FBQSxPQUFBbWxFLE9BQUFwd0MsT0FBQS8wQixXQUFBLEdBQ0FnbkMsUUFBQWpTLE9BQUFwMUIsVUFFQWl1RCxVQUNBOXJELEVBQUF5d0QsU0FBQXZ5RCxRQUNBOEIsRUFBQThyRCxRQUFBQSxRQUVBMFgsU0FBQTcrRCxLQUFBZzhELE9BQUEzZ0UsS0FyRkF5d0QsQ0FBQXg5QixPQUFBcDFCLFNBQUEybEUsV0FHQUEsU0FBQW4rRCxPQUFBLElBQ0FtK0QsU0FzRkEsU0FBQUEsVUFDQSxPQUFBLFNBQUF4akUsR0FBQSxPQUFBcUUsUUFBQXJFLEVBQUF3MEMsUUFBQWd2QixTQUFBci9ELFdBQUEsR0FBQW5FLEdBQUF3d0IsT0FBQXh3QixFQUFBdzBDLFNBQUFndkIsU0FBQXhqRSxJQXZGQXcwQyxDQUFBZ3ZCLFdBR0FubUUsS0FBQTBWLE1BQUEsS0FBQXZRLFFBQUEsU0FBQW5GLE1BQUEsT0FBQTQxQixRQUFBQSxPQUFBZ0ksaUJBQUE1OUIsS0FBQW1tRSxTQUFBQyxjQUNBLFdBQUEsT0FBQTd5QixJQUFBM2QsT0FBQTUxQixLQUFBbW1FLFNBQUFDLGFBR0EsU0FBQTd5QixJQUFBM2QsT0FBQTUxQixLQUFBbW1FLFNBQUFDLGlCQUNBLElBQUFBLGFBQUFBLFlBQUEsSUFFQXh3QyxPQUFBeXdDLGNBQUF6d0MsVUFDQTUxQixLQUFBMFYsTUFBQSxLQUFBdlEsUUFBQSxTQUFBbkYsTUFBQSxPQUFBNDFCLE9BQUErVyxvQkFBQTNzQyxLQUFBbW1FLFNBQUFDLGNBR0EsU0FBQXQ4QixPQUVBLElBREEsSUFBQXA4QixRQUFBNUMsSUFBQS9ELFVBQUFpQixPQUNBOEMsT0FBQTRDLEtBQUE1QyxLQUFBL0QsVUFBQStELEtBR0EsSUFBQW03RCxJQUFBQyxRQUFBeDRELE1BQ0E3TSxRQUFBb2xFLElBQUEsR0FDQWptRSxLQUFBaW1FLElBQUEsR0FDQXpsRSxTQUFBeWxFLElBQUEsR0FDQUUsU0FBQUYsSUFBQSxHQUNBRyxXQUFBSCxJQUFBLEdBQ0FLLFVBQUFMLElBQUEsR0FDQTF5QixJQUFBTCxHQUFBcnlDLFFBQUFiLEtBQUFRLFNBQUEsU0FBQW1DLEdBQ0EsSUFBQWllLFFBQUEwbEQsV0FBQUEsVUFBQTNqRSxHQUNBaWUsU0FDQTJ5QixNQUNBNHlCLFNBQUF4akUsRUFBQWllLFVBRUF3bEQsWUFFQSxPQUFBN3lCLElBR0EsU0FBQTJDLFFBQUF0Z0IsT0FBQTBkLE1BQUE2RCxRQUNBLE9BQUFvdkIsZUFBQTN3QyxRQUFBNHdDLE9BQUEsU0FBQUMsWUFBQTd3QyxRQUFBLE9BQUE2d0MsYUFBQTd3QyxPQUFBOHdDLGNBQUFDLFlBQUFyekIsT0FBQSxHQUFBLEVBQUE2RCxXQUNBLEdBR0EsU0FBQXd2QixZQUFBaGtFLEVBQUFvMEMsUUFBQUMsV0FBQUcsUUFJQSxRQUhBLElBQUFKLFVBQUFBLFNBQUEsUUFDQSxJQUFBQyxhQUFBQSxZQUFBLEdBRUFtcUIsU0FBQXgrRCxHQUFBLENBQ0EsSUFBQTJ3QyxNQUFBcDFDLFNBQUF5b0UsWUFBQSxlQUNBcnpCLE1BQUFzekIsZ0JBQUFqa0UsRUFBQW8wQyxRQUFBQyxXQUFBRyxRQUNBeDBDLEVBQUEyd0MsTUFHQSxPQUFBM3dDLEVBR0EsU0FBQXVqRSxRQUFBeDRELE1BU0EsT0FQQXl6RCxTQUFBenpELEtBQUEsTUFDQUEsS0FBQSxHQUFBd3dCLEtBQUF4d0IsS0FBQSxLQUdBVSxXQUFBVixLQUFBLEtBQ0FBLEtBQUE4bkIsT0FBQSxFQUFBLEdBQUEsR0FFQTluQixLQTBCQSxTQUFBbTVELGNBQUFqeEMsUUFDQSxNQUFBLGdCQUFBeDJCLE9BQ0F3MkIsa0JBQUFreEMsWUFDQWx4QyxRQUFBLHFCQUFBQSxPQUdBLFNBQUF5d0MsY0FBQXp3QyxRQUNBLE9BQUFpeEMsY0FBQWp4QyxRQUFBQSxPQUFBb3NDLE9BQUFwc0MsUUFHQSxTQUFBMndDLGVBQUEzd0MsUUFDQSxPQUFBaXhDLGNBQUFqeEMsU0FDQUEsUUFDQTV1QixRQUFBNHVCLFFBQ0FBLE9BQUFqdUIsSUFBQTArRCxlQUFBcGhFLE9BQUFrOUQsU0FDQUQsUUFBQXRzQyxRQUdBLFNBQUFteEMsZUFFQSxJQUFBdGpCLE1BQUEzWCxXQUFBaEMsS0FBQTVyQyxTQUFBLFFBQUEsU0FBQXlFLEdBRUFBLEVBQUEweUMsaUJBQ0ExeUMsRUFBQWswQywyQkFFQTZPLGFBQUFqQyxTQUVBLElBRUF2TixRQUFBaDRDLFNBQUEsZUFNQSxJQUFBOG9FLFVBQUEsWUFBQTVuRSxPQUFBQSxPQUFBNm5FLFFBQUFDLFVBRUEvOEIsU0FBQSxXQUNBLElBQUFtNUIsT0FBQXJnRSxLQUVBQSxLQUFBZ21DLFFBQUEsSUFBQSs5QixVQUFBLFNBQUFsK0IsUUFBQUMsUUFDQXU2QixPQUFBdjZCLE9BQUFBLE9BQ0F1NkIsT0FBQXg2QixRQUFBQSxXQVVBcStCLFFBQUEsRUFFQWhjLE1BQUEsaUJBQUEvckQsT0FBQWdvRSxhQUFBdDdCLFdBRUEsU0FBQW83QixVQUFBRyxVQUVBcGtFLEtBQUFlLE1BQUFtakUsUUFDQWxrRSxLQUFBdUosV0FBQXJNLEVBQ0E4QyxLQUFBcW5DLFlBRUEsSUFBQXJCLFFBQUFobUMsS0FFQSxJQUNBb2tFLFNBQ0EsU0FBQW5pRSxHQUNBK2pDLFFBQUFILFFBQUE1akMsSUFFQSxTQUFBb2lFLEdBQ0FyK0IsUUFBQUYsT0FBQXUrQixLQUdBLE1BQUEza0UsR0FDQXNtQyxRQUFBRixPQUFBcG1DLElBSUF1a0UsVUFBQW4rQixPQUFBLFNBQUF1K0IsR0FDQSxPQUFBLElBQUFKLFVBQUEsU0FBQXArQixRQUFBQyxRQUNBQSxPQUFBdStCLE1BSUFKLFVBQUFwK0IsUUFBQSxTQUFBNWpDLEdBQ0EsT0FBQSxJQUFBZ2lFLFVBQUEsU0FBQXArQixRQUFBQyxRQUNBRCxRQUFBNWpDLE1BSUFnaUUsVUFBQTM1QixJQUFBLFNBQUFnNkIsVUFDQSxPQUFBLElBQUFMLFVBQUEsU0FBQXArQixRQUFBQyxRQUNBLElBQUFub0IsVUFDQWt1QixNQUFBLEVBTUEsU0FBQTA0QixTQUFBMS9ELEdBQ0EsT0FBQSxTQUFBNUMsR0FDQTBiLE9BQUE5WSxHQUFBNUMsR0FDQTRwQyxPQUFBLEtBRUF5NEIsU0FBQXYvRCxRQUNBOGdDLFFBQUFsb0IsU0FWQSxJQUFBMm1ELFNBQUF2L0QsUUFDQThnQyxRQUFBbG9CLFFBY0EsSUFBQSxJQUFBOVksRUFBQSxFQUFBQSxFQUFBeS9ELFNBQUF2L0QsT0FBQUYsR0FBQSxFQUNBby9ELFVBQUFwK0IsUUFBQXkrQixTQUFBei9ELElBQUFvaEMsS0FBQXMrQixTQUFBMS9ELEdBQUFpaEMsV0FLQW0rQixVQUFBTyxLQUFBLFNBQUFGLFVBQ0EsT0FBQSxJQUFBTCxVQUFBLFNBQUFwK0IsUUFBQUMsUUFDQSxJQUFBLElBQUFqaEMsRUFBQSxFQUFBQSxFQUFBeS9ELFNBQUF2L0QsT0FBQUYsR0FBQSxFQUNBby9ELFVBQUFwK0IsUUFBQXkrQixTQUFBei9ELElBQUFvaEMsS0FBQUosUUFBQUMsV0FLQSxJQUFBdVksRUFBQTRsQixVQUFBOS9ELFVBMkdBLFNBQUE3RCxLQUFBNUQsSUFBQTgxQixTQUNBLE9BQUEsSUFBQXV4QyxVQUFBLFNBQUFsK0IsUUFBQUMsUUFFQSxJQUFBMitCLElBQUFwRixRQUNBbC9ELEtBQUEsS0FDQUQsT0FBQSxNQUNBTSxXQUNBNnJELElBQUEsSUFBQUMsZUFDQTFCLFdBQUExM0IsS0FDQWs2QixhQUFBLElBQ0E1NkIsU0FFQWl5QyxJQUFBN1osV0FBQTZaLEtBRUEsSUFBQXBZLElBQUFvWSxJQUFBcFksSUFFQSxJQUFBLElBQUFua0QsUUFBQXU4RCxJQUNBLEdBQUF2OEQsUUFBQW1rRCxJQUNBLElBRUFBLElBQUFua0QsTUFBQXU4RCxJQUFBdjhELE1BRUEsTUFBQXhJLElBTUEsSUFBQSxJQUFBaWdDLFVBRkEwc0IsSUFBQVEsS0FBQTRYLElBQUF2a0UsT0FBQTRxQixjQUFBcHVCLEtBRUErbkUsSUFBQWprRSxRQUNBNnJELElBQUFwQyxpQkFBQXRxQixPQUFBOGtDLElBQUFqa0UsUUFBQW0vQixTQUdBc1EsR0FBQW9jLElBQUEsT0FBQSxXQUVBLElBQUFBLElBQUFqQyxRQUFBaUMsSUFBQWpDLFFBQUEsS0FBQWlDLElBQUFqQyxPQUFBLEtBQUEsTUFBQWlDLElBQUFqQyxPQUNBdmtCLFFBQUF3bUIsS0FFQXZtQixPQUFBdTVCLE9BQUF4MEQsTUFBQXdoRCxJQUFBL0IsYUFDQStCLElBQUFBLElBQ0FqQyxPQUFBaUMsSUFBQWpDLFlBTUFuYSxHQUFBb2MsSUFBQSxRQUFBLFdBQUEsT0FBQXZtQixPQUFBdTVCLE9BQUF4MEQsTUFBQSxrQkFBQXdoRCxJQUFBQSxTQUNBcGMsR0FBQW9jLElBQUEsVUFBQSxXQUFBLE9BQUF2bUIsT0FBQXU1QixPQUFBeDBELE1BQUEsb0JBQUF3aEQsSUFBQUEsU0FFQUEsSUFBQXJyRCxLQUFBeWpFLElBQUF0a0UsUUFJQSxTQUFBdWtFLFNBQUExbkUsSUFBQTJuRSxPQUFBQyxPQUVBLE9BQUEsSUFBQWIsVUFBQSxTQUFBbCtCLFFBQUFDLFFBQ0EsSUFBQXM4QixJQUFBLElBQUF5QyxNQUVBekMsSUFBQW5WLFFBQUFubkIsT0FDQXM4QixJQUFBcFYsT0FBQSxXQUFBLE9BQUFubkIsUUFBQXU4QixNQUVBQSxJQUFBcGxFLElBQUFBLElBQ0EybkUsU0FBQXZDLElBQUF1QyxPQUFBQSxRQUNBQyxRQUFBeEMsSUFBQXdDLE1BQUFBLFNBS0EsU0FBQTV4QyxVQUNBLE1BQUEsYUFBQS8zQixTQUFBMkUsWUFBQSxZQUFBM0UsU0FBQTJFLGFBQUEzRSxTQUFBcS9CLGdCQUFBdVAsU0FHQSxTQUFBekYsTUFBQXgvQixJQUVBLEdBQUFvdUIsVUFDQXB1QixVQUlBLElBQUFtc0MsT0FBQSxXQUNBK3pCLFVBQ0FDLFVBQ0FuZ0UsTUFFQWtnRSxRQUFBNzBCLEdBQUFoMUMsU0FBQSxtQkFBQTgxQyxRQUNBZzBCLFFBQUE5MEIsR0FBQTl6QyxPQUFBLE9BQUE0MEMsUUFHQSxTQUFBNW1CLE1BQUF2c0IsUUFBQW9sRSxLQUNBLE9BQUFBLElBQ0EvRCxRQUFBcmhFLFNBQUE0VCxRQUFBdXRELE9BQUFpRSxNQUNBL0QsU0FBQXJoRSxRQUFBbWhFLE9BQUFuaEUsV0FBQUEsUUFBQXN6QixXQUFBcVQsVUFBQS95QixRQUFBNVQsU0FHQSxTQUFBb25FLFNBQUFuZ0UsRUFBQXUzQixTQUFBb3ZCLFFBQUF5WixhQUNBLElBQUF6WixVQUFBQSxRQUFBLFFBQ0EsSUFBQXlaLFNBQUFBLFFBQUEsR0FLQSxJQUFBbGdFLFFBRkFxM0IsU0FBQTZpQyxRQUFBN2lDLFdBRUFyM0IsT0FVQSxPQVJBRixFQUFBNHJELFVBQUE1ckQsR0FDQSs1RCxTQUFBLzVELEdBQ0EsU0FBQUEsRUFDQTJtRCxRQUFBLEVBQ0EsYUFBQTNtRCxFQUNBMm1ELFFBQUEsRUFDQXJoQyxNQUFBaVMsU0FBQXYzQixHQUVBb2dFLE9BQ0F6RixNQUFBMzZELEVBQUEsRUFBQUUsT0FBQSxJQUdBRixHQUFBRSxRQUVBLEVBQUFGLEVBQUFFLE9BQUFGLEVBR0EsU0FBQW1CLE1BQUFwSSxTQUdBLE9BRkFBLFFBQUFtaEUsT0FBQW5oRSxVQUNBaUIsVUFBQSxHQUNBakIsUUFHQSxTQUFBbzVDLEtBQUExWSxPQUFBMFksTUFFQSxPQURBMVksT0FBQXlnQyxPQUFBemdDLFFBQ0EvNUIsWUFBQXl5QyxNQUNBMVksT0FBQXovQixVQUNBNjRDLE9BQUFwWixPQUFBNG1DLGdCQUFBbC9ELE1BQUFzNEIsUUFBQUEsT0FBQTBZLE1BY0EsU0FBQVUsT0FBQXBaLE9BQUExZ0MsU0FFQSxPQURBMGdDLE9BQUF5Z0MsT0FBQXpnQyxRQUNBNm1DLFlBQUF2bkUsUUFBQSxTQUFBQSxTQUFBLE9BQUEwZ0MsT0FBQWpoQyxZQUFBTyxXQUdBLFNBQUFpNkMsT0FBQW1yQixJQUFBcGxFLFNBRUEsT0FEQW9sRSxJQUFBakUsT0FBQWlFLEtBQ0FtQyxZQUFBdm5FLFFBQUEsU0FBQUEsU0FBQSxPQUFBb2xFLElBQUE5eEMsV0FBQTBtQixhQUFBaDZDLFFBQUFvbEUsT0FHQSxTQUFBbHJCLE1BQUFrckIsSUFBQXBsRSxTQUVBLE9BREFvbEUsSUFBQWpFLE9BQUFpRSxLQUNBbUMsWUFBQXZuRSxRQUFBLFNBQUFBLFNBQUEsT0FBQW9sRSxJQUFBbHBDLFlBQ0ErZCxPQUFBbXJCLElBQUFscEMsWUFBQWw4QixTQUNBODVDLE9BQUFzckIsSUFBQTl4QyxXQUFBdHpCLFdBSUEsU0FBQXVuRSxZQUFBdm5FLFFBQUFnSCxJQUVBLE9BREFoSCxRQUFBc2dFLFNBQUF0Z0UsU0FBQXN4QyxTQUFBdHhDLFNBQUFBLFNBRUEsV0FBQUEsUUFDQXFoRSxRQUFBcmhFLFNBQUE4RyxJQUFBRSxJQUNBQSxHQUFBaEgsU0FDQSxLQUdBLFNBQUFxRixPQUFBckYsU0FDQXFoRSxRQUFBcmhFLFNBQUE4RyxJQUFBLFNBQUE5RyxTQUFBLE9BQUFBLFFBQUFzekIsWUFBQXR6QixRQUFBc3pCLFdBQUFDLFlBQUF2ekIsV0FHQSxTQUFBa3VELFFBQUFsdUQsUUFBQXFwRCxXQUlBLElBRkFBLFVBQUE4WCxPQUFBbG5CLE9BQUFqNkMsUUFBQXFwRCxZQUVBQSxVQUFBbnFCLFlBQ0FtcUIsVUFBQUEsVUFBQW5xQixXQUtBLE9BRkE0YSxPQUFBdVAsVUFBQXJwRCxTQUVBcXBELFVBR0EsU0FBQStFLFVBQUFwdUQsUUFBQXFwRCxXQUNBLE9BQUFnWSxRQUFBQSxRQUFBcmhFLFNBQUE4RyxJQUFBLFNBQUE5RyxTQUFBLE9BQUFBLFFBQUFzbkUsY0FBQXBaLFFBQUFtVCxRQUFBcmhFLFFBQUF3NkIsWUFBQTZ1QixXQUFBdlAsT0FBQTk1QyxRQUFBcXBELGNBSUEsU0FBQWlGLE9BQUF0dUQsU0FDQXFoRSxRQUFBcmhFLFNBQ0E4RyxJQUFBLFNBQUE5RyxTQUFBLE9BQUFBLFFBQUFzekIsYUFDQWx2QixPQUFBLFNBQUF1SCxNQUFBNGdCLE1BQUE4WixNQUFBLE9BQUFBLEtBQUF6eUIsUUFBQWpJLFNBQUE0Z0IsUUFDQWpvQixRQUFBLFNBQUFvOEIsUUFDQXVaLE9BQUF2WixPQUFBQSxPQUFBbEcsWUFDQW4xQixPQUFBcTdCLFVBL1NBK2YsRUFBQXhZLFFBQUEsU0FBQTVqQyxHQUNBLElBQUErakMsUUFBQWhtQyxLQUVBLEdBQUFnbUMsUUFBQWpsQyxRQUFBbWpFLFFBQUEsQ0FDQSxHQUFBamlFLElBQUErakMsUUFDQSxNQUFBLElBQUFxQyxVQUFBLGdDQUdBLElBQUErOEIsUUFBQSxFQUVBLElBQ0EsSUFBQW4vQixLQUFBaGtDLEdBQUFBLEVBQUFna0MsS0FFQSxHQUFBLE9BQUFoa0MsR0FBQXFDLFNBQUFyQyxJQUFBa0osV0FBQTg2QixNQWdCQSxZQWZBQSxLQUFBNWhDLEtBQ0FwQyxFQUNBLFNBQUFBLEdBQ0FtakUsUUFDQXAvQixRQUFBSCxRQUFBNWpDLEdBRUFtakUsUUFBQSxHQUVBLFNBQUFmLEdBQ0FlLFFBQ0FwL0IsUUFBQUYsT0FBQXUrQixHQUVBZSxRQUFBLElBS0EsTUFBQTFsRSxHQUlBLFlBSEEwbEUsUUFDQXAvQixRQUFBRixPQUFBcG1DLElBS0FzbUMsUUFBQWpsQyxNQWxIQSxFQW1IQWlsQyxRQUFBejhCLE1BQUF0SCxFQUNBK2pDLFFBQUE2QixXQUlBd1csRUFBQXZZLE9BQUEsU0FBQXprQyxRQUdBLEdBRkFyQixLQUVBZSxRQUFBbWpFLFFBQUEsQ0FDQSxHQUFBN2lFLFNBSEFyQixLQUlBLE1BQUEsSUFBQXFvQyxVQUFBLGdDQUpBcm9DLEtBT0FlLE1BL0hBLEVBd0hBZixLQVFBdUosTUFBQWxJLE9BUkFyQixLQVNBNm5DLFdBSUF3VyxFQUFBeFcsT0FBQSxXQUNBLElBQUF3NEIsT0FBQXJnRSxLQUVBa29ELE1BQUEsV0FDQSxHQUFBbVksT0FBQXQvRCxRQUFBbWpFLFFBQ0EsS0FBQTdELE9BQUFoNUIsU0FBQXRpQyxRQUFBLENBQ0EsSUFBQWkrRCxJQUFBM0MsT0FBQWg1QixTQUFBM2MsUUFDQTI2QyxXQUFBckMsSUFBQSxHQUNBajdCLFdBQUFpN0IsSUFBQSxHQUNBbjlCLFFBQUFtOUIsSUFBQSxHQUNBbDlCLE9BQUFrOUIsSUFBQSxHQUVBLElBbEpBLElBbUpBM0MsT0FBQXQvRCxNQUNBb0ssV0FBQWs2RCxZQUNBeC9CLFFBQUF3L0IsV0FBQWhoRSxVQUFBbkgsRUFBQW1qRSxPQUFBOTJELFFBRUFzOEIsUUFBQXc2QixPQUFBOTJELE9BdEpBLElBd0pBODJELE9BQUF0L0QsUUFDQW9LLFdBQUE0OEIsWUFDQWxDLFFBQUFrQyxXQUFBMWpDLFVBQUFuSCxFQUFBbWpFLE9BQUE5MkQsUUFFQXU4QixPQUFBdTZCLE9BQUE5MkQsUUFHQSxNQUFBN0osR0FDQW9tQyxPQUFBcG1DLFFBT0EyK0MsRUFBQXBZLEtBQUEsU0FBQW8vQixXQUFBdDlCLFlBQ0EsSUFBQXM0QixPQUFBcmdFLEtBRUEsT0FBQSxJQUFBaWtFLFVBQUEsU0FBQXArQixRQUFBQyxRQUNBdTZCLE9BQUFoNUIsU0FBQXJpQyxNQUFBcWdFLFdBQUF0OUIsV0FBQWxDLFFBQUFDLFNBQ0F1NkIsT0FBQXg0QixZQUlBd1csRUFBQS9XLE1BQUEsU0FBQVMsWUFDQSxPQUFBL25DLEtBQUFpbUMsVUFBQS9vQyxFQUFBNnFDLGFBNk1BLElBQUF1OUIsV0FBQSxxQkFDQUMsWUFBQSw2QkFFQSxTQUFBcjJCLFNBQUE4SCxNQUVBLElBQUFuMEIsUUFBQTBpRCxZQUFBcm9ELEtBQUE4NUIsTUFDQSxHQUFBbjBCLFFBQ0EsT0FBQTVuQixTQUFBNkIsY0FBQStsQixRQUFBLElBR0EsSUFBQTAyQixVQUFBdCtDLFNBQUE2QixjQUFBLE9BT0EsT0FOQXdvRSxXQUFBajNELEtBQUEyb0MsTUFDQXVDLFVBQUFpc0IsbUJBQUEsWUFBQXh1QixLQUFBMWpCLFFBRUFpbUIsVUFBQTFjLFlBQUFtYSxLQUdBdUMsVUFBQW5oQixXQUFBcnpCLE9BQUEsRUFBQWs2RCxRQUFBMWxCLFVBQUFuaEIsWUFBQW1oQixVQUFBemMsV0FJQSxTQUFBajVCLE1BQUFrdEIsS0FBQW5zQixJQUVBLEdBQUFtc0IsTUFBQSxJQUFBQSxLQUFBUCxTQU1BLElBRkE1ckIsR0FBQW1zQixNQUNBQSxLQUFBQSxLQUFBZzdCLGtCQUNBaDdCLE1BQ0FsdEIsTUFBQWt0QixLQUFBbnNCLElBQ0Ftc0IsS0FBQUEsS0FBQTAwQyxtQkFJQSxTQUFBNWhCLFNBQUFqbUQsU0FFQSxJQURBLElBQUE2TSxRQUFBNUMsSUFBQS9ELFVBQUFpQixPQUFBLEVBQ0E4QyxPQUFBLEdBQUE0QyxLQUFBNUMsS0FBQS9ELFVBQUErRCxJQUFBLEdBRUE2OUQsUUFBQTluRSxRQUFBNk0sS0FBQSxPQUdBLFNBQUE5TSxZQUFBQyxTQUVBLElBREEsSUFBQTZNLFFBQUE1QyxJQUFBL0QsVUFBQWlCLE9BQUEsRUFDQThDLE9BQUEsR0FBQTRDLEtBQUE1QyxLQUFBL0QsVUFBQStELElBQUEsR0FFQTY5RCxRQUFBOW5FLFFBQUE2TSxLQUFBLFVBR0EsU0FBQWs3RCxjQUFBL25FLFFBQUFnb0UsS0FDQW5GLFdBQUE3aUUsUUFBQSxRQUFBLElBQUFFLE9BQUEsVUFBQThuRSxJQUFBLFVBQUEsS0FBQSxJQUdBLFNBQUFDLGFBQUFqb0UsU0FFQSxJQURBLElBQUE2TSxRQUFBNUMsSUFBQS9ELFVBQUFpQixPQUFBLEVBQ0E4QyxPQUFBLEdBQUE0QyxLQUFBNUMsS0FBQS9ELFVBQUErRCxJQUFBLEdBRUE0QyxLQUFBLElBQUE5TSxZQUFBQyxRQUFBNk0sS0FBQSxJQUNBQSxLQUFBLElBQUFvNUMsU0FBQWptRCxRQUFBNk0sS0FBQSxJQUdBLFNBQUE2NUMsU0FBQTFtRCxRQUFBZ29FLEtBQ0EsT0FBQTNHLFFBQUFyaEUsU0FBQStGLEtBQUEsU0FBQS9GLFNBQUEsT0FBQUEsUUFBQW1GLFVBQUFDLFNBQUE0aUUsT0FHQSxTQUFBMWhCLFlBQUF0bUQsU0FFQSxJQURBLElBQUE2TSxRQUFBNUMsSUFBQS9ELFVBQUFpQixPQUFBLEVBQ0E4QyxPQUFBLEdBQUE0QyxLQUFBNUMsS0FBQS9ELFVBQUErRCxJQUFBLEdBR0EsR0FBQTRDLEtBQUExRixPQUFBLENBTUEsSUFBQStnRSxNQUFBNUgsVUFGQXp6RCxLQUFBczdELFVBQUF0N0QsT0FFQUEsS0FBQTFGLE9BQUEsT0FBQTBGLEtBQUE2cUIsTUFFQTdxQixLQUFBQSxLQUFBekksT0FBQWs5RCxTQUVBRCxRQUFBcmhFLFNBQUFzRSxRQUFBLFNBQUE4Z0UsS0FHQSxJQUZBLElBQUFqZ0UsVUFBQWlnRSxJQUFBamdFLFVBRUE4QixFQUFBLEVBQUFBLEVBQUE0RixLQUFBMUYsT0FBQUYsSUFDQW1oRSxTQUFBQyxNQUNBbGpFLFVBQUF3cUMsT0FBQTFwQyxNQUFBZCxXQUFBMEgsS0FBQTVGLElBQUFxckIsT0FBQTQxQyxRQUNBL2lFLFdBQUF3QixZQUFBdWhFLFFBQUEvaUUsVUFBQUMsU0FBQXlILEtBQUE1RixJQUFBaWhFLE9BQUEsTUFBQSxVQUFBcjdELEtBQUE1RixPQU1BLFNBQUE2Z0UsUUFBQTluRSxRQUFBNk0sS0FBQTdGLEtBQ0E2RixLQUFBczdELFVBQUF0N0QsTUFBQXpJLE9BQUFrOUQsVUFFQW42RCxRQUFBazZELFFBQUFyaEUsU0FBQXNFLFFBQUEsU0FBQThnRSxLQUNBLElBQUFqZ0UsVUFBQWlnRSxJQUFBamdFLFVBRUFpakUsU0FBQUUsU0FDQW5qRSxVQUFBNkIsSUFBQWYsTUFBQWQsVUFBQTBILE1BQ0FBLEtBQUF2SSxRQUFBLFNBQUEwakUsS0FBQSxPQUFBN2lFLFVBQUE2QixJQUFBZ2hFLFNBSUEsU0FBQUcsVUFBQXQ3RCxNQUNBLE9BQUFBLEtBQUE4NEQsT0FBQSxTQUFBOTRELEtBQUFELEtBQUEsT0FBQUMsS0FBQXlsQixPQUFBN3JCLEtBQUFvRyxLQUFBeXpELFNBQUExekQsTUFBQXd6RCxTQUFBeHpELElBQUEsS0FBQUEsSUFBQThvQixPQUFBN2dCLE1BQUEsS0FBQWpJLFVBSUEsSUFLQWdyQixLQUxBd3dDLGFBS0F4d0MsS0FBQXY2QixTQUFBNkIsY0FBQSxLQUFBaUcsYUFFQXl5QixLQUFBdHlCLElBQUEsSUFBQSxLQUNBc3lCLEtBQUErWCxPQUFBLEtBQUEsR0FDQXk0QixTQUFBRSxTQUFBMXdDLEtBQUF4eUIsU0FBQSxLQUNBZ2pFLFNBQUFDLE9BQUF6d0MsS0FBQXh5QixTQUFBLE1BRUF3eUIsS0FBQSxLQUlBLElBQUF1WCxXQUNBbzVCLDZCQUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLGFBQUEsRUFDQUMsZUFBQSxFQUNBQyxlQUFBLEVBQ0FDLGVBQUEsRUFDQXBxQixTQUFBLEVBQ0FPLE9BQUEsRUFDQUMsU0FBQSxFQUNBQyxRQUFBLEVBQ0E0cEIsV0FBQSxFQUNBMXBCLE1BQUEsR0FHQSxTQUFBNVEsSUFBQXh1QyxRQUFBK29FLFNBQUFwOUQsT0FFQSxPQUFBMDFELFFBQUFyaEUsU0FBQThHLElBQUEsU0FBQTlHLFNBRUEsR0FBQXNnRSxTQUFBeUksVUFBQSxDQUlBLEdBRkFBLFNBQUFDLFNBQUFELFVBRUFwaUUsWUFBQWdGLE9BQ0EsT0FBQXM5RCxTQUFBanBFLFFBQUErb0UsVUFDQXA5RCxPQUFBLElBQUFBLE1BR0EzTCxRQUFBc3VDLE1BQUF5NkIsVUFBQWxXLFVBQUFsbkQsU0FBQXdqQyxVQUFBNDVCLFVBQUFwOUQsTUFBQSxLQUFBQSxNQUZBM0wsUUFBQXN1QyxNQUFBNDZCLGVBQUFILGNBS0EsQ0FBQSxHQUFBNWlFLFFBQUE0aUUsVUFBQSxDQUVBLElBQUE5cUIsT0FBQXJELFVBQUE1NkMsU0FFQSxPQUFBK29FLFNBQUFwRCxPQUFBLFNBQUFqd0IsTUFBQXF6QixVQUVBLE9BREFyekIsTUFBQXF6QixVQUFBOXFCLE9BQUErcUIsU0FBQUQsV0FDQXJ6QixXQUdBaHZDLFNBQUFxaUUsV0FDQTEwQyxLQUFBMDBDLFNBQUEsU0FBQXA5RCxNQUFBbzlELFVBQUEsT0FBQXY2QixJQUFBeHVDLFFBQUErb0UsU0FBQXA5RCxTQUdBLE9BQUEzTCxVQUVBLEdBSUEsU0FBQTQ2QyxVQUFBNTZDLFFBQUFtcEUsV0FFQSxPQURBbnBFLFFBQUFtaEUsT0FBQW5oRSxVQUNBKzZCLGNBQUE4QixZQUFBaWUsaUJBQUE5NkMsUUFBQW1wRSxXQUdBLFNBQUFGLFNBQUFqcEUsUUFBQStvRSxTQUFBSSxXQUNBLE9BQUF2dUIsVUFBQTU2QyxRQUFBbXBFLFdBQUFKLFVBR0EsSUFBQUssUUFFQSxTQUFBQyxVQUFBLzdELE1BRUEsS0FBQUEsUUFBQTg3RCxNQUFBLENBSUEsSUFBQXBwRSxRQUFBODVDLE9BQUF6OEMsU0FBQXEvQixnQkFBQXIvQixTQUFBNkIsY0FBQSxRQUVBK21ELFNBQUFqbUQsUUFBQSxPQUFBc04sTUFFQSxJQUVBODdELEtBQUE5N0QsTUFBQTI3RCxTQUFBanBFLFFBQUEsVUFBQSxXQUFBRyxRQUFBLGlCQUFBLE1BQ0FpcEUsS0FBQTk3RCxNQUFBdEssS0FBQXlxQyxNQUFBMjdCLEtBQUE5N0QsT0FFQSxNQUFBeEwsSUFFQXpFLFNBQUFxL0IsZ0JBQUFuSixZQUFBdnpCLFNBSUEsT0FBQW9wRSxLQUFBOTdELE1BSUEsSUFBQW13QyxZQUVBLFNBQUF1ckIsU0FBQTE3RCxNQUVBLElBQUF5WSxJQUFBMDNCLFNBQUFud0MsTUFJQSxPQUhBeVksTUFDQUEsSUFBQTAzQixTQUFBbndDLE1BU0EsU0FBQUEsTUFJQSxJQUZBQSxLQUFBK3hELFVBQUEveEQsU0FFQWdoQyxNQUNBLE9BQUFoaEMsS0FHQSxJQUFBZzhELGFBQUFyaUUsRUFBQXEyQyxZQUFBbjJDLE9BRUEsS0FBQUYsS0FFQSxJQURBcWlFLGFBQUEsSUFBQWhzQixZQUFBcjJDLEdBQUEsSUFBQXFHLFFBQ0FnaEMsTUFDQSxPQUFBZzdCLGFBdEJBM3JCLENBQUFyd0MsT0FBQUEsTUFFQXlZLElBR0EsSUFBQXUzQixhQUFBLFNBQUEsTUFBQSxNQUVBaFAsTUFEQWp4QyxTQUFBNkIsY0FBQSxLQUNBb3ZDLE1Bb0JBLFNBQUFpN0IsV0FBQXZwRSxRQUFBMDFDLE1BQUFqeUIsU0FBQStsRCxRQUtBLFlBSkEsSUFBQS9sRCxXQUFBQSxTQUFBLFVBQ0EsSUFBQStsRCxTQUFBQSxPQUFBLFVBR0FyRCxVQUFBejVCLElBQUEyMEIsUUFBQXJoRSxTQUFBOEcsSUFBQSxTQUFBOUcsU0FBQSxPQUFBLElBQUFtbUUsVUFBQSxTQUFBbCtCLFFBQUFDLFFBRUEsSUFBQSxJQUFBNTZCLFFBQUFvb0MsTUFBQSxDQUNBLElBQUEvcEMsTUFBQTZpQyxJQUFBeHVDLFFBQUFzTixNQUNBLEtBQUEzQixPQUNBNmlDLElBQUF4dUMsUUFBQXNOLEtBQUEzQixPQUlBLElBQUFpM0MsTUFBQTNYLFdBQUEsV0FBQSxPQUFBb0ssUUFBQXIxQyxRQUFBLGtCQUFBeWpCLFVBRUF3bEIsS0FBQWpwQyxRQUFBLG1DQUFBLFNBQUFvbEUsS0FDQSxJQUFBam1FLEtBQUFpbUUsSUFBQWptRSxLQUVBMGxELGFBQUFqQyxPQUNBN2lELFlBQUFDLFFBQUEsaUJBQ0F3dUMsSUFBQXh1QyxTQUNBeXBFLHNCQUFBLEdBQ0FDLHNCQUFBLEdBQ0FDLDZCQUFBLEtBRUEsdUJBQUF4cUUsS0FBQStvQyxTQUFBRCxZQUNBLEVBQUEsU0FBQW05QixLQUNBLElBQUFyd0MsT0FBQXF3QyxJQUFBcndDLE9BRUEsT0FBQS8wQixVQUFBKzBCLFNBR0FreEIsU0FBQWptRCxRQUFBLGlCQUNBd3VDLElBQUF4dUMsUUFBQXloRSxRQUNBZ0ksc0JBQUFuakUsT0FBQTZHLEtBQUF1b0MsT0FBQTV1QyxJQUFBa2lFLFVBQUFoOEQsS0FBQSxLQUNBMDhELHNCQUFBam1ELFNBQUEsS0FDQWttRCw2QkFBQUgsUUFDQTl6QixhQU9BLElBQUFrMEIsWUFFQWhyRSxNQUFBMnFFLFdBRUF0ckUsS0FBQSxTQUFBK0IsU0FFQSxPQURBcTFDLFFBQUFyMUMsUUFBQSxpQkFDQW1tRSxVQUFBbCtCLFdBR0E0aEMsT0FBQSxTQUFBN3BFLFNBQ0FxMUMsUUFBQXIxQyxRQUFBLHVCQUdBOGdELFdBQUEsU0FBQTlnRCxTQUNBLE9BQUEwbUQsU0FBQTFtRCxRQUFBLG1CQUtBOHBFLGdCQUFBLGdCQUNBQyxtQkFBQSxzQkFFQSxTQUFBbG1CLFFBQUE3akQsUUFBQTJoRCxVQUFBbCtCLFNBQUF1bUQsT0FBQXI5QyxLQUNBLElBQUFzOUMsWUFBQS9qRSxVQUlBLFlBSEEsSUFBQXVkLFdBQUFBLFNBQUEsS0FHQTBpRCxVQUFBejVCLElBQUEyMEIsUUFBQXJoRSxTQUFBOEcsSUFBQSxTQUFBOUcsU0FBQSxPQUFBLElBQUFtbUUsVUFBQSxTQUFBbCtCLFFBQUFDLFFBRUEsR0FBQXdlLFNBQUExbUQsUUFBQStwRSxvQkFDQTVvQixzQkFBQSxXQUFBLE9BQUFnbEIsVUFBQWwrQixVQUFBSSxLQUFBLFdBQUEsT0FBQXdiLFFBQUE1OUMsV0FBQSxFQUFBZ2tFLGFBQUE1aEMsS0FBQUosUUFBQUMsZ0JBREEsQ0FPQSxJQUFBOC9CLElBQUFybUIsVUFBQSxJQUFBbW9CLGlCQUFBbjlDLElBQUEsUUFBQSxTQUVBa3pDLFdBQUFsZSxVQUFBbW9CLG1CQUVBRSxTQUNBaEMsS0FBQSx3QkFBQWdDLFFBR0FyOUMsTUFDQXE3QyxLQUFBLElBQUE4QixnQkFBQSxZQUtBcG5DLFFBRUF1RyxLQUFBanBDLFFBQUEsK0JBQUEsU0FBQW9sRSxLQUNBLElBR0E4RSxVQUFBLEVBRUEsb0JBTEE5RSxJQUFBam1FLE1BTUErb0MsU0FDQXhGLFVBRUF1RixVQUNBaytCLFVBQUFsK0IsVUFBQUksS0FBQSxXQUNBNmhDLFVBQUEsRUFDQXhuQyxXQUlBeWUsc0JBQUEsV0FDQStvQixXQUNBamtCLFNBQUFqbUQsUUFBQStwRSxvQkFFQTVvQixzQkFBQSxXQUFBLE9BQUFwaEQsWUFBQUMsUUFBQStwRSwyQkFJQSxFQUFBLFNBQUEzRSxLQUNBLElBQUFyd0MsT0FBQXF3QyxJQUFBcndDLE9BRUEsT0FBQS8wQixVQUFBKzBCLFNBR0F5WixJQUFBeHVDLFFBQUEsb0JBQUF5akIsU0FBQSxNQUNBd2lDLFNBQUFqbUQsUUFBQWdvRSxLQUVBLFNBQUF0bEMsUUFDQThMLElBQUF4dUMsUUFBQSxvQkFBQSxJQUNBK25FLGNBQUEvbkUsUUFBQThwRSxnQkFBQSxjQVFBLElBQUFocEIsV0FBQSxJQUFBNWdELE9BQUE0cEUsZ0JBQUEsaUJBQ0Fsb0IsV0FFQXVvQixHQUFBLFNBQUFucUUsUUFBQTJoRCxVQUFBbCtCLFNBQUF1bUQsUUFDQSxPQUFBbm1CLFFBQUE3akQsUUFBQTJoRCxVQUFBbCtCLFNBQUF1bUQsUUFBQSxJQUdBcjlDLElBQUEsU0FBQTNzQixRQUFBMmhELFVBQUFsK0IsU0FBQXVtRCxRQUNBLE9BQUFubUIsUUFBQTdqRCxRQUFBMmhELFVBQUFsK0IsU0FBQXVtRCxRQUFBLElBR0FscEIsV0FBQSxTQUFBOWdELFNBQ0EsT0FBQThnRCxXQUFBcndDLEtBQUFndUIsS0FBQXorQixRQUFBLFdBR0E2cEUsT0FBQSxTQUFBN3BFLFNBQ0FxMUMsUUFBQXIxQyxRQUFBLHFCQUtBLFNBQUF5QyxFQUFBOUMsU0FBQSt6QixTQUNBLE9BQUE0c0MsU0FBQTNnRSxVQUVBeXFFLE9BQUF6cUUsVUFDQXdoRSxPQUFBN3ZCLFNBQUEzeEMsV0FDQTA5QixLQUFBMTlCLFNBQUErekIsU0FIQXl0QyxPQUFBeGhFLFVBTUEsU0FBQTBxRSxHQUFBMXFFLFNBQUErekIsU0FDQSxPQUFBNHNDLFNBQUEzZ0UsVUFFQXlxRSxPQUFBenFFLFVBQ0EwaEUsUUFBQS92QixTQUFBM3hDLFdBQ0F3akUsUUFBQXhqRSxTQUFBK3pCLFNBSEEydEMsUUFBQTFoRSxVQU1BLFNBQUF5cUUsT0FBQTlLLEtBQ0EsTUFBQSxNQUFBQSxJQUFBLElBQUFBLElBQUFwN0QsTUFBQSxTQUdBLElBQUFvbUUsTUFDQXB2QixPQUFBLElBQUEsT0FBQSxTQUNBdUcsUUFBQSxJQUFBLE1BQUEsV0FHQSxTQUFBOG9CLFdBQUF2cUUsUUFBQSswQixPQUFBeTFDLFNBQUFDLGFBQUFDLFNBQUFDLGFBQUFDLEtBQUFDLFVBRUFMLFNBQUFNLE9BQUFOLFVBQ0FDLGFBQUFLLE9BQUFMLGNBRUEsSUFBQU0sU0FBQS9xRSxRQUFBd3FFLFNBQUF6MUMsT0FBQTAxQyxjQUVBLElBQUF6cUUsVUFBQSswQixPQUNBLE9BQUFnMkMsUUFHQSxJQUFBQyxJQUFBQyxjQUFBanJFLFNBQ0FrckUsVUFBQUQsY0FBQWwyQyxRQUNBc25CLFNBQUE2dUIsVUE0RUEsT0ExRUFDLE9BQUE5dUIsU0FBQW11QixTQUFBUSxLQUFBLEdBQ0FHLE9BQUE5dUIsU0FBQW91QixhQUFBUyxVQUFBLEdBRUFSLFNBQUFVLFdBQUFWLFNBQUFNLElBQUE5dkIsTUFBQTh2QixJQUFBdnBCLFFBQ0FrcEIsYUFBQVMsV0FBQVQsYUFBQU8sVUFBQWh3QixNQUFBZ3dCLFVBQUF6cEIsUUFFQWlwQixTQUFBLEdBQUFDLGFBQUEsRUFDQUQsU0FBQSxHQUFBQyxhQUFBLEVBRUF0dUIsU0FBQXFELE1BQUFnckIsU0FBQSxFQUNBcnVCLFNBQUF2ZixLQUFBNHRDLFNBQUEsRUFFQUcsU0FBQUksY0FBQUosVUFBQVEsU0FBQXJyRSxVQUVBNHFFLE1BQ0F2MkMsS0FBQWkyQyxLQUFBLFNBQUFsRixJQUFBOTZELE1BQ0EsSUFBQWl3QixJQUFBNnFDLElBQUEsR0FDQWtHLE1BQUFsRyxJQUFBLEdBQ0FtRyxVQUFBbkcsSUFBQSxHQUdBLElBQUEsSUFBQXdGLE1BQUF4SyxTQUFBd0ssS0FBQXJ3QyxLQUFBLENBSUEsSUFBQWl4QyxXQUFBaEIsU0FBQWp3QyxPQUFBK3dDLE9BQ0FOLElBQUExZ0UsTUFDQWtnRSxTQUFBandDLE9BQUFneEMsVUFDQVAsSUFBQTFnRSxNQUNBLEVBRUFxZ0UsYUFBQUYsYUFBQWx3QyxPQUFBK3dDLE1BQ0FKLFVBQUE1Z0UsTUFDQW1nRSxhQUFBbHdDLE9BQUFneEMsV0FDQUwsVUFBQTVnRSxNQUNBLEVBRUEsR0FBQSt4QyxTQUFBaXZCLE9BQUFULFNBQUFTLFFBQUFqdkIsU0FBQWl2QixPQUFBTixJQUFBMWdFLE1BQUF1Z0UsU0FBQVUsV0FBQSxDQUVBLElBQUFFLGFBQUFULElBQUExZ0UsTUFBQSxFQUNBb2hFLG1CQUFBLFdBQUFqQixhQUFBbHdDLE1BQUEyd0MsVUFBQTVnRSxNQUFBLEVBQUEsRUFFQSxXQUFBa2dFLFNBQUFqd0MsT0FDQXQwQixNQUFBd2xFLGFBQUFDLHFCQUNBemxFLE9BQUF3bEUsY0FBQUMsc0JBQ0F6bEUsTUFBQXVsRSxXQUFBYixlQUlBLFNBQUExa0UsTUFBQXVsRSxXQUFBYixjQUVBLElBQUFnQixPQUFBdHZCLFNBQUFpdkIsT0FBQUUsV0FBQWIsYUFBQSxFQUFBRCxTQUFBbndDLEtBRUEsR0FBQW94QyxRQUFBZCxTQUFBUyxRQUFBSyxPQUFBWCxJQUFBMWdFLE9BQUF1Z0UsU0FBQVUsV0FXQSxPQVZBbHZCLFNBQUFpdkIsT0FBQUssUUFFQSxVQUFBLFVBQUFybkUsUUFBQSxTQUFBbzNCLElBQ0FxdkMsUUFBQXJ2QyxJQUFBbkIsS0FBQWl4QyxXQUVBVCxRQUFBcnZDLElBQUFuQixPQUFBK3ZDLEtBQUFoZ0UsTUFBQSxHQUNBZ2dFLEtBQUFoZ0UsTUFBQSxHQUNBZ2dFLEtBQUFoZ0UsTUFBQSxHQUhBeWdFLFFBQUFydkMsSUFBQW5CLFFBTUEsS0FRQTdWLE9BQUExa0IsUUFBQXE4QyxVQUVBMHVCLFFBR0EsU0FBQXJtRCxPQUFBMWtCLFFBQUE0ckUsYUFJQSxHQUZBNXJFLFFBQUFtaEUsT0FBQW5oRSxVQUVBNHJFLFlBbUJBLE9BQUFYLGNBQUFqckUsU0FqQkEsSUFBQTZyRSxjQUFBbm5ELE9BQUExa0IsU0FDQWMsSUFBQTB0QyxJQUFBeHVDLFFBQUEsYUFFQSxPQUFBLE9BQUFzRSxRQUFBLFNBQUFnRyxNQUNBLEdBQUFBLFFBQUFzaEUsWUFBQSxDQUNBLElBQUFqZ0UsTUFBQTZpQyxJQUFBeHVDLFFBQUFzSyxNQUNBa2tDLElBQUF4dUMsUUFBQXNLLEtBQUFzaEUsWUFBQXRoRSxNQUFBdWhFLGNBQUF2aEUsTUFDQTQyRCxRQUFBLGFBQUFwZ0UsS0FBQSxTQUFBNkssTUFDQTB3QyxTQUFBcjhDLFNBQUFzSyxNQUNBcUIsV0FXQSxTQUFBcy9ELGNBQUFqckUsU0FJQSxJQW1CQXN1QyxNQUFBNFMsT0FuQkFra0IsSUFBQWlHLFNBRkFyckUsUUFBQW1oRSxPQUFBbmhFLFVBR0E4OEIsSUFBQXNvQyxJQUFBM1QsWUFDQS9SLEtBQUEwbEIsSUFBQTFULFlBRUEsR0FBQTcrQixTQUFBN3lCLFNBQUEsQ0FFQSxJQUFBeWhELE9BQUF6aEQsUUFBQThyRSxZQUNBNXdCLE1BQUFsN0MsUUFBQStyRSxXQUVBLE9BQ0FqdkMsSUFBQUEsSUFDQTRpQixLQUFBQSxLQUNBK0IsT0FBQUEsT0FDQXZHLE1BQUFBLE1BQ0E4bUIsT0FBQWxsQyxJQUFBMmtCLE9BQ0F2RixNQUFBd0QsS0FBQXhFLE9BTUE4cEIsVUFBQWhsRSxXQUNBc3VDLE1BQUE3UCxLQUFBeitCLFFBQUEsU0FDQWtoRCxPQUFBemlCLEtBQUF6K0IsUUFBQSxVQUVBeStCLEtBQUF6K0IsU0FDQXN1QyxPQUFBQSxPQUFBLElBQUEsNkJBQ0E0UyxPQUFBLFFBSUEsSUFBQXFRLEtBQUF2eEQsUUFBQXkvQyx3QkFNQSxPQUpBOTRDLFlBQUEybkMsUUFDQTdQLEtBQUF6K0IsU0FBQXN1QyxNQUFBQSxNQUFBNFMsT0FBQUEsVUFJQU8sT0FBQThQLEtBQUE5UCxPQUNBdkcsTUFBQXFXLEtBQUFyVyxNQUNBcGUsSUFBQXkwQixLQUFBejBCLElBQUFBLElBQ0E0aUIsS0FBQTZSLEtBQUE3UixLQUFBQSxLQUNBc2lCLE9BQUF6USxLQUFBeVEsT0FBQWxsQyxJQUNBb2YsTUFBQXFWLEtBQUFyVixNQUFBd0QsTUFJQSxTQUFBckQsU0FBQXI4QyxTQUdBLElBQUEwZ0MsT0FlQSxTQUFBMWdDLFNBRUEsSUFBQTBnQyxPQUFBeWdDLE9BQUFuaEUsU0FBQTJ4RCxhQUVBLEtBQUFqeEIsUUFBQSxXQUFBOE4sSUFBQTlOLE9BQUEsYUFDQUEsT0FBQUEsT0FBQWl4QixhQUdBLE9BQUFqeEIsUUFBQXNyQyxNQUFBaHNFLFNBdkJBMnhELENBRkEzeEQsUUFBQW1oRSxPQUFBbmhFLFVBR0E0eEQsYUFBQWx4QixTQUFBc3JDLE1BQUFoc0UsVUFBQTg4QixJQUFBLEVBQUE0aUIsS0FBQSxHQUFBaDdCLE9BQUFnYyxRQUNBMGtDLEtBQUEsTUFBQSxRQUFBTyxPQUFBLFNBQUFqd0IsTUFBQXByQyxNQUNBLElBQUEyaEUsWUFBQXZNLFFBQUFwMUQsTUFJQSxPQUhBb3JDLE1BQUFwckMsT0FBQXNuRCxhQUFBdG5ELE9BQ0E0MkQsUUFBQTF5QixJQUFBeHVDLFFBQUEsU0FBQWlzRSxlQUFBLElBQ0EvSyxRQUFBMXlCLElBQUE5TixPQUFBLFNBQUF1ckMsWUFBQSxXQUFBLEdBQ0F2MkIsT0FDQWh4QixPQUFBMWtCLFVBSUEsT0FBQTg4QixJQUhBc29DLElBQUF0b0MsSUFHQTRpQixLQUZBMGxCLElBQUExbEIsTUFnQkEsSUFBQStCLE9BQUEzRCxVQUFBLFVBQ0E1QyxNQUFBNEMsVUFBQSxTQUVBLFNBQUFBLFVBQUF4ekMsTUFDQSxJQUFBMmhFLFlBQUF2TSxRQUFBcDFELE1BQ0EsT0FBQSxTQUFBdEssUUFBQTJMLE9BSUEsR0FGQTNMLFFBQUFtaEUsT0FBQW5oRSxTQUVBMkcsWUFBQWdGLE9BQUEsQ0FFQSxHQUFBa25CLFNBQUE3eUIsU0FDQSxPQUFBQSxRQUFBLFFBQUFpc0UsYUFHQSxHQUFBMUwsV0FBQXZnRSxTQUFBLENBQ0EsSUFBQWt6QixJQUFBbHpCLFFBQUEwOEIsZ0JBQ0EsT0FBQWo3QixLQUFBME4sSUFBQStqQixJQUFBLFNBQUErNEMsYUFBQS80QyxJQUFBLFNBQUErNEMsY0FNQSxPQUZBdGdFLE1BQUEsVUFEQUEsTUFBQTZpQyxJQUFBeHVDLFFBQUFzSyxPQUNBdEssUUFBQSxTQUFBaXNFLGFBQUEvSyxRQUFBdjFELFFBQUEsR0FFQXVnRSxlQUFBNWhFLEtBQUF0SyxTQUlBd3VDLElBQUF4dUMsUUFBQXNLLEtBQUFxQixPQUFBLElBQUFBLE9BRUFBLE1BQUF1Z0UsZUFBQTVoRSxLQUFBdEssU0FBQSxLQURBLEtBU0EsU0FBQWtzRSxlQUFBNWhFLEtBQUF0SyxTQUNBLE1BQUEsZUFBQXd1QyxJQUFBeHVDLFFBQUEsYUFDQXNxRSxLQUFBaGdFLE1BQUF5QyxNQUFBLEdBQUFqRyxJQUFBNDRELFNBQUFpRyxPQUFBLFNBQUFoNkQsTUFBQXJCLE1BQUEsT0FBQXFCLE1BQ0F1MUQsUUFBQTF5QixJQUFBeHVDLFFBQUEsVUFBQXNLLE9BQ0E0MkQsUUFBQTF5QixJQUFBeHVDLFFBQUEsU0FBQXNLLEtBQUEsV0FDQSxHQUNBLEVBR0EsU0FBQTZnRSxPQUFBOXVCLFNBQUE4dkIsT0FBQW5CLElBQUFvQixRQUNBLzNDLEtBQUFpMkMsS0FBQSxTQUFBbEYsSUFBQTk2RCxNQUNBLElBQUFpd0IsSUFBQTZxQyxJQUFBLEdBQ0FrRyxNQUFBbEcsSUFBQSxHQUNBbUcsVUFBQW5HLElBQUEsR0FFQStHLE9BQUE1eEMsT0FBQWd4QyxVQUNBbHZCLFNBQUFpdkIsUUFBQU4sSUFBQTFnRSxNQUFBOGhFLE9BQ0EsV0FBQUQsT0FBQTV4QyxPQUNBOGhCLFNBQUFpdkIsUUFBQU4sSUFBQTFnRSxNQUFBOGhFLE9BQUEsS0FLQSxTQUFBdEIsT0FBQWhxRSxLQUVBLElBQUF1RCxFQUFBLG9CQUNBb1AsRUFBQSxvQkFZQSxPQVJBLEtBRkEzUyxLQUFBQSxLQUFBLElBQUErVCxNQUFBLE1BRUExTixTQUNBckcsSUFBQXVELEVBQUFvTSxLQUFBM1AsSUFBQSxJQUNBQSxJQUFBd3hCLFFBQUEsV0FDQTdlLEVBQUFoRCxLQUFBM1AsSUFBQSxLQUNBLFVBQUF3eEIsT0FBQXh4QixNQUNBLFNBQUEsWUFJQXVELEVBQUFBLEVBQUFvTSxLQUFBM1AsSUFBQSxJQUFBQSxJQUFBLEdBQUEsU0FDQTJTLEVBQUFBLEVBQUFoRCxLQUFBM1AsSUFBQSxJQUFBQSxJQUFBLEdBQUEsVUFJQSxTQUFBc3FFLFdBQUFuWCxRQUFBL1ksTUFBQXVHLFFBRUEsSUFBQTJqQixLQUFBblIsU0FBQSxJQUFBcC9DLE1BQUEsS0FDQXhRLEVBQUErZ0UsSUFBQSxHQUNBM3hELEVBQUEyeEQsSUFBQSxHQUVBLE9BQ0EvZ0UsRUFBQUEsRUFBQTY4RCxRQUFBNzhELElBQUE0N0QsU0FBQTU3RCxFQUFBLEtBQUE2MkMsTUFBQSxJQUFBLEdBQUEsRUFDQXpuQyxFQUFBQSxFQUFBeXRELFFBQUF6dEQsSUFBQXdzRCxTQUFBeHNELEVBQUEsS0FBQWd1QyxPQUFBLElBQUEsR0FBQSxHQUlBLFNBQUE0cUIsYUFBQXZyRSxLQUNBLE9BQUFBLEtBQ0EsSUFBQSxPQUNBLE1BQUEsUUFDQSxJQUFBLFFBQ0EsTUFBQSxPQUNBLElBQUEsTUFDQSxNQUFBLFNBQ0EsSUFBQSxTQUNBLE1BQUEsTUFDQSxRQUNBLE9BQUFBLEtBSUEsU0FBQXdyRSxTQUFBdHNFLFFBQUF1c0UsVUFBQUMsV0FBQUMsb0JBS0EsUUFKQSxJQUFBRixZQUFBQSxVQUFBLFFBQ0EsSUFBQUMsYUFBQUEsV0FBQSxJQUdBeEgsVUFBQWhsRSxTQUNBLE9BQUEsRUFJQSxJQUFBd3hELElBQUE2WixTQURBcnJFLFFBQUFtaEUsT0FBQW5oRSxVQUdBLEdBQUF5c0UsbUJBRUEsT0FBQTVLLGNBQUE3aEUsUUFBQXkvQyx5QkFDQTNpQixLQUFBeXZDLFVBQ0E3c0IsTUFBQThzQixXQUNBeEssT0FBQXVLLFVBQUE5cUIsT0FBQStQLEtBQ0F0VixNQUFBc3dCLFdBQUF0eEIsTUFBQXNXLE9BS0EsSUFBQTRULElBQUFzSCxlQUFBMXNFLFNBQ0Eyc0UsTUFBQXZILElBQUEsR0FDQXdILE9BQUF4SCxJQUFBLEdBQ0F0b0MsSUFBQTAwQixJQUFBQyxZQUNBL1IsS0FBQThSLElBQUFFLFlBRUEsT0FBQW1RLGVBRUEva0MsSUFBQTZ2QyxNQUNBanRCLEtBQUFrdEIsT0FDQTVLLE9BQUEySyxNQUFBM3NFLFFBQUF3dUQsYUFDQXRTLE1BQUF5d0IsTUFBQTNzRSxRQUFBdThDLGNBR0F6ZixJQUFBQSxJQUFBeXZDLFVBQ0E3c0IsS0FBQUEsS0FBQThzQixXQUNBeEssT0FBQWxsQyxJQUFBeXZDLFVBQUE5cUIsT0FBQStQLEtBQ0F0VixNQUFBd0QsS0FBQThzQixXQUFBdHhCLE1BQUFzVyxPQU9BLFNBQUFxYixhQUFBN3NFLFFBQUE4c0UsY0FJQSxRQUhBLElBQUFBLGVBQUFBLGFBQUEsSUFHQTlILFVBQUFobEUsU0FDQSxPQUFBLEVBS0EsSUFBQXd4RCxJQUFBNlosU0FGQXJyRSxRQUFBbWhFLE9BQUFuaEUsVUFHQWt6QixJQUFBNjVDLFdBQUEvc0UsU0FDQWd0RSxTQUFBaHRFLFFBQUF3dUQsYUFBQXNlLGFBRUFod0MsSUFEQTR2QyxlQUFBMXNFLFNBQ0EsR0FDQWl0RSxHQUFBeHJCLE9BQUErUCxLQUNBMGIsR0FBQUQsR0FBQXhyRSxLQUFBd0ssSUFBQSxFQUFBNndCLElBQUFtd0MsSUFDQTVuRCxLQUFBNWpCLEtBQUEwTixJQUFBLEVBQUE4OUQsSUFBQXhyQixPQUFBdnVCLEtBQUE0NUMsY0FBQWh3QyxJQUFBa3dDLFlBRUEsT0FBQXBMLE9BQUFzTCxHQUFBMWIsSUFBQUMsWUFBQTMwQixPQUFBb3dDLElBQUFGLFVBQUEzbkQsS0FBQTRuRCxHQUFBNW5ELEtBQUEsS0FBQSxLQUFBLEtBR0EsU0FBQXFuRCxlQUFBMXNFLFNBQ0EsSUFBQTBrQixRQUFBLEVBQUEsR0FFQSxHQUtBLEdBSEFBLE9BQUEsSUFBQTFrQixRQUFBbXRFLFVBQ0F6b0QsT0FBQSxJQUFBMWtCLFFBQUFvdEUsV0FFQSxVQUFBNStCLElBQUF4dUMsUUFBQSxZQUFBLENBQ0EsSUFBQXd4RCxJQUFBNlosU0FBQXJyRSxTQUdBLE9BRkEwa0IsT0FBQSxJQUFBOHNDLElBQUFDLFlBQ0Evc0MsT0FBQSxJQUFBOHNDLElBQUFFLFlBQ0FodEMsY0FHQTFrQixRQUFBQSxRQUFBMnhELGNBRUEsT0FBQWp0QyxPQUdBLFNBQUEybUQsU0FBQXJyRSxTQUNBLE9BQUE2eUIsU0FBQTd5QixTQUFBQSxRQUFBK3NFLFdBQUEvc0UsU0FBQTY4QixZQUdBLFNBQUFrd0MsV0FBQS9zRSxTQUNBLE9BQUFtaEUsT0FBQW5oRSxTQUFBKzZCLGNBR0EsU0FBQWl4QyxNQUFBaHNFLFNBQ0EsT0FBQStzRSxXQUFBL3NFLFNBQUEwOEIsZ0JBS0EsSUFBQTJ3QyxNQUFBLFFBQUE1dUMsS0FBQXBoQyxTQUFBcS9CLGdCQUFBLE9BRUE0d0MsZUFBQSxpQkFBQS91RSxPQUNBZ3ZFLGlCQUFBaHZFLE9BQUFpdkUsYUFDQUMsU0FBQUgsZ0JBQ0EvdUUsT0FBQW12RSxlQUFBcndFLG9CQUFBcXdFLGVBQ0FDLFVBQUFDLGVBRUFDLFlBQUFKLFNBQUEsY0FBQUgsZUFBQSxhQUFBLGVBQUEsWUFDQVEsWUFBQUwsU0FBQSxjQUFBSCxlQUFBLFlBQUEsZUFBQSxZQUNBUyxVQUFBTixTQUFBLFlBQUFILGVBQUEsV0FBQSxhQUFBLFVBQ0FVLGFBQUFQLFVBQUFGLGlCQUFBLGVBQUEsYUFDQVUsYUFBQVIsVUFBQUYsaUJBQUEsZUFBQSxhQVFBVyxTQUVBQyxTQUNBQyxVQUVBQyxLQUFBLFNBQUFDLE1BR0EsT0FGQWxzRSxLQUFBK3JFLE1BQUEvbUUsS0FBQWtuRSxNQUNBQyxnQkFDQUQsTUFHQUUsTUFBQSxTQUFBRixNQUdBLE9BRkFsc0UsS0FBQWdzRSxPQUFBaG5FLEtBQUFrbkUsTUFDQUMsZ0JBQ0FELE1BR0FHLE1BQUEsU0FBQUgsTUFDQSxPQUFBSSxTQUFBdHNFLEtBQUErckUsTUFBQUcsT0FBQUksU0FBQXRzRSxLQUFBZ3NFLE9BQUFFLE9BR0FLLE1BQUEsV0FFQUMsU0FBQXhzRSxLQUFBK3JFLE9BQ0FTLFNBQUF4c0UsS0FBQWdzRSxPQUFBejVDLE9BQUEsRUFBQXZ5QixLQUFBZ3NFLE9BQUFqbkUsU0FFQS9FLEtBQUF5c0UsV0FBQSxHQUVBenNFLEtBQUErckUsTUFBQWhuRSxRQUFBL0UsS0FBQWdzRSxPQUFBam5FLFNBQ0FvbkUsa0JBT0EsU0FBQUEsZ0JBQ0FMLFFBQUFXLFlBQ0FYLFFBQUFXLFdBQUEsRUFDQTF0QixzQkFBQStzQixRQUFBUyxNQUFBanNCLEtBQUF3ckIsV0FJQSxTQUFBVSxTQUFBRSxPQUVBLElBREEsSUFBQVIsS0FDQUEsS0FBQVEsTUFBQWhpRCxTQUNBd2hELE9BSUEsU0FBQUksU0FBQXorRCxNQUFBOCtELE1BQ0EsSUFBQXhpRCxNQUFBdGMsTUFBQTJELFFBQUFtN0QsTUFDQSxTQUFBeGlELFNBQUF0YyxNQUFBMGtCLE9BQUFwSSxNQUFBLEdBR0EsU0FBQXlpRCxnQkF1RkEsU0FBQUMsTUFBQTNuRSxFQUFBQyxHQUNBLE9BQUFBLEVBQUFrTSxFQUFBbk0sRUFBQW1NLElBQUFsTSxFQUFBbEQsRUFBQWlELEVBQUFqRCxHQXRGQTJxRSxhQUFBem9FLFdBRUEyb0UsYUFDQTd5QixTQUFBLEtBRUExb0IsS0FBQSxXQUNBLElBQUE4dUMsT0FBQXJnRSxLQUdBQSxLQUFBOHNFLGFBQ0E5c0UsS0FBQWk2QyxTQUFBLEtBRUEsSUFBQTh5QixTQUFBLEVBQ0Evc0UsS0FBQWt3RCxPQUFBamdCLEdBQUFoMUMsU0FBQSxZQUFBLFNBQUF5RSxHQUVBcXRFLFVBSUFsa0MsV0FBQSxXQUVBLElBQUExaUIsS0FBQWxvQixLQUFBRyxNQUVBMkcsT0FEQXM3RCxPQUFBeU0sVUFDQS9uRSxPQUVBQSxRQUFBb2hCLEtBQUFrNkMsT0FBQXlNLFVBQUEvbkUsT0FBQSxHQUFBb2hCLEtBQUEsS0FDQWs2QyxPQUFBeU0sVUFBQXY2QyxPQUFBLEVBQUF4dEIsUUFHQXM3RCxPQUFBeU0sVUFBQTluRSxNQUFBbWhCLEtBQUFBLEtBQUFsa0IsRUFBQXZDLEVBQUEyMEMsTUFBQWhqQyxFQUFBM1IsRUFBQTQwQyxRQUVBK3JCLE9BQUF5TSxVQUFBL25FLE9BQUEsR0FDQXM3RCxPQUFBeU0sVUFBQXBpRCxRQUdBcWlELFNBQUEsR0FDQSxHQUVBQSxTQUFBLE1BS0F0RixPQUFBLFdBQ0F6bkUsS0FBQWt3RCxRQUNBbHdELEtBQUFrd0QsVUFJQThjLFFBQUEsU0FBQXI2QyxRQUVBLEdBQUEzeUIsS0FBQThzRSxVQUFBL25FLE9BQUEsRUFDQSxPQUFBLEVBR0EsSUFBQXM1QyxFQUFBLzdCLE9BQUFxUSxRQUNBczZDLFlBQUFqdEUsS0FBQThzRSxVQUFBOXNFLEtBQUE4c0UsVUFBQS9uRSxPQUFBLEdBRUFtb0UsUUFEQWx0RSxLQUFBOHNFLFVBQ0EsR0FFQSxHQUFBenVCLEVBQUFmLE1BQUEydkIsWUFBQWhyRSxHQUFBZ3JFLFlBQUFockUsR0FBQW84QyxFQUFBdkUsT0FBQXVFLEVBQUEzakIsS0FBQXV5QyxZQUFBNTdELEdBQUE0N0QsWUFBQTU3RCxHQUFBZ3RDLEVBQUF1aEIsT0FDQSxPQUFBLEVBR0EsSUFBQXVOLFVBQ0FsckUsRUFBQW84QyxFQUFBZixLQUFBanNDLEVBQUFndEMsRUFBQTNqQixNQUFBejRCLEVBQUFvOEMsRUFBQXZFLE1BQUF6b0MsRUFBQWd0QyxFQUFBdWhCLFdBQ0EzOUQsRUFBQW84QyxFQUFBdkUsTUFBQXpvQyxFQUFBZ3RDLEVBQUEzakIsTUFBQXo0QixFQUFBbzhDLEVBQUFmLEtBQUFqc0MsRUFBQWd0QyxFQUFBdWhCLFVBWUEsT0FUQXZoQixFQUFBdkUsT0FBQW16QixZQUFBaHJFLElBQUFvOEMsRUFBQWYsTUFBQTJ2QixZQUFBaHJFLEdBQ0FrckUsT0FBQSxHQUFBN25DLFVBQ0E2bkMsT0FBQSxHQUFBN25DLFdBQ0ErWSxFQUFBdWhCLFFBQUFxTixZQUFBNTdELEVBQ0E4N0QsT0FBQSxHQUFBN25DLFVBQ0ErWSxFQUFBM2pCLEtBQUF1eUMsWUFBQTU3RCxHQUNBODdELE9BQUEsR0FBQTduQyxhQUdBNm5DLE9BQUE1SixPQUFBLFNBQUE1bEQsT0FBQW1pRCxPQUNBLE9BQUFuaUQsUUFBQWt2RCxNQUFBSyxRQUFBcE4sTUFBQSxJQUFBK00sTUFBQUksWUFBQW5OLE1BQUEsS0FBQStNLE1BQUFLLFFBQUFwTixNQUFBLElBQUErTSxNQUFBSSxZQUFBbk4sTUFBQSxNQUNBLEtBU0EsSUFBQXNOLFVBMkVBLFNBQUFDLFlBQUFDLFVBQUFDLFNBQUFDLElBQ0EsT0FBQUosT0FBQXYwQixTQUNBMXRDLFdBQUFtaUUsV0FDQUEsVUFBQWpwRSxLQUFBbXBFLEdBQUFBLElBQ0FGLFVBQ0FuaUUsV0FBQW9pRSxVQUNBQSxTQUFBbHBFLEtBQUFtcEUsR0FBQUEsSUFDQUQsVUEvRUFILE9BQUEzaUUsS0FDQTJpRSxPQUFBMzhCLE9BQ0EyOEIsT0FBQTc3QyxLQUNBNjdDLE9BQUFLLFFBQ0FMLE9BQUFNLGNBQ0FOLE9BQUFPLFVBQ0FQLE9BQUFocEMsTUFDQWdwQyxPQUFBUSxpQkFDQVIsT0FBQVMsYUFDQVQsT0FBQVUsUUFBQSxTQUFBUixVQUFBQyxVQUlBLE9BRkFELFVBQUFBLFlBQUF2cEUsUUFBQXVwRSxZQUFBQSxXQUFBQSxVQUVBQyxTQUNBRCxVQUNBQSxVQUFBcDlDLE9BQUFxOUMsVUFDQXhwRSxRQUFBd3BFLFVBQ0FBLFVBQ0FBLFVBQ0FELFdBSUFGLE9BQUFXLE9BQUEsU0FBQVQsVUFBQUMsVUFDQSxPQUFBSCxPQUFBM2lFLEtBQUE2aUUsVUFBQW5pRSxXQUFBb2lFLFdBQUF0QixLQUFBc0IsVUFBQUEsV0FJQUgsT0FBQTk1QixNQUFBLFNBQUFnNkIsVUFBQUMsVUFTQSxPQVBBeHBFLFFBQUF3cEUsWUFDQUEsU0FBQUEsU0FBQWhLLE9BQUEsU0FBQWg2RCxNQUFBbUIsS0FFQSxPQURBbkIsTUFBQW1CLEtBQUE4c0IsT0FDQWp1QixZQUlBNmpFLE9BQUFZLFFBQUFWLFVBQUFDLFdBSUFILE9BQUF2MEIsU0FDQXUwQixPQUFBWSxRQUFBLFNBQUFWLFVBQUFDLFVBQ0EsT0FBQUEsU0FDQUQsVUFDQWpPLFVBQUFpTyxVQUFBQyxVQUNBQSxTQUNBRCxXQUlBRixPQUFBanRFLEtBQUEsU0FBQW10RSxVQUFBQyxTQUFBQyxJQUVBLE9BQUFBLEdBZ0JBSCxZQUFBQyxVQUFBQyxTQUFBQyxJQWRBRCxTQUlBRCxVQUlBLFNBQUFFLElBQ0EsT0FBQUgsWUFBQUMsVUFBQUMsU0FBQUMsS0FKQUQsU0FKQUQsV0E0QkEsSUFBQVcsYUFBQSxTQUFBWCxVQUFBQyxVQUNBLE9BQUFocEUsWUFBQWdwRSxVQUFBRCxVQUFBQyxVQUdBLFNBQUFXLGFBQUE1dkMsT0FBQTZ2QyxNQUFBWCxJQUVBLElBQUFoN0MsV0FVQSxHQVJBcm5CLFdBQUFnakUsU0FDQUEsTUFBQUEsTUFBQTM3QyxTQUdBMjdDLE1BQUFDLFVBQ0E5dkMsT0FBQTR2QyxhQUFBNXZDLE9BQUE2dkMsTUFBQUMsUUFBQVosS0FHQVcsTUFBQUUsT0FDQSxJQUFBLElBQUF4cEUsRUFBQSxFQUFBK1gsRUFBQXV4RCxNQUFBRSxPQUFBdHBFLE9BQUFGLEVBQUErWCxFQUFBL1gsSUFDQXk1QixPQUFBNHZDLGFBQUE1dkMsT0FBQTZ2QyxNQUFBRSxPQUFBeHBFLEdBQUEyb0UsSUFJQSxJQUFBLElBQUE5aUUsT0FBQTR6QixPQUNBZ3dDLFNBQUE1akUsS0FHQSxJQUFBLElBQUE2akUsU0FBQUosTUFDQS85QyxPQUFBa08sT0FBQWl3QyxRQUNBRCxTQUFBQyxPQUlBLFNBQUFELFNBQUE1akUsS0FDQThuQixRQUFBOW5CLE1BQUEwaUUsT0FBQTFpRSxNQUFBdWpFLGNBQUEzdkMsT0FBQTV6QixLQUFBeWpFLE1BQUF6akUsS0FBQThpRSxJQUdBLE9BQUFoN0MsUUFHQSxTQUFBZzhDLGFBQUFoOEMsUUFBQS9uQixNQUNBLElBQUF4QixTQUVBLElBQUF3QixPQUFBQSxTQUVBLElBRUEsT0FBQStuQixRQUVBaXJDLFdBQUFqckMsUUFBQSxLQUNBNXhCLEtBQUF5cUMsTUFBQTdZLFNBQ0EvbkIsS0FBQTFGLFNBQUFpNUQsU0FBQXhyQyxRQUFBLE9BQ0F2cEIsUUFBQXdCLEtBQUEsSUFBQStuQixRQUFBdnBCLEtBQ0F1cEIsUUFBQS9mLE1BQUEsS0FBQTh3RCxPQUFBLFNBQUEvd0MsUUFBQW9iLFFBQ0EsSUFBQW8xQixJQUFBcDFCLE9BQUFuN0IsTUFBQSxTQUNBL0gsSUFBQXM0RCxJQUFBLEdBQ0F6NUQsTUFBQXk1RCxJQUFBLEdBSUEsT0FIQXQ0RCxNQUFBbkcsWUFBQWdGLFNBQ0FpcEIsUUFBQTluQixJQUFBNG9CLFFBQUEvcEIsTUFBQStwQixRQUVBZCxnQkFHQSxNQUFBOXlCLEdBQ0EsVUFLQSxJQUFBd0IsR0FBQSxFQUVBdXRFLE9BQUEsU0FBQW4xQyxJQUNBdDVCLEtBQUFrQixLQUFBQSxHQUNBbEIsS0FBQXM1QixHQUFBeWxDLE9BQUF6bEMsS0FxSEEsU0FBQW8xQyxLQUFBcDFDLEdBQUFxMUMsS0FDQSxJQUNBcjFDLEdBQUFzMUMsY0FBQUMsWUFBQWp1RSxLQUFBQyxVQUFBdytELFFBQUFodkIsTUFBQSxXQUFBcytCLE1BQUEsS0FDQSxNQUFBanZFLEtBckhBK3VFLE9BQUF0cUUsVUFBQTJxRSxRQUFBLFdBQ0EsT0FBQTl1RSxLQUFBK3VFLGFBQUEvdUUsS0FBQWd2RSxXQUFBaHZFLEtBQUFpdkUsV0FHQVIsT0FBQXRxRSxVQUFBOHFFLFFBQUEsV0FDQSxNQUFBLFVBQUFqdkUsS0FBQXM1QixHQUFBcXBDLFNBR0E4TCxPQUFBdHFFLFVBQUErcUUsU0FBQSxXQUNBLE1BQUEsV0FBQWx2RSxLQUFBczVCLEdBQUFxcEMsU0FHQThMLE9BQUF0cUUsVUFBQTRxRSxVQUFBLFdBQ0EsT0FBQS91RSxLQUFBa3ZFLGNBQUFsdkUsS0FBQXM1QixHQUFBdDhCLElBQUE4RSxNQUFBLCtFQUdBMnNFLE9BQUF0cUUsVUFBQTZxRSxRQUFBLFdBQ0EsT0FBQWh2RSxLQUFBa3ZFLGNBQUFsdkUsS0FBQXM1QixHQUFBdDhCLElBQUE4RSxNQUFBLDBCQUdBMnNFLE9BQUF0cUUsVUFBQWdyRSxVQUFBLFdBQ0EsSUFBQTlPLE9BQUFyZ0UsS0FHQSxHQUFBQSxLQUFBb2tDLE1BQ0EsT0FBQXBrQyxLQUFBb2tDLE1BR0EsSUFHQWdyQyxPQUhBQyxRQUFBcnZFLEtBQUErdUUsWUFDQU8sTUFBQXR2RSxLQUFBZ3ZFLFVBSUEsT0FBQUssU0FBQUMsTUFFQXR2RSxLQUFBb2tDLE1BQUEsSUFBQTIvQixVQUFBLFNBQUFsK0IsU0FxRkEsSUFBQXk1QixHQW5GQXo0QixLQUFBdzVCLE9BQUEvbUMsR0FBQSxPQUFBLFdBQ0EsR0FBQSsxQyxRQUFBLENBQ0EsSUFBQW5NLFNBQUEsV0FBQSxPQUFBd0wsS0FBQXJPLE9BQUEvbUMsSUFBQStXLE1BQUEsWUFBQW52QyxHQUFBbS9ELE9BQUFuL0QsTUFDQWt1RSxPQUFBcndFLFlBQUFta0UsU0FBQSxLQUNBQSxlQStFQTVELEdBM0VBLFNBQUFpUSxTQUFBLE9BQUFGLFNBQUFFLFFBQUFydUUsS0FBQW0vRCxPQUFBbi9ELElBQUEsWUFBQXF1RSxRQUFBbC9CLE9BQUFpL0IsT0FBQXpRLE9BQUEwUSxRQUFBQyxhQUFBblAsT0FBQW4vRCxJQTZFQSxJQUFBNmlFLFVBQUEsU0FBQWwrQixTQUVBZ0IsS0FBQTFxQyxPQUFBLFVBQUEsU0FBQWk3QixFQUFBbTRDLFNBQUEsT0FBQTFwQyxRQUFBMHBDLFdBQUEsRUFBQSxTQUFBdk0sS0FDQSxJQUFBdU0sUUFBQXZNLElBQUE3aUUsS0FHQSxHQUFBb3ZFLFNBQUFyUixTQUFBcVIsU0FBQSxDQUlBLElBQ0FBLFFBQUEzdUUsS0FBQXlxQyxNQUFBa2tDLFNBQ0EsTUFBQTd2RSxHQUNBLE9BR0EsT0FBQTZ2RSxTQUFBalEsR0FBQWlRLGVBNUZBdHBDLEtBQUEsV0FDQUosVUFDQXVwQyxRQUFBbndFLGNBQUFtd0UsVUFHQS95QyxLQUFBZ2tDLE9BQUEvbUMsR0FBQSxNQUFBK21DLE9BQUEvbUMsR0FBQSxLQUFBMGtDLFNBQUFxQyxPQUFBL21DLEdBQUF0OEIsSUFBQSxLQUFBLElBQUEsTUFBQXF5RSxRQUFBLGdCQUFBLG1CQUFBaFAsT0FBQSxPQU1BMEQsVUFBQWwrQixXQUlBNG9DLE9BQUF0cUUsVUFBQXNyRSxLQUFBLFdBQ0EsSUFBQXBQLE9BQUFyZ0UsS0FHQSxHQUFBQSxLQUFBOHVFLFVBSUEsR0FBQTl1RSxLQUFBa3ZFLFdBQ0FsdkUsS0FBQW12RSxZQUFBbHBDLEtBQUEsV0FBQSxPQUFBeW9DLEtBQUFyTyxPQUFBL21DLElBQUE3ckIsS0FBQSxZQUFBdk4sT0FBQSxnQkFDQSxHQUFBRixLQUFBaXZFLFVBQ0EsSUFDQSxJQUFBanBDLFFBQUFobUMsS0FBQXM1QixHQUFBbTJDLE9BRUF6cEMsU0FDQUEsUUFBQXNCLE1BQUFwVSxNQUVBLE1BQUF4ekIsTUFJQSt1RSxPQUFBdHFFLFVBQUF1ckUsTUFBQSxXQUNBLElBQUFyUCxPQUFBcmdFLEtBR0FBLEtBQUE4dUUsWUFJQTl1RSxLQUFBa3ZFLFdBQ0FsdkUsS0FBQW12RSxZQUFBbHBDLEtBQUEsV0FBQSxPQUFBeW9DLEtBQUFyTyxPQUFBL21DLElBQUE3ckIsS0FBQSxhQUFBdk4sT0FBQSxZQUNBRixLQUFBaXZFLFdBQ0FqdkUsS0FBQXM1QixHQUFBbzJDLFVBSUFqQixPQUFBdHFFLFVBQUF3ckUsS0FBQSxXQUNBLElBQUF0UCxPQUFBcmdFLEtBR0FBLEtBQUE4dUUsWUFJQTl1RSxLQUFBa3ZFLFdBQ0FsdkUsS0FBQW12RSxZQUFBbHBDLEtBQUEsV0FBQSxPQUFBeW9DLEtBQUFyTyxPQUFBL21DLElBQUE3ckIsS0FBQSxPQUFBdk4sT0FBQSxZQUFBcUosTUFBQSxNQUNBdkosS0FBQWl2RSxZQUNBanZFLEtBQUFzNUIsR0FBQXMyQyxPQUFBLEVBQ0F2ekMsS0FBQXI4QixLQUFBczVCLEdBQUEsUUFBQSxPQTJDQSxJQUFBdTJDLGFBQUFDLGFBQUFDLFdBQUFDLFFBQUFDLFNBV0EsU0FBQUMsWUFDQUwsY0FBQXB0QixhQUFBb3RCLGNBQ0FDLGNBQUFydEIsYUFBQXF0QixjQUNBQyxZQUFBdHRCLGFBQUFzdEIsWUFDQUYsYUFBQUMsYUFBQUMsV0FBQSxLQUNBRSxTQUdBN3JDLE1BQUEsV0FFQTZMLEdBQUFoMUMsU0FBQSxRQUFBLFdBQUEsT0FBQSswRSxTQUFBLElBQUEsR0FFQS8vQixHQUFBaDFDLFNBQUF3d0UsWUFBQSxTQUFBL3JFLEdBRUEsSUFBQWl6QixPQUFBanpCLEVBQUFpekIsT0FDQXF3QyxJQUFBbU4sU0FBQXp3RSxHQUNBdUMsRUFBQStnRSxJQUFBL2dFLEVBQ0FvUCxFQUFBMnhELElBQUEzeEQsRUFDQWpULElBQUFILEtBQUFHLE1BQ0FyQixLQUFBcXpFLFFBQUExd0UsRUFBQTNDLE1BRUFrekUsTUFBQWx6RSxNQUFBa3pFLE1BQUFsekUsT0FBQUEsT0FJQWt6RSxNQUFBMzJDLEdBQUEsWUFBQTNHLE9BQUFBLE9BQUFBLE9BQUF6QixXQUVBMitDLGNBQUFwdEIsYUFBQW90QixjQUVBSSxNQUFBSSxHQUFBcHVFLEVBQ0FndUUsTUFBQUssR0FBQWovRCxFQUVBNCtELE1BQUE1OUMsTUFBQWowQixJQUFBNnhFLE1BQUE1OUMsTUFBQSxNQUNBNDlDLFVBR0FBLE1BQUFsekUsS0FBQUEsS0FDQWt6RSxNQUFBNTlDLEtBQUFqMEIsSUFFQTR4RSxRQUFBdHdFLEVBQUF5QyxPQUFBLEtBSUE4dEMsR0FBQWgxQyxTQUFBeXdFLFlBQUEsU0FBQWhzRSxHQUVBLElBQUFBLEVBQUE4ekMsaUJBQUEsQ0FJQSxJQUFBd3ZCLElBQUFtTixTQUFBendFLEdBQ0F1QyxFQUFBK2dFLElBQUEvZ0UsRUFDQW9QLEVBQUEyeEQsSUFBQTN4RCxFQUVBNCtELE1BQUFNLEdBQUF0dUUsRUFDQWd1RSxNQUFBTyxHQUFBbi9ELEtBSUE0K0IsR0FBQWgxQyxTQUFBMHdFLFVBQUEsU0FBQTNJLEtBQ0EsSUFBQWptRSxLQUFBaW1FLElBQUFqbUUsS0FDQTQxQixPQUFBcXdDLElBQUFyd0MsT0FHQXM5QyxNQUFBbHpFLE9BQUFxekUsUUFBQXJ6RSxRQUtBa3pFLE1BQUFNLElBQUFseEUsS0FBQTBLLElBQUFrbUUsTUFBQUksR0FBQUosTUFBQU0sSUFBQSxJQUFBTixNQUFBTyxJQUFBbnhFLEtBQUEwSyxJQUFBa21FLE1BQUFLLEdBQUFMLE1BQUFPLElBQUEsR0FFQVYsYUFBQWpuQyxXQUFBLFdBL0VBLElBQUFtNkIsSUFDQXFOLEdBQ0FFLEdBQ0FELEdBQ0FFLEdBNEVBUCxNQUFBMzJDLEtBQ0EyWixRQUFBZzlCLE1BQUEzMkMsR0FBQSxTQUNBMlosUUFBQWc5QixNQUFBMzJDLEdBQUEsU0FqRkErMkMsSUFEQXJOLElBa0ZBaU4sT0FqRkFJLEdBQ0FFLEdBQUF2TixJQUFBdU4sR0FDQUQsR0FBQXROLElBQUFzTixHQUNBRSxHQUFBeE4sSUFBQXdOLEdBRUFueEUsS0FBQTBLLElBQUFzbUUsR0FBQUUsS0FBQWx4RSxLQUFBMEssSUFBQXVtRSxHQUFBRSxJQUFBSCxHQUFBRSxHQUFBLEVBQUEsT0FBQSxRQUFBRCxHQUFBRSxHQUFBLEVBQUEsS0FBQSxVQThFQVAsV0FJQSxTQUFBQSxPQUVBRixXQUFBbG5DLFdBQUEsV0FBQSxPQUFBb0ssUUFBQWc5QixNQUFBMzJDLEdBQUEsU0FHQTIyQyxNQUFBMzJDLElBQUEsWUFBQXY4QixNQUFBZ21FLE9BQUFwd0MsT0FBQXM5QyxNQUFBMzJDLE1BQ0F1MkMsYUFBQWhuQyxXQUFBLFdBQ0FnbkMsYUFBQSxLQUNBSSxNQUFBMzJDLEtBQUEwMkMsU0FDQS84QixRQUFBZzlCLE1BQUEzMkMsR0FBQSxTQUVBMjJDLFVBQ0EsT0FJQUEsWUFLQWhnQyxHQUFBaDFDLFNBQUEsY0FBQWkxRSxXQUNBamdDLEdBQUE5ekMsT0FBQSxTQUFBK3pFLGFBSUEsSUFBQU8sVUFBQSxFQUtBLFNBQUFDLFFBQUFoeEUsR0FDQSxPQUFBK3dFLFVBQUEsVUFBQS93RSxFQUFBdTFDLFlBR0EsU0FBQWs3QixTQUFBendFLEdBQ0EsSUFBQTQxQyxRQUFBNTFDLEVBQUE0MUMsUUFDQXRCLGVBQUF0MEMsRUFBQXMwQyxlQUNBZ3ZCLElBQUExdEIsU0FBQUEsUUFBQSxJQUFBdEIsZ0JBQUFBLGVBQUEsSUFBQXQwQyxFQUlBLE9BQUF1QyxFQUhBK2dFLElBQUEzdUIsTUFHQWhqQyxFQUZBMnhELElBQUExdUIsT0FLQSxTQUFBODdCLFFBQUFyekUsTUFDQSxPQUFBQSxLQUFBNE4sTUFBQSxFQUFBLEdBdU9BLFNBQUFnbUUsaUJBQUFqUSxXQUNBLFNBQUFqRCxXQUFBaUQsVUFBQSxTQUFBakQsV0FBQWlELFVBQUEsY0FDQXRELFNBQUFzRCxVQUFBM2lFLFFBQUEsV0FBQSxJQUFBQSxRQUFBLE1BQUEsS0E1UEFreUMsR0FBQWgxQyxTQUFBLGFBQUEsV0FBQSxPQUFBdzFFLFVBQUEsSUFBQSxHQUNBeGdDLEdBQUFoMUMsU0FBQSxRQUFBLFdBQUF3MUUsVUFBQSxJQUNBeGdDLEdBQUFoMUMsU0FBQSxjQUFBLFdBQUEsT0FBQXcxRSxVQUFBLElBQUEsR0F3Z0NBLElBQUFseUUsTUFBQSxTQUFBaTBCLFNBQ0F4eUIsS0FBQTR3RSxNQUFBcCtDLFVBR0FqMEIsTUFBQXN5RSxLQXQvQkEzc0UsT0FBQTRzRSxRQUNBeHdFLEtBQUFBLEtBQ0Fva0UsU0FBQUEsU0FDQXlDLFdBQUFBLFdBQ0FLLFdBQUFBLFdBQ0EvbEIsUUFBQUEsUUFDQWpDLFVBQUFBLFVBQ0FuakIsS0FBQUEsS0FDQWtrQyxRQUFBQSxRQUNBemQsV0FBQUEsV0FDQTJkLFdBQUFBLFdBQ0F0Z0UsS0FBQUEsS0FDQTBqRCxTQUFBQSxTQUNBbG1ELFlBQUFBLFlBQ0Fnb0UsY0FBQUEsY0FDQUUsYUFBQUEsYUFDQXZoQixTQUFBQSxTQUNBSixZQUFBQSxZQUNBN2pELEVBQUFBLEVBQ0E0bkUsR0FBQUEsR0FDQUUsV0FBQUEsV0FDQTdsRCxPQUFBQSxPQUNBMjNCLFNBQUFBLFNBQ0FvRixPQUFBQSxPQUNBdkcsTUFBQUEsTUFDQW14QixhQUFBQSxhQUNBQyxTQUFBQSxTQUNBTyxhQUFBQSxhQUNBejNDLFFBQUFBLFFBQ0FvUixNQUFBQSxNQUNBamEsTUFBQUEsTUFDQTY2QyxTQUFBQSxTQUNBaC9ELE1BQUFBLE1BQ0FneEMsS0FBQUEsS0FDQVcsUUE5aERBLFNBQUFyWixPQUFBMWdDLFNBSUEsT0FGQTBnQyxPQUFBeWdDLE9BQUF6Z0MsU0FFQTRtQyxnQkFHQUMsWUFBQXZuRSxRQUFBLFNBQUFBLFNBQUEsT0FBQTBnQyxPQUFBc1osYUFBQWg2QyxRQUFBMGdDLE9BQUF4QixjQUZBNGEsT0FBQXBaLE9BQUExZ0MsVUEwaERBODVDLE9BQUFBLE9BQ0FHLE9BQUFBLE9BQ0FDLE1BQUFBLE1BQ0E3MEMsT0FBQUEsT0FDQTZvRCxRQUFBQSxRQUNBRSxVQUFBQSxVQUNBRSxPQUFBQSxPQUNBaGQsU0FBQUEsU0FDQXJyQyxNQUFBQSxNQUNBb25FLE1BQUFBLE1BQ0FJLFNBQUFBLFNBQ0FJLFlBQUFBLFlBQ0FDLFlBQUFBLFlBQ0FDLFVBQUFBLFVBQ0FDLGFBQUFBLGFBQ0FDLGFBQUFBLGFBQ0E1N0IsR0FBQUEsR0FDQUssSUFBQUEsSUFDQXpKLEtBQUFBLEtBQ0FvTSxRQUFBQSxRQUNBeXdCLFlBQUFBLFlBQ0FKLGVBQUFBLGVBQ0FRLGFBQUFBLGFBQ0FnSSxRQUFBQSxRQUNBcEosY0FBQUEsY0FDQUUsVUFBQUEsVUFDQUMsU0FBQUEsU0FDQUMsUUFBQUEsUUFDQTlnRSxPQUFBQSxPQUNBK2dFLE9BQUFBLE9BQ0F6aUIsS0FBQUEsS0FDQWx3QixPQUFBQSxPQUNBNnNDLFVBQUFBLFVBQ0FHLFNBQUFBLFNBQ0FFLFFBQUFBLFFBQ0FHLFdBQUFBLFdBQ0FJLFNBQUFBLFNBQ0FHLFNBQUFBLFNBQ0FqNkQsUUFBQUEsUUFDQW9ILFdBQUFBLFdBQ0E3RyxTQUFBQSxTQUNBdXVCLGNBQUFBLGNBQ0FwQyxTQUFBQSxTQUNBMHRDLFdBQUFBLFdBQ0FDLFNBQUFBLFNBQ0FDLE9BQUFBLE9BQ0FFLGlCQUFBQSxpQkFDQUcsVUFBQUEsVUFDQVIsU0FBQUEsU0FDQTE1RCxTQUFBQSxTQUNBaXNELFVBQUFBLFVBQ0Fsc0QsWUFBQUEsWUFDQW82RCxVQUFBQSxVQUNBQyxTQUFBQSxTQUNBRSxRQUFBQSxRQUNBQyxPQUFBQSxPQUNBRSxRQUFBQSxRQUNBRSxPQUFBQSxPQUNBQyxLQUFBQSxLQUNBL3lCLEtBQUFBLEtBQ0FnekIsT0FBQUEsT0FDQXB0QyxLQUFBQSxLQUNBc3RDLE9BQUFBLE9BQ0FDLE1BQUFBLE1BQ0F0c0MsS0FBQUEsS0FDQXVzQyxjQUFBQSxjQUNBSSxZQUFBQSxZQUNBRSxXQUFBQSxXQUNBNk0sYUFBQUEsYUFDQXNCLGFBQUFBLGFBQ0FNLGFBQUFBLGFBQ0FDLE9BQUFBLE9BQ0F6SyxRQUFBRCxVQUNBNzhCLFNBQUFBLFNBQ0EwNUIsTUFBQUEsTUFDQUUsU0FBQUEsU0FDQTdsQyxLQUFBQSxLQUNBOGxDLFFBQUFBLFFBQ0FsK0MsUUFBQUEsUUFDQStoQixRQUFBQSxRQUNBRyxRQUFBQSxRQUNBeEksT0FBQUEsT0FDQTZQLElBQUFBLElBQ0FvTSxVQUFBQSxVQUNBcXVCLFNBQUFBLFNBQ0FJLFVBQUFBLFVBQ0FMLFNBQUFBLFNBQ0E4SixRQUFBQSxRQUNBaEksT0FBQXlILFdBNDNCQTV4RSxNQUFBNEIsS0FBQSxZQUNBNUIsTUFBQWlxQixPQUFBLE1BQ0FqcUIsTUFBQWkwQixXQTVwQkEsU0FBQWowQixPQUVBLElBbURBZzdDLFVBbkRBdzNCLEtBQUF4eUUsTUFBQTRCLEtBZ0VBLFNBQUE0dEUsT0FBQXdCLFFBQUE3dkUsR0FFQSxHQUFBNnZFLFFBSUEsSUFBQSxJQUFBcmtFLFFBQUFxa0UsUUFDQUEsUUFBQXJrRSxNQUFBOGxFLFVBQ0F6QixRQUFBcmtFLE1BQUErbEUsWUFBQXZ4RSxHQXRFQW5CLE1BQUEyeUUsSUFBQSxTQUFBQyxRQUVBLElBQUFBLE9BQUFDLFVBT0EsT0FIQUQsT0FBQTlzRSxLQUFBLEtBQUFyRSxNQUNBbXhFLE9BQUFDLFdBQUEsRUFFQXB4RSxNQUdBekIsTUFBQTh5RSxNQUFBLFNBQUFBLE1BQUFDLFdBQ0FBLFdBQUFwVCxTQUFBb1QsV0FBQS95RSxNQUFBK3lFLFVBQUFBLFdBQUFBLFlBQUF0eEUsTUFDQXF4RSxNQUFBbkQsZ0JBQUFtRCxRQUNBaEQsT0FBQWlELFVBQUE5K0MsUUFBQTY3QyxjQUNBaUQsVUFBQTkrQyxRQUFBNjdDLE9BQ0FpRCxVQUFBOStDLFFBQUEwN0MsYUFBQW1ELE1BQUFDLFVBQUE5K0MsVUFHQWowQixNQUFBOEcsT0FBQSxTQUFBbXRCLFNBRUFBLFFBQUFBLFlBRUEsSUFDQSsrQyxJQUFBLFNBQUEvK0MsU0FDQXh5QixLQUFBNHdFLE1BQUFwK0MsVUFVQSxPQVBBKytDLElBQUFwdEUsVUFBQUQsT0FBQXN0RSxPQUxBeHhFLEtBS0FtRSxZQUNBd3RCLFlBQUE0L0MsSUFDQUEsSUFBQS8rQyxRQUFBMDdDLGFBUEFsdUUsS0FPQXd5QixRQUFBQSxTQUVBKytDLElBQUEsTUFUQXZ4RSxLQVVBdXhFLElBQUFsc0UsT0FWQXJGLEtBVUFxRixPQUVBa3NFLEtBR0FoekUsTUFBQXd2RSxPQUFBLFNBQUFud0UsUUFBQThCLEdBRUFBLEVBQUFna0UsWUFBQWhrRSxHQUFBLFVBbUNBLFNBQUE5QixTQUdBLElBRkEsSUFBQTZ6RSxRQUVBN3pFLFNBQUFBLFVBQUEzQyxTQUFBa3lDLE1BQUF2dkMsUUFBQXN6QixZQUVBdHpCLFFBQUFBLFFBQUFzekIsV0FDQXVnRCxLQUFBdjFDLFFBQUF0K0IsU0FJQSxPQUFBNnpFLEtBMUNBQSxDQUZBN3pFLFFBQUFBLFFBQUFtaEUsT0FBQW5oRSxTQUFBM0MsU0FBQWt5QyxNQUVBem9DLElBQUEsU0FBQTlHLFNBQUEsT0FBQW13RSxPQUFBbndFLFFBQUFtekUsTUFBQXJ4RSxLQUNBbUUsTUFBQWpHLFFBQUEsU0FBQUEsU0FBQSxPQUFBbXdFLE9BQUFud0UsUUFBQW16RSxNQUFBcnhFLE1BS0F3RSxPQUFBMm1DLGVBQUF0c0MsTUFBQSxhQUVBc1QsSUFBQSxXQUNBLE9BQUEwbkMsV0FBQXQrQyxTQUFBa3lDLE1BR0ExaEMsSUFBQSxTQUFBN04sU0FDQTI3QyxVQUFBbDVDLEVBQUF6QyxZQWltQkE4ekUsQ0FBQW56RSxPQS9qQkEsU0FBQUEsT0FFQUEsTUFBQTRGLFVBQUF3dEUsVUFBQSxTQUFBai9CLE1BQ0EsSUFBQTJ0QixPQUFBcmdFLEtBR0Eyd0MsU0FBQTN3QyxLQUFBNHhFLFNBQUFsL0IsTUFFQS9CLFVBQ0FBLFNBQUF6dUMsUUFBQSxTQUFBdTNCLFNBQUEsT0FBQUEsUUFBQXAxQixLQUFBZzhELFdBSUE5aEUsTUFBQTRGLFVBQUEwdEUsZUFBQSxXQUNBLElBQUF4UixPQUFBcmdFLEtBR0FBLEtBQUE4eEUsYUFJQTl4RSxLQUFBaWlCLFNBQ0FqaUIsS0FBQSt4RSxhQUVBL3hFLEtBQUEyeEUsVUFBQSxpQkFDQTN4RSxLQUFBOHhFLFlBQUEsRUFFQTl4RSxLQUFBZ3lFLGNBQ0FoeUUsS0FBQWl5RSxnQkFFQWp5RSxLQUFBMnhFLFVBQUEsYUFFQTN4RSxLQUFBZ3hFLFVBQ0E1c0MsTUFBQSxXQUFBLE9BQUFpOEIsT0FBQTZSLGVBR0FseUUsS0FBQWl4RSxnQkFHQTF5RSxNQUFBNEYsVUFBQWd1RSxrQkFBQSxXQUVBbnlFLEtBQUE4eEUsYUFJQTl4RSxLQUFBMnhFLFVBQUEsb0JBRUEzeEUsS0FBQW95RSxZQUNBcHlFLEtBQUFveUUsVUFBQUMsYUFDQXJ5RSxLQUFBb3lFLFVBQUEsTUFHQXB5RSxLQUFBc3lFLGdCQUNBdHlFLEtBQUEyeEUsVUFBQSxnQkFFQTN4RSxLQUFBOHhFLFlBQUEsSUFJQXZ6RSxNQUFBNEYsVUFBQSt0RSxXQUFBLFdBRUFseUUsS0FBQWd4RSxXQUlBaHhFLEtBQUFneEUsVUFBQSxFQUNBaHhFLEtBQUEyeEUsVUFBQSxTQUNBM3hFLEtBQUF1eUUsa0JBQ0F2eUUsS0FBQWl4RSxnQkFHQTF5RSxNQUFBNEYsVUFBQThzRSxZQUFBLFNBQUF2eEUsR0FDQSxJQUFBMmdFLE9BQUFyZ0UsS0FLQWpELE1BRkEyQyxFQUFBZ2tFLFlBQUFoa0UsR0FBQSxXQUVBM0MsS0FFQWloRSxVQUFBLFNBQUEsT0FBQSxVQUFBamhFLE9BQ0FpRCxLQUFBdXlFLGtCQUdBLElBQUFDLFFBQUF4eUUsS0FBQTR4RSxTQUFBN0QsT0FDQS9LLElBQUFoakUsS0FBQXl5RSxRQUNBMUcsTUFBQS9JLElBQUErSSxNQUNBQyxPQUFBaEosSUFBQWdKLE9BRUF3RyxTQUlBQSxRQUFBdHdFLFFBQUEsU0FBQThnRSxJQUFBbitELEdBQ0EsSUFBQW9uRSxLQUFBakosSUFBQWlKLEtBQ0FHLE1BQUFwSixJQUFBb0osTUFDQTM3QixPQUFBdXlCLElBQUF2eUIsUUFHQSxXQUFBMXpDLE1BQUFpaEUsU0FBQXZ0QixPQUFBMXpDLFNBSUFrdkUsT0FBQWpPLFNBQUE4TixRQUFBQyxNQUFBQSxNQUFBbG5FLE1BQ0FrbkUsTUFBQWxuRSxHQUFBaW5FLFFBQUFHLEtBQUEsV0FFQSxJQUFBdHVELE9BQUEwaUQsT0FBQXlSLFlBQUE3RixLQUFBNW5FLEtBQUFnOEQsT0FBQUEsT0FBQXArQyxNQUFBdmlCLElBRUEsSUFBQWllLFFBQUF5dUQsT0FDQU4sUUFBQU8sTUFBQUwsT0FBQW5uRSxXQUNBbW5FLE9BQUFubkUsSUFDQWd1QixjQUFBbFYsU0FDQTBoRCxPQUFBZ0IsT0FBQXArQyxNQUFBdEUsZUFFQW91RCxNQUFBbG5FLE1BSUF1bkUsUUFBQXBPLFNBQUE4TixRQUFBRSxPQUFBQSxPQUFBbm5FLE1BQ0FtbkUsT0FBQW5uRSxHQUFBaW5FLFFBQUFNLE1BQUEsV0FDQS9MLE9BQUF5UixZQUFBMUYsTUFBQS9uRSxLQUFBZzhELE9BQUFBLE9BQUFwK0MsTUFBQXZpQixVQUNBc3NFLE9BQUFubkUsVUF3Y0E2dEUsQ0FBQW4wRSxPQTliQSxTQUFBQSxPQUVBLElBQUFxc0MsSUFBQSxFQXFKQSxTQUFBK25DLFNBQUEzeUIsS0FBQTkwQyxNQUVBLElBQUFxa0UsV0FDQTlrRSxLQUFBdTFDLEtBQUF2MUMsVUFBQSxJQUFBQSxPQUFBQSxTQUNBLElBQUE2b0MsTUFBQTBNLEtBQUExTSxXQUFBLElBQUFBLFFBQUFBLFVBQ0EsSUFBQWhhLEdBQUEwbUIsS0FBQTFtQixHQUVBLElBQUFnYSxNQUNBLE9BQUFpOEIsUUFHQSxJQUFBLElBQUE3a0UsT0FBQTRvQyxNQUFBLENBQ0EsSUFBQXByQyxLQUFBKzBELFVBQUF2eUQsS0FDQSxHQUFBNjFELFFBQUFqbkMsR0FBQXB4QixNQUFBLENBRUEsSUFBQXFCLE1BQUFxcEUsT0FBQXQvQixNQUFBNW9DLEtBQUEyeEIsS0FBQS9DLEdBQUFweEIsT0FFQSxHQUFBLFdBQUFBLFFBQUFxQixPQUFBazBELFdBQUFsMEQsTUFBQSxNQUNBLFNBR0FnbUUsUUFBQTdrRSxLQUFBbkIsT0FJQSxJQUFBaXBCLFFBQUFnOEMsYUFBQXJ1RSxLQUFBbTVCLEdBQUFwdUIsTUFBQVQsTUFFQSxJQUFBLElBQUE4akUsU0FBQS83QyxRQUFBLENBQ0EsSUFBQXFnRCxPQUFBelYsU0FBQW1SLFlBQ0FyeEUsSUFBQW8yQyxNQUFBdS9CLFVBQ0F0RCxRQUFBc0QsUUFBQUQsT0FBQXQvQixNQUFBdS9CLFFBQUFyZ0QsUUFBQSs3QyxTQUlBLE9BQUFnQixRQUdBLFNBQUF1RCxpQkFBQXhCLFVBQUE1bUUsSUFBQTQwRCxJQUNBcDdELE9BQUEybUMsZUFBQXltQyxVQUFBNW1FLEtBRUFrb0MsWUFBQSxFQUVBL2dDLElBQUEsV0FFQSxJQUFBa2hFLFdBQUF6QixVQUFBeUIsV0FDQUMsT0FBQTFCLFVBQUEwQixPQUNBQyxJQUFBM0IsVUFBQTJCLElBTUEsT0FKQTdpRCxPQUFBMmlELFdBQUFyb0UsT0FDQXFvRSxXQUFBcm9FLEtBQUE0MEQsR0FBQWo3RCxLQUFBaXRFLFVBQUEwQixPQUFBQyxNQUdBRixXQUFBcm9FLE1BR0FlLElBQUEsU0FBQWxDLE9BQ0ErbkUsVUFBQXlCLFdBQUFyb0UsS0FBQW5CLFNBTUEsU0FBQTJwRSxjQUFBNUIsVUFBQWpoQyxNQUFBM2xDLEtBRUFtb0IsY0FBQXdkLFNBQ0FBLE9BQUFubEMsS0FBQVIsSUFBQSt1QixRQUFBNFcsUUFHQSxJQXNEQTZ5QixTQXREQWg0RCxLQUFBbWxDLE1BQUFubEMsS0FDQW91QixHQUFBK1csTUFBQS9XLEdBQ0FHLFFBQUE0VyxNQUFBNVcsUUFDQTA1QyxRQUFBOWlDLE1BQUE4aUMsUUFDQWhqQixTQUFBOWYsTUFBQThmLFNBQ0FpakIsVUFBQS9pQyxNQUFBcnVDLE9BQ0FpaUMsS0FBQW9NLE1BQUFwTSxLQUNBM0ssR0FBQW51QixXQUFBbXVCLElBQ0FBLEdBQUFqMUIsS0FBQWl0RSxXQUNBaDRDLElBQUFnNEMsVUFBQTJCLElBRUFsdkUsUUFBQXUxQixJQUNBQSxHQUFBcDNCLFFBQUEsU0FBQW8zQixJQUFBLE9BQUE0NUMsY0FBQTVCLFVBQUFqUyxVQUFBaHZCLE9BQUEvVyxHQUFBQSxLQUFBNXVCLFFBSUE0dUIsSUFBQTg1QyxZQUFBQSxVQUFBL3VFLEtBQUFpdEUsYUFzQ0FwTyxTQWxDQWhGLFNBQUF6a0MsU0FBQTYzQyxVQUFBNzNDLFNBQUE2bUIsS0FBQTdtQixRQUFBNjNDLFdBQUE3M0MsUUFtQ0EsU0FBQS81QixHQUFBLE9BQUFxRSxRQUFBckUsRUFBQXcwQyxRQUFBZ3ZCLFNBQUFyL0QsV0FBQSxHQUFBbkUsR0FBQXd3QixPQUFBeHdCLEVBQUF3MEMsU0FBQWd2QixTQUFBeGpFLElBakNBdWtDLE9BQ0F4SyxRQW1CQSxTQUFBQSxTQUNBLE9BQUEsU0FBQS81QixHQUNBLEdBQUFBLEVBQUFpekIsU0FBQWp6QixFQUFBdXlDLGVBQUF2eUMsRUFBQWl6QixTQUFBanpCLEVBQUE4ckQsUUFDQSxPQUFBL3hCLFFBQUFwMUIsS0FBQSxLQUFBM0UsSUF0QkEyekUsQ0FBQTU1QyxVQUdBNjNDLFVBQUFnQyxRQUFBdHVFLEtBQ0FpckMsR0FDQTNXLEdBQ0FwdUIsS0FDQWlsRCxTQUVBK04sU0FBQS9OLFVBQ0FBLFNBQ0FBLFNBQUE5ckQsS0FBQWl0RSxXQUhBLEtBSUE3M0MsUUFDQTA1QyxXQWNBLFNBQUFJLE1BQUEvZ0QsUUFBQTluQixLQUNBLE9BQUE4bkIsUUFBQWdoRCxNQUFBLFNBQUE3dUUsS0FBQSxPQUFBQSxNQUFBeXJCLE9BQUF6ckIsSUFBQStGLE9BT0EsU0FBQWtvRSxPQUFBNzFFLEtBQUF3TSxPQUVBLE9BQUF4TSxPQUFBbWlFLFFBQ0FQLFVBQUFwMUQsT0FDQXhNLE9BQUE4aEUsT0FDQUQsU0FBQXIxRCxPQUNBLFNBQUF4TSxLQUNBb2lFLE9BQUE1MUQsT0FDQSxVQUFBeE0sS0FPQSxTQUFBd00sT0FFQSxHQUFBMjBELFNBQUEzMEQsT0FDQSxHQUFBLE1BQUFBLE1BQUEsR0FBQSxDQUNBLElBQUEyQixLQUFBLFNBQUEzQixNQUFBeUQsT0FBQSxHQUNBekQsTUFBQXUxRCxRQUFBbUksVUFBQS83RCxZQUNBLEdBQUEvRCxNQUFBb0MsT0FDQSxPQUFBQSxNQUlBLFNBQUFBLE9BQUFwQyxNQUFBb0MsU0FBQSxlQUFBQSxNQUFBLE1BakJBa3FFLENBQUFscUUsT0FHQXhNLEtBQUFBLEtBQUF3TSxPQUFBQSxNQTdSQWhMLE1BQUE0RixVQUFBeXNFLE1BQUEsU0FBQXArQyxVQUVBQSxRQUFBQSxhQUNBcnlCLEtBMlNBLFNBQUE2aUUsSUFBQTBRLE9BQ0EsSUFBQW5FLFFBQUF2TSxJQUFBN2lFLEtBRUFzSyxNQURBdTRELElBQUExcEMsR0FDQW82QyxNQUFBanBFLE1BQ0E2b0MsTUFBQW9nQyxNQUFBcGdDLE1BZUEsUUFmQSxJQUFBQSxRQUFBQSxVQUVBaThCLFFBQUF4ckUsUUFBQXdyRSxTQUNBOWtFLE1BQUFBLEtBQUExRixPQUNBd3FFLFFBQUE1a0UsTUFBQSxFQUFBRixLQUFBMUYsUUFBQXcrRCxPQUFBLFNBQUFnTSxRQUFBaG1FLE1BQUFvcUUsVUFNQSxPQUxBOWdELGNBQUF0cEIsT0FDQTgxRCxPQUFBa1EsUUFBQWhtRSxPQUVBZ21FLFFBQUE5a0UsS0FBQWtwRSxXQUFBcHFFLE1BRUFnbUUsa0JBRUFyeUUsRUFDQXF5RSxRQUdBLElBQUEsSUFBQTdrRSxPQUFBNmtFLFFBQ0FockUsWUFBQWdyRSxRQUFBN2tFLGFBQ0E2a0UsUUFBQTdrRSxLQUVBNmtFLFFBQUE3a0UsS0FBQTRvQyxNQUFBNW9DLEtBQUFrb0UsT0FBQXQvQixNQUFBNW9DLEtBQUE2a0UsUUFBQTdrRSxNQUFBNmtFLFFBQUE3a0UsS0FLQSxPQUFBNmtFLFFBeFVBcUUsQ0FBQXBoRCxRQUFBeHlCLEtBQUEyeEIsWUFBQWEsU0FFQXh5QixLQUFBNHhFLFNBQUExRCxhQUFBbHVFLEtBQUEyeEIsWUFBQWEsUUFBQUEsUUFBQXh5QixNQUNBQSxLQUFBaXpFLElBQUEsS0FDQWp6RSxLQUFBZ3pFLFVBRUFoekUsS0FBQXl5RSxTQUFBMUcsU0FBQUMsV0FDQWhzRSxLQUFBc3pFLFdBRUF0ekUsS0FBQTZ6RSxLQUFBanBDLE1BQ0E1cUMsS0FBQTh6RSxZQUNBOXpFLEtBQUErekUsZUFDQS96RSxLQUFBZzBFLGlCQUNBaDBFLEtBQUEyeEUsVUFBQSxXQUVBbi9DLFFBQUE4RyxJQUNBdDVCLEtBQUFpMEUsT0FBQXpoRCxRQUFBOEcsS0FJQS82QixNQUFBNEYsVUFBQTJ2RSxVQUFBLFdBQ0EsSUFJQXZFLFFBREF2dkUsS0FBQTR4RSxTQUNBenhFLEtBRUEsSUFBQSxJQUFBdUssWUFGQSxJQUFBNmtFLFVBQUFBLFlBRUFBLFFBTkF2dkUsS0FPQWd6RSxPQUFBdG9FLEtBUEExSyxLQU9BMEssS0FBQTZrRSxRQUFBN2tFLE1BSUFuTSxNQUFBNEYsVUFBQTR2RSxhQUFBLFdBQ0EsSUFJQS9GLFFBREFodUUsS0FBQTR4RSxTQUNBNUQsUUFFQSxHQUFBQSxRQUNBLElBQUEsSUFBQXRqRSxPQUFBc2pFLFFBUEFodUUsS0FRQTBLLEtBQUE0MUMsS0FBQTB0QixRQUFBdGpFLEtBUkExSyxPQWFBekIsTUFBQTRGLFVBQUE2dkUsZUFBQSxXQUNBLElBSUFuN0IsU0FEQTc0QyxLQUFBNHhFLFNBQ0EvNEIsU0FJQSxHQUZBNzRDLEtBQUF1eUUsa0JBRUExNUIsU0FDQSxJQUFBLElBQUFudUMsT0FBQW11QyxTQUNBaTZCLGlCQVZBOXlFLEtBVUEwSyxJQUFBbXVDLFNBQUFudUMsT0FLQW5NLE1BQUE0RixVQUFBb3VFLGdCQUFBLFdBQ0F2eUUsS0FBQSt5RSxlQUdBeDBFLE1BQUE0RixVQUFBNHRFLFdBQUEsU0FBQXorQixPQUNBLElBR0E1b0MsSUFNQSxJQUFBQSxPQUpBMUssS0FBQXV5RSxrQkFFQWovQixNQUFBQSxPQUFBcS9CLFNBQUEzeUUsS0FBQTR4RSxTQUFBNXhFLEtBQUFrMEUsT0FHQTN2RSxZQUFBK3VDLE1BQUE1b0MsUUFWQTFLLEtBV0FnekUsT0FBQXRvRSxLQUFBNG9DLE1BQUE1b0MsTUFJQSxJQUFBeXBFLFNBQUFuMEUsS0FBQTR4RSxTQUFBLzRCLFNBQUE3NEMsS0FBQTR4RSxTQUFBNUQsU0FDQSxJQUFBdGpFLE9BaEJBMUssS0FnQkFnekUsT0FDQXRvRSxPQUFBNG9DLE9BQUFpZ0MsTUFBQVksUUFBQXpwRSxPQWpCQTFLLEtBa0JBMEssS0FsQkExSyxLQWtCQWd6RSxPQUFBdG9FLE9BS0FuTSxNQUFBNEYsVUFBQTZ0RSxZQUFBLFdBQ0EsSUFBQTNSLE9BQUFyZ0UsS0FJQXl3QyxPQURBendDLEtBQUE0eEUsU0FDQW5oQyxPQUVBQSxRQUVBQSxPQUFBdnVDLFFBQUEsU0FBQW11QyxPQUVBLEdBQUFqZ0IsT0FBQWlnQixNQUFBLFdBS0E2aUMsY0FBQTdTLE9BQUFod0IsWUFKQSxJQUFBLElBQUEzbEMsT0FBQTJsQyxNQUNBNmlDLGNBQUE3UyxPQUFBaHdCLE1BQUEzbEMsS0FBQUEsUUFVQW5NLE1BQUE0RixVQUFBbXVFLGNBQUEsV0FDQXR5RSxLQUFBc3pFLFFBQUFweEUsUUFBQSxTQUFBZ3VELFFBQUEsT0FBQUEsV0FDQWx3RCxLQUFBc3pFLFlBR0EvMEUsTUFBQTRGLFVBQUE4dEUsY0FBQSxXQUNBLElBQUE1UixPQUFBcmdFLEtBR0FnakUsSUFBQWhqRSxLQUFBNHhFLFNBQ0FwNEMsTUFBQXdwQyxJQUFBeHBDLE1BQ0E4WixNQUFBMHZCLElBQUExdkIsTUFDQWhhLEdBQUEwcEMsSUFBQTFwQyxJQUNBdDVCLEtBQUFveUUsV0FBQTkrQixPQUFBOVosUUFJQUEsTUFBQXoxQixRQUFBeTFCLE9BQUFBLE1BQUF0MUIsT0FBQTZHLEtBQUF1b0MsT0FBQTV1QyxJQUFBLFNBQUFnRyxLQUFBLE9BQUF1eUQsVUFBQXZ5RCxPQUVBMUssS0FBQW95RSxVQUFBLElBQUFnQyxpQkFBQSxXQUVBLElBQUE3RSxRQUFBb0QsU0FBQXRTLE9BQUF1UixTQUFBdlIsT0FBQTZULE9BQ0ExNkMsTUFBQTcxQixLQUFBLFNBQUErRyxLQUFBLE9BQUFuRyxZQUFBZ3JFLFFBQUE3a0UsT0FBQTZrRSxRQUFBN2tFLE9BQUEyMUQsT0FBQTJTLE9BQUF0b0UsUUFDQTIxRCxPQUFBZ1UsV0FLQXIwRSxLQUFBb3lFLFVBQUFrQyxRQUFBaDdDLElBQUExRCxZQUFBLEVBQUEyK0MsZ0JBQUEvNkMsTUFBQXRKLFFBQUFsd0IsS0FBQWswRSxNQUFBLFFBQUFsMEUsS0FBQSxZQTJTQXcwRSxDQUFBajJFLE9BLzNCQSxTQUFBQSxPQUVBLElBQUF3eUUsS0FBQXh5RSxNQUFBNEIsS0FFQXMwRSxjQUVBbDJFLE1BQUEreUUsVUFBQSxTQUFBcG1FLEtBQUFzbkIsU0FFQSxJQUFBQSxRQU1BLE9BSkFLLGNBQUE0aEQsV0FBQXZwRSxTQUNBdXBFLFdBQUF2cEUsTUFBQTNNLE1BQUE4RyxPQUFBb3ZFLFdBQUF2cEUsUUFHQXVwRSxXQUFBdnBFLE1BSUEzTSxNQUFBMk0sTUFBQSxTQUFBdE4sUUFBQTJ4RSxTQUVBLElBREEsSUFBQTFxRSxFQUFBZixVQUFBaUIsT0FBQTJ2RSxVQUFBendFLE1BQUFZLEdBQ0FBLEtBQUE2dkUsVUFBQTd2RSxHQUFBZixVQUFBZSxHQUdBLElBQUF5c0UsVUFBQS95RSxNQUFBK3lFLFVBQUFwbUUsTUFFQSxPQUFBMm5CLGNBQUFqMUIsU0FDQSxJQUFBMHpFLFdBQUFueEUsS0FBQXZDLFVBR0EwekUsVUFBQTkrQyxRQUFBbWlELFdBQ0EsSUFBQXJELFdBQUFueEUsUUFBQSt2QixPQUFBd2tELGFBR0E5MkUsU0FBQUEsUUFBQTR5QixTQUFBZSxLQUFBM3pCLFNBQUFxcUUsR0FBQXJxRSxTQUFBOEcsSUFBQTZzQixNQUFBLEdBRUEsU0FBQUEsS0FBQTN6QixTQUVBLElBQUFnM0UsU0FBQXIyRSxNQUFBczJFLGFBQUFqM0UsUUFBQXNOLE1BRUEsR0FBQTBwRSxTQUFBLENBQ0EsSUFBQXJGLFFBQ0EsT0FBQXFGLFNBRUFBLFNBQUFFLFdBSUEsT0FBQSxJQUFBeEQsV0FBQWg0QyxHQUFBMTdCLFFBQUF1QyxLQUFBb3ZFLFlBTUEsSUFBQWp1QixJQUFBenVCLGNBQUFMLFNBQUE2c0MsVUFBQTdzQyxTQUFBQSxRQUFBQSxRQVFBLEdBTkE4dUIsSUFBQXAyQyxLQUFBQSxLQUVBbzJDLElBQUF5ekIsU0FDQXp6QixJQUFBeXpCLFFBQUF4MkUsTUFBQStpRCxJQUFBcDJDLE1BR0EzTSxNQUFBeTJFLGVBQUExekIsSUFBQXF6QixXQUFBLENBQ0EsSUFBQXp6RSxHQUFBKzdELFVBQUEveEQsTUFDQTRnRSxRQUFBRyxLQUFBLFdBQUEsT0FBQTF0RSxNQUFBMk0sTUFBQSxPQUFBaEssR0FBQSxjQUFBQSxHQUFBLE9BR0EsT0FBQXV6RSxXQUFBdnBFLE1BQUEybkIsY0FBQUwsU0FBQTh1QixJQUFBOXVCLFNBR0FqMEIsTUFBQTAyRSxjQUFBLFNBQUFyM0UsU0FBQSxPQUFBQSxTQUFBQSxRQUFBbXpFLFdBQ0F4eUUsTUFBQXMyRSxhQUFBLFNBQUFqM0UsUUFBQXNOLE1BQUEsT0FBQTNNLE1BQUEwMkUsY0FBQXIzRSxTQUFBc04sT0FFQTNNLE1BQUEyMkUsUUFBQSxTQUFBbmtELE1BRUEsR0FBQUEsS0FBQWdnRCxNQUNBLElBQUEsSUFBQTdsRSxRQUFBNmxCLEtBQUFnZ0QsTUFDQWhnRCxLQUFBZ2dELE1BQUE3bEUsTUFBQTJtRSxpQkFJQSxJQUFBLElBQUFodEUsRUFBQSxFQUFBQSxFQUFBa3NCLEtBQUE2RSxXQUFBN3dCLE9BQUFGLElBQUEsQ0FFQSxJQUFBc3dFLE9BQUF4RSxpQkFBQTUvQyxLQUFBNkUsV0FBQS93QixHQUFBcUcsTUFFQWlxRSxRQUFBQSxVQUFBVixZQUNBbDJFLE1BQUE0MkUsUUFBQXBrRCxRQU9BeHlCLE1BQUE4ekUsV0FBQSxTQUFBdGhELE1BQ0EsSUFBQSxJQUFBN2xCLFFBQUE2bEIsS0FBQWdnRCxNQUNBaGdELEtBQUFnZ0QsTUFBQTdsRSxNQUFBaW5FLHFCQWt5QkFpRCxDQUFBNzJFLE9BN0dBLFNBQUFBLE9BRUEsSUFBQXd5RSxLQUFBeHlFLE1BQUE0QixLQUVBNUIsTUFBQTRGLFVBQUE4dkUsT0FBQSxTQUFBMzZDLElBRUEsSUFDQXB1QixLQURBbEwsS0FBQTR4RSxTQUNBMW1FLEtBRUFvdUIsR0FBQXkzQyxRQUNBejNDLEdBQUF5M0MsVUFHQXozQyxHQUFBeTNDLE1BQUE3bEUsUUFJQW91QixHQUFBeTNDLE1BQUE3bEUsTUFBQWxMLEtBRUFBLEtBQUFpekUsSUFBQWp6RSxLQUFBNHhFLFNBQUF0NEMsR0FBQXQ1QixLQUFBNHhFLFNBQUF0NEMsSUFBQUEsR0FFQXQ1QixLQUFBMnhFLFVBQUEsUUFFQTVPLE9BQUF6cEMsR0FBQXIrQixXQUNBK0UsS0FBQTZ4RSxtQkFJQXR6RSxNQUFBNEYsVUFBQWt4RSxNQUFBLFNBQUEzMUUsR0FDQU0sS0FBQWl4RSxZQUFBdnhFLElBR0FuQixNQUFBNEYsVUFBQWt3RSxPQUFBLFdBQ0FyMEUsS0FBQW15RSxvQkFDQW55RSxLQUFBNnhFLGtCQUdBdHpFLE1BQUE0RixVQUFBMndFLFNBQUEsU0FBQVEsZUFDQSxJQUFBQSxXQUFBQSxVQUFBLEdBR0EsSUFBQXRTLElBQUFoakUsS0FBQTR4RSxTQUNBdDRDLEdBQUEwcEMsSUFBQTFwQyxHQUNBcHVCLEtBQUE4M0QsSUFBQTkzRCxLQUVBb3VCLElBQ0F0NUIsS0FBQW15RSxvQkFHQW55RSxLQUFBMnhFLFVBQUEsV0FFQXI0QyxJQUFBQSxHQUFBeTNDLGVBSUF6M0MsR0FBQXkzQyxNQUFBN2xFLE1BRUFoSCxPQUFBNkcsS0FBQXV1QixHQUFBeTNDLE9BQUFoc0UsZUFDQXUwQixHQUFBeTNDLE1BR0F1RSxVQUNBcnlFLE9BQUFqRCxLQUFBaXpFLE9BSUExMEUsTUFBQTRGLFVBQUFveEUsUUFBQSxTQUFBakUsVUFBQTF6RSxRQUFBMnhFLFNBQ0EsT0FBQWh4RSxNQUFBK3lFLFdBQUExekUsUUFBQTJ4RSxVQUdBaHhFLE1BQUE0RixVQUFBcXhFLFFBQUFqM0UsTUFBQXd2RSxPQUNBeHZFLE1BQUE0RixVQUFBc3hFLGNBQUFsM0UsTUFBQXMyRSxhQUVBLElBQUFqN0QsU0FDQTFWLE9BQUF3eEUsaUJBQUFuM0UsTUFBQTRGLFdBRUF3eEUsV0FBQXp4RSxPQUFBMHhFLHlCQUFBcjNFLE1BQUEsYUFFQTIxRSxPQUVBcmlFLElBQUEsV0FDQSxJQUNBM0csS0FEQWxMLEtBQUE0eEUsU0FDQTFtRSxLQU1BLE9BSkEwTyxNQUFBMU8sUUFDQTBPLE1BQUExTyxNQUFBM00sTUFBQWlxQixPQUFBeTBDLFVBQUEveEQsT0FHQTBPLE1BQUExTyxVQXNCQTJxRSxDQUFBdDNFLE9BRUEsSUFBQXUzRSxPQUVBbkksVUFBQSxXQUNBOXBCLFNBQUE3akQsS0FBQWl6RSxJQUFBanpFLEtBQUFrMEUsU0FLQTZCLFdBRUF6aUMsT0FDQXN5QixJQUFBMUcsUUFDQTNmLFVBQUEsT0FDQWwrQixTQUFBdzlDLE9BQ0ErSSxPQUFBcHdDLE9BQ0EydkMsV0FBQTN2QyxPQUNBdytDLE9BQUE5VyxTQUdBLytELE1BQ0F5bEUsS0FBQSxFQUNBcm1CLFlBQUEsR0FDQWwrQixTQUFBLElBQ0F1bUQsUUFBQSxFQUNBVCxXQUFBLFNBQ0E2TyxRQUFBLEVBRUFDLFdBQ0E5dkUsU0FBQSxHQUNBazVDLE9BQUEsR0FDQTYyQixXQUFBLEdBQ0FDLGNBQUEsR0FDQUMsVUFBQSxHQUNBQyxhQUFBLElBR0FDLFdBQ0Fud0UsU0FBQSxTQUNBazVDLE9BQUEsRUFDQTYyQixXQUFBLEVBQ0FDLGNBQUEsRUFDQUMsVUFBQSxFQUNBQyxhQUFBLElBS0F4OUIsVUFFQTA5QixhQUFBLFNBQUF2VCxLQUdBLFFBRkFBLElBQUF6akIsVUFFQSxJQUdBaTNCLGNBQUEsU0FBQXhULEtBQ0EsSUFBQXpqQixVQUFBeWpCLElBQUF6akIsVUFFQSxPQUFBdi9DLEtBQUF1MkUsZUFBQSxJQUFBaDNCLFVBQUEsS0FLQXl1QixTQUVBeUksY0FBQSxTQUFBOXhDLFFBQUEwSSxLQUFBcXBDLFlBQ0EsSUFBQXJXLE9BQUFyZ0UsS0FFQSxPQUFBLElBQUErakUsVUFBQSxTQUFBbCtCLFNBSUEsSUFJQXdZLEVBSkEvVCxJQUFBLFNBQUEzRixTQUFBLE9BQUFvL0IsVUFBQXo1QixJQUFBM0YsUUFBQWpnQyxJQUFBLFNBQUE0MEIsSUFBQSxPQUFBK21DLE9BQUFzVyxlQUFBcjlDLEdBQUErVCxLQUFBcXBDLGdCQUNBRSxTQUhBanlDLFFBQUFzNkIsUUFBQXQ2QixVQUdBM2lDLE9BQUEsU0FBQXMzQixJQUFBLE9BQUErbUMsT0FBQXdXLFVBQUF2OUMsTUFDQXc5QyxVQUFBbnlDLFFBQUEzaUMsT0FBQSxTQUFBczNCLElBQUEsT0FBQTBrQyxTQUFBNFksUUFBQXQ5QyxNQUlBLEdBQUErbUMsT0FBQTJWLFFBQUF6eEUsWUFBQW15RSxhQUFBbnlFLFlBQUE4b0MsT0FBQWd6QixPQUFBa1csZ0JBQUE1eEMsUUFBQTUvQixPQUFBLEdBSUEsQ0FFQSxJQUFBb29DLEtBQUFseUMsU0FBQWt5QyxLQUNBNHBDLE9BQUE1cEMsS0FBQStRLFVBQ0E1a0IsR0FBQXM5QyxRQUFBLEdBQ0FsNEIsV0FBQWMsVUFBQWQsV0FBQXBsQixLQUFBZ3JCLFNBQUFockIsR0FBQSx1QkFDQWt1QyxXQUFBOW9CLFdBQUFwbEIsS0FBQSxRQUFBQSxHQUFBNFMsTUFBQW1ULE9BRUFoQixFQUFBL1QsSUFBQXNzQyxTQUVBbDRCLGFBQ0FMLEVBQUFBLEVBQUFwWSxLQUFBLFdBQ0EsSUFBQW9ZLEVBQUEvVCxJQUFBd3NDLFdBRUEsT0FEQTNwQyxLQUFBK1EsVUFBQTY0QixPQUNBMTRCLFVBaEJBQSxFQUFBL1QsSUFBQXdzQyxVQUFBNW1ELE9BQUEwbUQsVUFzQkF2NEIsRUFBQXBZLEtBQUFKLFFBQUEzUyxTQUtBOGpELFVBQUEsU0FBQXJ5QyxRQUFBMEksTUFDQSxJQUFBZ3pCLE9BQUFyZ0UsS0FFQSxPQUFBLElBQUErakUsVUFBQSxTQUFBbCtCLFNBQUEsT0FBQWsrQixVQUFBejVCLElBQUEyMEIsUUFBQXQ2QixTQUFBamdDLElBQUEsU0FBQTQwQixJQUFBLE9BQUErbUMsT0FBQXNXLGVBQUFyOUMsR0FBQStULE1BQUEsTUFBQXBILEtBQUFKLFFBQUEzUyxTQUdBMmpELFVBQUEsU0FBQXY5QyxJQUNBLElBQUE4VixNQUFBNnZCLFFBQUEzbEMsSUFBQXQ1QixLQUFBaXpFLEtBQ0EsT0FBQWp6RSxLQUFBNGxFLElBQ0F0aEIsU0FBQWxWLE1BQUFwdkMsS0FBQTRsRSxJQUFBbnpELE1BQUEsS0FBQSxLQUNBOHRELFFBQUFueEIsTUFBQSxXQUdBNm5DLFdBQUEsU0FBQTM5QyxLQUNBLElBQUF0NUIsS0FBQTRsRSxLQUNBdnBDLEtBQUEvQyxHQUFBLGVBQUF0NUIsS0FBQTYyRSxVQUFBdjlDLE1BSUFxOUMsZUFBQSxTQUFBcjlDLEdBQUErVCxLQUFBcXBDLFlBQ0EsSUFBQXJXLE9BQUFyZ0UsS0FXQSxHQVJBcXRDLEtBQUFxeEIsVUFBQXJ4QixNQUNBQSxLQUNBbVMsVUFBQWQsV0FBQXBsQixJQUNBZ3JCLFNBQUFockIsR0FBQSxzQkFDQWt1QyxXQUFBOW9CLFdBQUFwbEIsSUFDQSxRQUFBQSxHQUFBNFMsTUFBQW1ULFFBQ0FyL0MsS0FBQTYyRSxVQUFBdjlDLEtBRUEyWixRQUFBM1osR0FBQSxVQUFBK1QsS0FBQSxPQUFBLFNBQUFydEMsT0FDQSxPQUFBK2pFLFVBQUFqK0IsU0FHQSxJQUFBRSxVQUFBLElBQUEwd0MsWUFBQTEyRSxLQUFBdTJFLGFBRUF2MkUsS0FBQXcyRSxjQUNBeDJFLEtBQUFrM0UsY0FDQWwzRSxLQUFBbTNFLGlCQUhBbjNFLEtBQUFvM0Usa0JBSUE5OUMsR0FBQStULE1BSUEsT0FGQTRGLFFBQUEzWixHQUFBK1QsS0FBQSxPQUFBLFFBQUFydEMsT0FFQWdtQyxRQUFBQyxLQUFBLFdBQ0FnTixRQUFBM1osR0FBQStULEtBQUEsUUFBQSxVQUFBZ3pCLFNBQ0FBLE9BQUFtVixRQUFBbDhDLE9BSUErOUMsUUFBQSxTQUFBLzlDLEdBQUFzOUMsU0FNQSxJQUFBVSxRQUpBaCtDLEtBS0F0NUIsS0FBQTRsRSxLQUNBMFIsUUFBQXRaLFNBQUFoK0QsS0FBQTRsRSxJQUFBLE1BQUExRyxRQUFBMFgsV0FBQXR5QixTQUFBaHJCLEdBQUF0NUIsS0FBQTRsRSxPQUNBMWhCLFlBQUE1cUIsR0FBQXQ1QixLQUFBNGxFLElBQUE1SCxTQUFBaCtELEtBQUE0bEUsSUFBQSxVQUFBMW9FLEVBQUEwNUUsVUFFQVUsUUFBQXBZLFFBQUEwWCxXQUFBclcsUUFBQWpuQyxHQUFBLFlBQ0ErQyxLQUFBL0MsR0FBQSxTQUFBczlDLFFBQUEsS0FBQSxJQUdBM08sR0FBQSxjQUFBM3VDLElBQUEzMUIsS0FBQSxTQUFBMjFCLElBQUEsT0FBQXNwQyxVQUFBdHBDLE1BQUFBLEdBQUE4RixVQUFBLEtBRUFwL0IsS0FBQWkzRSxXQUFBMzlDLElBQ0FnK0MsU0FBQXQzRSxLQUFBdzFFLFFBQUFsOEMsTUFHQTg5QyxpQkFBQSxTQUFBOTlDLEdBQUErVCxNQUVBLE9BREFydEMsS0FBQXEzRSxRQUFBLzlDLEdBQUErVCxNQUNBMDJCLFVBQUFsK0IsV0FHQXF4QyxjQUFBLFNBQUE1OUMsR0FBQStULE1BQ0EsSUFBQWd6QixPQUFBcmdFLEtBR0EwK0MsV0FBQThvQixXQUFBOW9CLFdBQUFwbEIsSUFDQWkrQyxNQUFBaitDLEdBQUE0ckMsY0FBQXBHLFFBQUExeUIsSUFBQTlTLEdBQUF5eUIsa0JBQUEsY0FBQStTLFFBQUExeUIsSUFBQTlTLEdBQUFrK0MsaUJBQUEsaUJBQUEsRUFDQUMsY0FBQTdVLFVBQUF0cEMsSUFBQStsQixPQUFBL2xCLEtBQUFvbEIsV0FBQSxFQUFBNjRCLE9BQUEsRUFFQS9QLFdBQUFDLE9BQUFudUMsSUFFQXQ1QixLQUFBNjJFLFVBQUF2OUMsS0FDQXQ1QixLQUFBcTNFLFFBQUEvOUMsSUFBQSxHQUdBK2xCLE9BQUEvbEIsR0FBQSxJQUdBd3lDLFFBQUFTLFFBRUEsSUFBQW1MLFVBQUFyNEIsT0FBQS9sQixLQUFBb2xCLFdBQUEsRUFBQTY0QixPQUdBLE9BRkFsNEIsT0FBQS9sQixHQUFBbStDLGdCQUVBcHFDLEtBQ0FtNkIsV0FBQWhyRSxNQUFBODhCLEdBQUErbEMsVUFBQXIvRCxLQUFBaTJFLFdBQUE5dkUsU0FBQSxTQUFBazVDLE9BQUFxNEIsWUFBQXI0RSxLQUFBZ2pCLE1BQUFyaUIsS0FBQXFoQixVQUFBLEVBQUFvMkQsY0FBQUMsWUFBQTEzRSxLQUFBbW5FLFlBQ0FLLFdBQUFockUsTUFBQTg4QixHQUFBdDVCLEtBQUFzMkUsVUFBQWozRSxLQUFBZ2pCLE1BQUFyaUIsS0FBQXFoQixVQUFBbzJELGNBQUFDLFlBQUExM0UsS0FBQW1uRSxZQUFBbGhDLEtBQUEsV0FBQSxPQUFBbzZCLE9BQUFnWCxRQUFBLzlDLElBQUEsTUFDQTJNLEtBQUEsV0FBQSxPQUFBbUcsSUFBQTlTLEdBQUErbUMsT0FBQTRWLGNBSUFrQixpQkFBQSxTQUFBNzlDLEdBQUErVCxNQUNBLElBQUFnekIsT0FBQXJnRSxLQUtBLE9BRkF3L0MsVUFBQWlvQixPQUFBbnVDLElBRUErVCxNQUNBcnRDLEtBQUFxM0UsUUFBQS85QyxJQUFBLEdBQ0FrbUIsVUFBQXVvQixHQUFBenVDLEdBQUF0NUIsS0FBQXUvQyxVQUFBLEdBQUF2L0MsS0FBQXFoQixTQUFBcmhCLEtBQUE0bkUsU0FHQXBvQixVQUFBajFCLElBQUErTyxHQUFBdDVCLEtBQUF1L0MsVUFBQSxJQUFBdi9DLEtBQUF1L0MsVUFBQSxHQUFBdi9DLEtBQUFxaEIsU0FBQXJoQixLQUFBNG5FLFFBQUEzaEMsS0FBQSxXQUFBLE9BQUFvNkIsT0FBQWdYLFFBQUEvOUMsSUFBQSxRQU9BcStDLFdBRUF0SixRQUFBeUgsTUFBQUMsV0FFQXppQyxPQUNBM08sUUFBQW5OLE9BQ0Fxd0IsT0FBQSxLQUNBK3ZCLFlBQUExWSxRQUNBMlksU0FBQTNZLFFBQ0EzeEIsT0FBQS9WLE9BQ0E2TixRQUFBN04sT0FDQTJ2QyxXQUFBM3ZDLFFBR0FyM0IsTUFDQXdrQyxRQUFBLE1BQ0FrakIsUUFBQSxFQUNBdEksWUFBQSxHQUNBcTRCLGFBQUEsRUFDQUMsVUFBQSxFQUNBQyxRQUFBLFVBQ0F2cUMsT0FBQSx3QkFDQWxJLFFBQUEsMEJBQ0E4aEMsV0FBQSxRQUdBdHVCLFVBRUEwakIsTUFBQSxTQUFBeUcsSUFBQWlRLEtBR0EsT0FBQWhMLEdBRkFqRixJQUFBcitCLFFBRUFzdUMsT0FLQXhpQyxTQUlBdmxDLEtBQUEsUUFFQWlsRCxTQUFBLFdBQ0EsT0FBQW53RCxLQUFBLFFBQUEsSUFBQUEsS0FBQWd6RSxPQUFBLFFBR0F2NUMsUUFBQSxTQUFBLzVCLEdBQ0FBLEVBQUEweUMsaUJBQ0FweUMsS0FBQXV0QyxPQUFBcGpCLE1BQUE4OUMsR0FBQWpvRSxLQUFBLFFBQUEsSUFBQUEsS0FBQWd6RSxPQUFBLE9BQUFoekUsS0FBQWl6RSxLQUFBdnpFLEVBQUE4ckQsYUFPQW1pQixVQUFBLFdBRUEsSUFBQSxJQUFBM3RFLEtBQUE2bkQsT0FBQSxDQUlBLElBQUFBLE9BQUE3bkQsS0FBQXU4RCxNQUFBc0MsT0FBQTcrRCxLQUFBNm5ELFNBQ0FBLFNBQUF2RCxTQUFBdUQsT0FBQTduRCxLQUFBODNFLFVBQ0E5M0UsS0FBQXV0QyxPQUFBc2EsUUFBQSxLQUlBa21CLE9BQUEsV0FDQSxJQUFBMU4sT0FBQXJnRSxLQUdBQSxLQUFBdThELE1BQUFyNkQsUUFBQSxTQUFBbzNCLElBQUEsT0FBQSttQyxPQUFBK1csaUJBQUEvMkUsRUFBQWdnRSxPQUFBaDdCLFFBQUEvTCxJQUFBZ3JCLFNBQUFockIsR0FBQSttQyxPQUFBeVgsWUFFQSxJQUFBandCLFFBQUE3bkQsS0FBQTQzRSxjQUFBdHpCLFNBQUF0a0QsS0FBQXU4RCxNQUFBdjhELEtBQUE4M0UsVUFBQTkzRSxLQUFBdThELE1BQUEsR0FDQTFVLFFBQ0E3bkQsS0FBQXV0QyxPQUFBc2EsUUFBQSxJQUlBbW1CLFNBRUF6Z0MsT0FBQSxTQUFBby9CLEtBQUErSixZQUNBLElBQUFyVyxPQUFBcmdFLEtBR0EyekUsU0FBQTNPLFNBQUEySCxLQUFBM3NFLEtBQUF1OEQsT0FDQTFVLE9BQUE3bEQsT0FBQWhDLEtBQUF1OEQsTUFBQSxJQUFBdjhELEtBQUEsVUFFQTJzRSxLQUFBM3NFLEtBQUF1OEQsTUFBQW9YLGFBRUFoSCxNQUNBejhDLFFBQUFsd0IsS0FBQTYzRSxXQUFBN1osU0FBQW5XLE9BQUE4a0IsT0FBQTlrQixZQUNBM2xELFFBQUEsU0FBQW8zQixJQUVBLElBQUF5K0MsT0FBQXorQyxLQUFBcXpDLEtBQ0E1ckUsTUFBQWczRSxTQUFBenpCLFNBQUFockIsR0FBQSttQyxPQUFBeVgsU0FFQSxHQUFBLzJFLFFBQUFnM0UsUUFBQTFYLE9BQUF1WCxlQUFBL3ZCLE9BQUE5aUQsT0FBQSxHQUFBLENBSUFtL0MsWUFBQTVxQixHQUFBK21DLE9BQUF5WCxRQUFBLzJFLE9BRUEsSUFBQXNrQyxRQUFBL0wsR0FBQTArQyxTQUFBMStDLEdBQUEwK0MsU0FBQWpzQixrQkFBQTFyRCxFQUFBZ2dFLE9BQUFoN0IsUUFBQS9MLElBRUFBLEdBQUEwK0MsV0FDQTErQyxHQUFBMCtDLFNBQUFsc0IsUUFBQXptQixRQUFBLFNBQ0FoSixLQUFBL0MsR0FBQTArQyxTQUFBLFNBQUFqM0UsTUFBQSxHQUFBLE9BR0FzL0QsT0FBQStXLGlCQUFBL3hDLFNBQUEsR0FDQWc3QixPQUFBb1csY0FBQW45QyxHQUFBMCtDLFNBQUFqM0UsTUFBQTIxRSxZQUFBendDLEtBQUEsV0FDQXFlLFNBQUFockIsR0FBQSttQyxPQUFBeVgsV0FBQS8yRSxRQUVBQSxPQUNBcy9ELE9BQUErVyxpQkFBQS94QyxTQUFBLEdBR0EvTCxHQUFBMCtDLFNBQUEsS0FDQTlyQixPQUFBN21CLGtCQVdBNHlDLE9BRUF6K0MsT0FBQSxFQUVBNjBDLFFBQUF5SCxNQUFBQyxXQUVBdHJFLEtBQUEsWUFFQTZvQyxPQUNBNGtDLE1BQUExZ0QsUUFHQXIzQixNQUNBby9DLFlBQUEsR0FDQTQ0QixTQUFBLGtCQUNBOTJELFNBQUEsSUFDQWkxRCxVQUFBalgsUUFBQWhqQixRQUFBLEdBQUEwNUIsVUFBQTUxRSxLQUFBbTJFLFlBR0E3bEMsU0FJQXZsQyxLQUFBLFFBRUFpbEQsU0FBQSxXQUNBLE9BQUFud0QsS0FBQW00RSxVQUdBMStDLFFBQUEsU0FBQS81QixHQUNBQSxFQUFBMHlDLGlCQUNBcHlDLEtBQUFrNEUsV0FPQWxLLFNBRUFrSyxNQUFBLFdBQ0EsSUFBQTdYLE9BQUFyZ0UsS0FFQUEsS0FBQXkyRSxjQUFBejJFLEtBQUFpekUsS0FBQWh0QyxLQUFBLFdBQUEsT0FBQW82QixPQUFBeVUsVUFBQSxRQU9BLFNBQUFzRCxLQUFBNzVFLE9BRUE2bEMsTUFBQSxXQUVBLElBQUEyeUMsT0FBQSxFQUNBc0IsUUFBQSxFQXdCQSxHQXRCQXBvQyxHQUFBOXpDLE9BQUEsY0FBQSxTQUFBdUQsR0FBQSxPQUFBbkIsTUFBQXd2RSxPQUFBLEtBQUFydUUsS0FDQXV3QyxHQUFBOXpDLE9BQUEsU0FBQSxTQUFBdUQsR0FDQUEsRUFBQXk0QixJQUFBNCtDLFFBQUE1NkUsT0FBQWt6RCxZQUFBLE9BQUEsS0FDQTN2RCxFQUFBMnZELFlBQUEwbkIsT0FBQTU2RSxPQUFBa3pELFlBQ0E5d0QsTUFBQXd2RSxPQUFBLEtBQUFydUUsS0FDQXl6RSxTQUFBLEVBQUFtRixTQUFBLElBRUFyb0MsR0FBQWgxQyxTQUFBLGlCQUFBLFNBQUErbkUsS0FDQSxJQUFBcndDLE9BQUFxd0MsSUFBQXJ3QyxRQUVBeVosSUFBQXpaLE9BQUEsa0JBQUEsSUFBQTd3QixNQUFBLHdCQUVBdTJFLFVBQ0Fqc0MsSUFBQW54QyxTQUFBa3lDLEtBQUEsWUFBQSxVQUNBdEUsV0FBQSxhQUNBd3ZDLFNBQ0Fqc0MsSUFBQW54QyxTQUFBa3lDLEtBQUEsWUFBQSxLQUVBaXlCLEtBQUFoekIsSUFBQXpaLE9BQUEsc0JBQUEsUUFFQSxHQUVBMDRDLFNBQUEsQ0FJQSxJQUFBekYsSUFBQSxXQUVBMzFCLEdBQUFoMUMsU0FBQSxNQUFBLFNBQUErbkUsS0FDQSxJQUFBcndDLE9BQUFxd0MsSUFBQXJ3QyxPQUVBLE9BQUFzMUMsR0FBQSxJQUFBckMsS0FBQTFqRSxRQUFBLFNBQUFvM0IsSUFBQSxPQUFBeXBDLE9BQUFwd0MsT0FBQTJHLEtBQUEzN0IsWUFBQTI3QixHQUFBc3NDLFNBS0ExaEUsT0FBQTJtQyxlQUFBdHNDLE1BQUEsaUJBRUFrTixJQUFBLFNBQUFsTyxVQUNBMHlDLEdBQUFoMUMsU0FBQSxNQUFBc0MsU0FBQSxTQUFBeWxFLEtBR0EsT0FBQW5mLFNBRkFtZixJQUFBeFgsUUFFQW9hLFVBTUFybkUsTUFBQWc2RSxjQUFBLDZEQU1BLElBd05BMXdCLE9BaWFBMndCLFdBem5CQUMsT0FFQWh1RSxLQUFBLFdBRUE2b0MsT0FDQW9sQyxTQUFBeFosUUFDQXlaLFNBQUF6WixTQUdBLytELE1BQ0F1NEUsVUFBQSxFQUNBQyxVQUFBLEdBR0E5L0IsVUFFQSsvQixPQUFBLFNBQUE1VixLQUdBLE1BQUEsV0FGQUEsSUFBQTJWLFdBT0FoTCxVQUFBLFdBRUEzdEUsS0FBQTQ0RSxTQUFBclksUUFBQXZnRSxLQUFBaXpFLElBQUEsYUFDQWp6RSxLQUFBaXpFLElBQUE0RixRQUFBLFNBS0F6MEMsTUFBQSxXQUVBcGtDLEtBQUE4NEUsT0FBQSxJQUFBckssT0FBQXp1RSxLQUFBaXpFLEtBRUFqekUsS0FBQTA0RSxVQUNBMTRFLEtBQUE4NEUsT0FBQW5KLFFBS0E1QixTQUlBOUIsS0FBQSxTQUFBNzBDLEVBQUE0ckMsS0FDQSxJQUFBam1FLEtBQUFpbUUsSUFBQWptRSxLQUdBLFNBQUFpRCxLQUFBODRFLFVBQUEsV0FBQS83RSxNQUFBLFdBQUFBLE1BQUFpRCxLQUFBNDRFLFdBR0F6c0IsUUFBQXlXLFVBQUE1aUUsS0FBQWl6RSxNQUFBLFdBQUE3bUMsSUFBQXBzQyxLQUFBaXpFLElBQUEsY0FDQTJGLE9BQUE1NEUsS0FBQTQ0RSxRQUFBMU8sU0FBQWxxRSxLQUFBaXpFLE9BSUE3RyxNQUFBLFNBQUFwSixLQUNBLElBQUE3VyxRQUFBNlcsSUFBQTdXLFFBQ0F5c0IsT0FBQTVWLElBQUE0VixRQUdBenNCLFNBQUFuc0QsS0FBQTQ0RSxTQUFBQSxPQUNBNTRFLEtBQUE4NEUsT0FBQXBKLFVBQ0EsSUFBQTF2RSxLQUFBMjRFLFVBQUEzNEUsS0FBQTQ0RSxRQUFBQSxTQUNBNTRFLEtBQUE4NEUsT0FBQXJKLFFBS0FoL0IsUUFBQSxPQUFBLFNBQUEsYUFRQXNvQyxPQUVBMUssUUFBQXlILE1BQUEyQyxPQUVBbmxDLE9BQ0F3RixNQUFBK2xCLE9BQ0F4ZixPQUFBd2YsUUFHQTErRCxNQUNBdTRFLFVBQUEsR0FHQTNLLFFBRUEzQixNQUFBLFdBRUEsSUFBQTl5QyxHQUFBdDVCLEtBQUFpekUsSUFFQSxHQUFBclEsVUFBQXRwQyxJQUFBLENBSUEsSUFBQTBwQyxJQUFBMXBDLEdBQUFwSSxXQUNBOG5ELFVBQUFoVyxJQUFBNVcsYUFDQTZzQixTQUFBalcsSUFBQTdvQixZQUVBL04sSUFDQUEsSUFBQTlTLElBQUF3ZixNQUFBLEdBQUF1RyxPQUFBLEtBQ0EwZ0IsV0FBQU8sT0FFQXhuQixNQUFBOTRDLEtBQUE4NEMsT0FBQXhmLEdBQUE0L0MsWUFDQTc1QixPQUFBci9DLEtBQUFxL0MsUUFBQS9sQixHQUFBNi9DLGVBR0FyZ0MsTUFBQW1nQyxVQUFBQSxTQUFBLEVBQUEsRUFBQSxHQUNBNTVCLE9BQUEyNUIsV0FBQUEsVUFBQSxFQUFBLEVBQUEsUUFPQXZvQyxRQUFBLE9BQUEsV0FJQUEsUUFFQTJvQyxlQUFBLFdBQ0FwNUUsS0FBQXExRSxXQU9BZ0UsVUFFQS9sQyxPQUNBNTBDLElBQUE4NEIsT0FDQWxWLE9BQUEsS0FDQWttRCxLQUFBdEosUUFDQW9hLE9BQUE5aEQsUUFHQXIzQixNQUNBekIsSUFBQSxXQUFBdXNFLE1BQUEsUUFBQSxRQUNBekMsTUFBQSxFQUNBbG1ELFFBQUEsRUFDQWczRCxPQUFBLElBR0F6Z0MsVUFFQW42QyxJQUFBLFNBQUFza0UsS0FDQSxJQUFBdGtFLElBQUFza0UsSUFBQXRrRSxJQUVBLE9BQUFBLEtBQUFzL0QsU0FBQXQvRCxJQUFBLEtBQUEsR0FBQSxZQUFBK1QsTUFBQSxNQUdBMGxCLElBQUEsV0FDQSxPQUFBbjRCLEtBQUF0QixJQUFBLElBR0F3cUUsTUFBQSxXQUNBLE9BQUFscEUsS0FBQXRCLElBQUEsS0FLQXN2RSxTQUVBN0YsV0FBQSxTQUFBdnFFLFFBQUErMEIsT0FBQTgxQyxVQUtBLElBQUExM0MsS0FIQTQwQyxjQUFBL25FLFFBQUFvQyxLQUFBLE9BQUEsc0NBQ0Fvc0MsSUFBQXh1QyxTQUFBODhCLElBQUEsR0FBQTRpQixLQUFBLEtBR0EsSUFDQWk4QixVQURBdjVFLEtBQ0FzaUIsT0FFQWkzRCxVQUFBOW9CLFVBQUE4b0IsV0FDQUEsV0FDQXhvRCxLQUFBMXdCLEVBQUFrNUUsWUFDQWozRCxPQUFBeU8sTUFBQSxNQUFBeW9ELEtBQUEsT0FBQSxPQUFBbDNELE9BQUFxUSxRQUFBLE1BQUE2bUQsS0FBQSxRQUFBLFVBQ0EsRUFFQSxJQUFBQSxLQUFBeDVFLEtBQUF5NUUsVUFDQS9GLE1BQUF2TCxXQUNBdnFFLFFBQ0ErMEIsT0FDQSxNQUFBNm1ELEtBQUF2UCxhQUFBanFFLEtBQUFtNEIsS0FBQSxJQUFBbjRCLEtBQUEsTUFBQUEsS0FBQSxNQUFBLElBQUFpcUUsYUFBQWpxRSxLQUFBbTRCLEtBQ0EsTUFBQXFoRCxLQUFBeDVFLEtBQUEsSUFBQSxJQUFBQSxLQUFBLE1BQUFBLEtBQUEsTUFBQSxJQUFBQSxLQUFBLElBQ0EsTUFBQXc1RSxLQUFBLElBQUEsU0FBQXg1RSxLQUFBbTRCLEtBQUFvaEQsVUFBQUEsV0FBQSxLQUFBLFFBQUF2NUUsS0FBQW00QixLQUFBb2hELFVBQUFBLFdBQ0EsS0FDQXY1RSxLQUFBd29FLEtBQ0FDLFVBQ0E5MUMsT0FDQTF3QixFQUFBeXhFLE1BQUF6eEUsRUFDQW9QLEVBQUFxaUUsTUFBQXJpRSxFQUVBclIsS0FBQW00QixJQUFBLE1BQUFxaEQsS0FBQXYzRSxFQUFBb1AsRUFDQXJSLEtBQUFrcEUsTUFBQSxNQUFBc1EsS0FBQW5vRSxFQUFBcFAsRUFFQWlpRCxZQUFBdG1ELFFBQUFvQyxLQUFBLE9BQUEsSUFBQUEsS0FBQSxJQUFBLElBQUFBLEtBQUEsT0FBQSxJQUFBQSxLQUFBc2lCLFNBSUFtM0QsUUFBQSxXQUNBLE1BQUEsUUFBQXo1RSxLQUFBbTRCLEtBQUEsV0FBQW40QixLQUFBbTRCLElBQUEsSUFBQSxPQVNBdWhELE1BRUFyTCxRQUFBZ0wsU0FBQXRELFdBRUF0ckUsS0FBQSxNQUVBNm9DLE9BQ0FxbUMsS0FBQSxPQUNBcHNDLE9BQUEyeEIsUUFDQXVKLFNBQUF2SixRQUNBMGEsY0FBQTFhLFFBQ0EyYSxVQUFBaGIsT0FDQWliLFVBQUFqYixPQUNBa2IsUUFBQXZpRCxRQUdBcjNCLE1BQ0F3NUUsTUFBQSxRQUFBLFNBQ0Fwc0MsT0FBQSxNQUNBazdCLFNBQUF0c0UsT0FDQXk5RSxlQUFBLEVBQ0FDLFVBQUEsRUFDQUMsVUFBQSxJQUNBQyxTQUFBLEVBQ0FDLFVBQUEsSUFDQXo2QixXQUFBLHFCQUNBcW1CLElBQUEsV0FHQS9zQixVQUVBNHZCLFNBQUEsU0FBQXpGLElBQUFpUSxLQUdBLE9BQUFyUyxNQUZBb0MsSUFBQXlGLFNBRUF3SyxNQUdBOEcsUUFBQSxTQUFBL1csS0FHQSxPQUZBQSxJQUFBK1csU0FFQSxNQUFBLzVFLEtBQUE0eEUsU0FBQSxNQUdBMEgsT0FBQSxXQUNBLE9BQUF0NUUsS0FBQSs1RSxVQUtBeG9ELEtBQUEsV0FDQXZ4QixLQUFBaTZFLFFBQUEsSUFBQXJOLGNBR0FlLFVBQUEsV0FFQTlwQixTQUFBN2pELEtBQUFpekUsSUFBQWp6RSxLQUFBKzVFLFNBRUEsSUFDQXhzQyxPQURBdnRDLEtBQUFnekUsT0FDQXpsQyxPQUNBdnRDLEtBQUF1dEMsT0FBQUEsUUFBQXZ0QyxLQUFBdTFFLFFBQUEsU0FBQTNVLE1BQUFyekIsT0FBQXZ0QyxLQUFBaXpFLE1BQ0F0Z0QsT0FBQTN5QixLQUFBaXpFLElBQ0EwRyxLQUFBMzVFLEtBQUEyNUUsT0FHQTM1RSxLQUFBaTNFLFdBQUFqM0UsS0FBQWl6RSxNQUlBeGlDLFNBS0F2bEMsS0FBQSxRQUVBaWxELFNBQUEsV0FDQSxNQUFBLElBQUFud0QsS0FBQSxRQUFBLFVBR0F5NUIsUUFBQSxTQUFBLzVCLEdBQ0FBLEVBQUEweUMsaUJBQ0FweUMsS0FBQXN0QyxNQUFBLE1BT0FwaUMsS0FBQSxRQUVBaWxELFNBQUEsV0FDQSxNQUFBLGdCQUdBMTJCLFFBQUEsU0FBQS81QixHQUVBLElBQUFBLEVBQUE4ekMsaUJBQUEsQ0FJQSxJQUFBdHlDLEdBQUF4QixFQUFBaXpCLE9BQUF1TSxLQUVBaCtCLElBQ0F4QixFQUFBMHlDLGlCQUdBbHhDLElBQUE2aEUsT0FBQTdoRSxHQUFBbEIsS0FBQWl6RSxNQUNBanpFLEtBQUFzdEMsTUFBQSxPQVFBcGlDLEtBQUEsZUFFQXV1QixRQUFBLFdBQ0F6NUIsS0FBQXN0QyxNQUFBLE1BT0FwaUMsS0FBQSxTQUVBKzRCLE1BQUEsRUFFQXhLLFFBQUEsU0FBQS81QixFQUFBNnRDLFFBRUE3dEMsRUFBQTB5QyxpQkFFQXB5QyxLQUFBNjJFLFlBQ0E3MkUsS0FBQXN0QyxNQUFBLEdBRUF0dEMsS0FBQXF0QyxLQUFBRSxRQUFBLE1BUUFyaUMsS0FBQTBnRSxhQUVBNXBFLE9BQUEsV0FDQSxPQUFBZzhELFNBQUFoK0QsS0FBQTI1RSxLQUFBLFVBR0FsZ0QsUUFBQSxTQUFBLzVCLEdBRUFneEUsUUFBQWh4RSxLQUlBbW9ELFFBQ0FBLFNBQUE3bkQsTUFDQTZuRCxPQUFBdGEsUUFDQXl3QixTQUFBblcsT0FBQXRhLE9BQUFvc0MsS0FBQSxXQUNBNVcsT0FBQXJqRSxFQUFBaXpCLE9BQUFrMUIsT0FBQXRhLE9BQUEwbEMsT0FDQXBULGFBQUE1OUQsRUFBQXZDLEVBQUEyMEMsTUFBQWhqQyxFQUFBM1IsRUFBQTQwQyxPQUFBaHlCLE9BQUF1bEMsT0FBQW9yQixPQUVBcHJCLE9BQUF2YSxNQUFBLEdBR0E1dEMsRUFBQTB5QyxpQkFDQXB5QyxLQUFBcXRDLEtBQUFydEMsS0FBQXV0QyxZQU9BcmlDLEtBQUEsYUFFQXV1QixRQUFBLFNBQUEvNUIsRUFBQTZ0QyxRQUVBQSxTQUFBeXdCLFNBQUF6d0IsT0FBQTVhLE9BQUEzeUIsS0FBQWl6RSxPQUlBdnpFLEVBQUEweUMsaUJBQ0FweUMsS0FBQXF0QyxLQUFBRSxRQUFBdnRDLEtBQUF1dEMsWUFPQXJpQyxLQUFBLGNBQUEyZ0UsYUFFQXB5QyxRQUFBLFNBQUEvNUIsRUFBQTZ0QyxRQUVBbWpDLFFBQUFoeEUsSUFBQTZ0QyxTQUFBeXdCLFNBQUF6d0IsT0FBQTVhLE9BQUEzeUIsS0FBQWl6RSxPQUlBdnpFLEVBQUEweUMsaUJBRUFweUMsS0FBQXV0QyxRQUFBeXdCLFNBQUFoK0QsS0FBQXV0QyxPQUFBb3NDLEtBQUEsVUFDQTM1RSxLQUFBc3RDLFdBUUFwaUMsS0FBQSxhQUVBKzRCLE1BQUEsRUFFQXhLLFFBQUEsV0FDQXo1QixLQUFBazZFLGNBQ0ExNkIsVUFBQWlvQixPQUFBem5FLEtBQUFpekUsS0FDQWp6RSxLQUFBaTZDLGNBT0EvdUMsS0FBQSxPQUVBKzRCLE1BQUEsRUFFQXhLLFFBQUEsV0FDQXo1QixLQUFBaTZFLFFBQUExb0QsT0FDQXZ4QixLQUFBdXRDLFNBQ0FzVyxTQUFBN2pELEtBQUF1dEMsT0FBQTBsQyxJQUFBanpFLEtBQUE0bEUsS0FDQXZwQyxLQUFBcjhCLEtBQUF1dEMsT0FBQTBsQyxJQUFBLGdCQUFBLFNBMExBLFdBRUEsR0FBQXVGLFdBQ0EsT0FHQUEsWUFBQSxFQUNBdm9DLEdBQUFoMUMsU0FBQSxRQUFBLFNBQUErbkUsS0FDQSxJQUdBditCLEtBSEE5UixPQUFBcXdDLElBQUFyd0MsT0FDQTZnQixpQkFBQXd2QixJQUFBeHZCLGlCQUlBLElBQUFBLGlCQUlBLEtBQUFxVSxRQUFBQSxTQUFBcGpCLE9BQUFzK0IsT0FBQXB3QyxPQUFBazFCLE9BQUFvckIsUUFBQXByQixPQUFBdGEsU0FBQXcxQixPQUFBcHdDLE9BQUFrMUIsT0FBQXRhLE9BQUEwbEMsT0FDQXh1QyxLQUFBb2pCLE9BQ0FBLE9BQUF2YSxNQUFBLEtBM01BNGxDLE1BT0Fob0UsS0FBQSxhQUVBKzRCLE1BQUEsRUFFQXhLLFFBQUEsV0FDQXo1QixLQUFBazZFLGlCQU9BaHZFLEtBQUEsT0FFQXV1QixRQUFBLFNBQUF1cEMsS0FDQSxJQUFBcndDLE9BQUFxd0MsSUFBQXJ3QyxPQUdBM3lCLEtBQUFpekUsTUFBQXRnRCxRQUtBazFCLE9BQUE3bkQsS0FBQW02RSxXQUFBLEtBQUF0eUIsT0FFQTduRCxLQUFBdXRDLFNBQ0E1dkMsWUFBQXFDLEtBQUF1dEMsT0FBQTBsQyxJQUFBanpFLEtBQUE0bEUsS0FDQXZwQyxLQUFBcjhCLEtBQUF1dEMsT0FBQTBsQyxJQUFBLGdCQUFBLFNBQ0FqekUsS0FBQXV0QyxPQUFBMGxDLElBQUEvL0IsT0FDQSswQixHQUFBLFlBQUFqb0UsS0FBQXV0QyxPQUFBMGxDLEtBQUEvd0UsUUFBQSxTQUFBbzNCLElBQUEsT0FBQUEsR0FBQTRaLFVBR0FsekMsS0FBQWk2RSxRQUFBeFMsVUFiQTVmLE9BQUEsT0FBQUEsUUFBQWtiLE9BQUFwd0MsT0FBQTN5QixLQUFBaXpFLE1BQUFqekUsS0FBQTYyRSxZQUFBNzJFLEtBQUE2bkQsVUFvQkFrbUIsUUFFQTNCLE1BQUEsV0FFQXBzRSxLQUFBNjJFLGNBQUFyM0IsVUFBQWQsV0FBQTErQyxLQUFBaXpFLE1BQ0FqekUsS0FBQWk2QyxZQUtBeEosUUFBQSxXQUlBdTlCLFNBRUEzZ0MsS0FBQSxTQUFBRSxPQUFBaVYsT0FDQSxJQUFBNmQsT0FBQXJnRSxVQUNBLElBQUF3aUQsUUFBQUEsT0FBQSxHQUdBLElBQUFuVixLQUFBLFdBQUEsT0FBQWd6QixPQUFBd1csYUFBQXhXLE9BQUFvVyxjQUFBcFcsT0FBQTRTLEtBQUEsSUFDQW1ILFFBQUEsV0FNQSxHQUpBL1osT0FBQTl5QixPQUFBQSxRQUFBOHlCLE9BQUE5eUIsT0FFQTh5QixPQUFBNlosZUFFQTdaLE9BQUE4WixXQUVBLEdBQUEzM0IsT0FBQXFGLFFBQUFBLFNBQUF3WSxRQUFBeFksT0FBQXd5QixXQUNBaGEsT0FBQWlhLFVBQUF6eEMsV0FBQXczQixPQUFBaHpCLEtBQUEsUUFEQSxDQUdBLEdBQUFnekIsT0FBQWthLFdBQUExeUIsUUFBQSxDQUVBLElBQUFBLE9BQUEyeUIsVUFHQSxPQUZBM3lCLE9BQUF2YSxNQUFBLFFBS0EsR0FBQXVhLFNBQUF3WSxPQUFBb2EsVUFBQTV5QixVQUFBd1ksT0FBQWthLFdBQUExeUIsUUFHQSxJQURBLElBQUFwakIsS0FDQW9qQixRQUFBQSxTQUFBcGpCLE9BQUE0N0IsT0FBQW9hLFVBQUE1eUIsU0FDQXBqQixLQUFBb2pCLE9BQ0FBLE9BQUF2YSxNQUFBLEdBS0FrVixPQUFBNmQsT0FBQXdaLFVBQ0F4WixPQUFBaWEsVUFBQXp4QyxXQUFBd0UsS0FBQWd6QixPQUFBd1osV0FFQXhzQyxPQUdBd2EsT0FBQXdZLFNBR0E5eUIsUUFBQXZ0QyxLQUFBdXRDLFFBQUFBLE9BQUEwbEMsTUFBQWp6RSxLQUFBdXRDLE9BQUEwbEMsS0FFQXBzQyxLQUFBN21DLEtBQUFpekUsSUFBQSxPQUFBbUgsU0FDQXA2RSxLQUFBc3RDLE1BQUEsSUFHQThzQyxXQUlBOXNDLEtBQUEsU0FBQWtWLE9BQ0EsSUFBQTZkLE9BQUFyZ0UsVUFDQSxJQUFBd2lELFFBQUFBLE9BQUEsR0FHQSxJQUFBbFYsS0FBQSxXQUFBLE9BQUEreUIsT0FBQTJXLFVBQUEzVyxPQUFBNFMsS0FBQSxJQUVBanpFLEtBQUFrNkUsY0FFQWw2RSxLQUFBcTZFLFdBQUFyNkUsS0FBQWk2RSxRQUFBak4sUUFBQWh0RSxLQUFBaXpFLEtBRUF6d0IsT0FBQXhpRCxLQUFBcTZFLFdBQ0FyNkUsS0FBQXc2RSxVQUFBM3hDLFdBQUE3b0MsS0FBQXN0QyxLQUFBdHRDLEtBQUFnNkUsV0FDQXgzQixPQUFBeGlELEtBQUE4NUUsVUFDQTk1RSxLQUFBdzZFLFVBQUEzeEMsV0FBQXlFLEtBQUF0dEMsS0FBQTg1RSxXQUVBeHNDLFFBSUE0c0MsWUFBQSxXQUNBejNCLGFBQUF6aUQsS0FBQXM2RSxXQUNBNzNCLGFBQUF6aUQsS0FBQXc2RSxXQUNBeDZFLEtBQUFzNkUsVUFBQSxLQUNBdDZFLEtBQUF3NkUsVUFBQSxLQUNBeDZFLEtBQUFxNkUsWUFBQSxHQUdBRixTQUFBLFdBQ0EsT0FBQXR5QixTQUFBN25ELE1BR0F5NkUsVUFBQSxTQUFBQyxNQUNBLE9BQUFBLE1BQUFBLE9BQUExNkUsTUFBQStpRSxPQUFBL2lFLEtBQUFpekUsSUFBQXlILEtBQUF6SCxNQUdBc0gsV0FBQSxTQUFBRyxNQUNBLE9BQUFBLE1BQUFBLE9BQUExNkUsTUFBQStpRSxPQUFBMlgsS0FBQXpILElBQUFqekUsS0FBQWl6RSxNQUdBaDVCLFNBQUEsV0FFQTByQixjQUFBM2xFLEtBQUFpekUsSUFBQWp6RSxLQUFBLFFBQUEscUJBQ0Fvc0MsSUFBQXBzQyxLQUFBaXpFLEtBQUF2NEMsSUFBQSxHQUFBNGlCLEtBQUEsR0FBQW5SLFFBQUEsVUFDQStYLFlBQUFsa0QsS0FBQWl6RSxJQUFBanpFLEtBQUEsUUFBQSxZQUFBQSxLQUFBNDVFLGVBRUEsSUFBQW5SLFNBQUFubUQsT0FBQXRpQixLQUFBeW9FLFVBQ0FrUyxRQUFBMzZFLEtBQUE0NUUsY0FBQW5SLFNBQUFubUQsT0FBQXRpQixLQUFBdXRDLE9BQUEwbEMsS0FFQSxHQUFBLFlBQUFqekUsS0FBQWtwRSxNQUFBLENBQ0EsSUFBQWhoRSxLQUFBLE1BQUFsSSxLQUFBeTVFLFVBQUEsUUFBQSxTQUNBcnRDLElBQUFwc0MsS0FBQWl6RSxJQUFBL3FFLEtBQUF5eUUsUUFBQXp5RSxZQUNBbEksS0FBQWl6RSxJQUFBOTRCLFlBQUE5NkMsS0FBQTBOLElBQUEwN0QsU0FBQTN1QixNQUFBNmdDLFFBQUFyOUIsS0FBQXE5QixRQUFBN2dDLE1BQUEydUIsU0FBQW5yQixPQUNBdUcsU0FBQTdqRCxLQUFBaXpFLElBQUFqekUsS0FBQSxRQUFBLFVBR0FBLEtBQUFtb0UsV0FBQW5vRSxLQUFBaXpFLElBQUFqekUsS0FBQTQ1RSxjQUFBNTVFLEtBQUF5b0UsU0FBQXpvRSxLQUFBdXRDLE9BQUEwbEMsSUFBQWp6RSxLQUFBeW9FLFVBRUFyOEIsSUFBQXBzQyxLQUFBaXpFLElBQUEsVUFBQSxPQWtDQSxJQUFBMkgsVUFFQXhNLFFBQUFzTCxNQUlBbUIsWUFFQXhNLFFBQUF5SCxPQUVBcnJFLEtBQUEsU0FFQTZvQyxPQUNBM2dCLE9BQUF1c0MsU0FHQS8rRCxNQUNBd3lCLFFBQUEsR0FHQWttQixVQUVBNzBDLE1BQUEsU0FBQW96QixFQUFBNjdDLEtBQ0EsT0FBQTV5RSxFQUFBd2lFLFNBQUFvUSxNQUdBbHlFLE1BQUEsV0FDQSxPQUFBZixLQUFBZ0UsTUFBQXloRSxvQkFHQTl5QyxPQUFBLFNBQUFxd0MsSUFBQWlRLEtBQ0EsSUFBQXRnRCxPQUFBcXdDLElBQUFyd0MsT0FFQSxPQUFBQSxVQUFBLElBQUFBLFFBQ0EzeUIsS0FBQWdFLE1BQUFrdEIsYUFBQStoRCxLQUNBanpFLEtBQUFnRSxNQUFBeWhFLG9CQUNBN0UsTUFBQWp1QyxPQUFBc2dELFFBS0FsRixPQUFBLFdBRUEsSUFDQXA3QyxPQURBM3lCLEtBQ0EyeUIsT0FDQTN1QixNQUZBaEUsS0FFQWdFLE1BRUEsR0FBQTJ1QixPQUFBLENBSUEsSUFBQWliLE9BQ0ExbEMsS0FBQTQ2RCxRQUFBbndDLFFBQUEsUUFBQSxjQUNBOFIsS0FBQTlSLE9BQUF6cUIsTUFDQXFCLE1BQUF2RixNQUFBODJFLE9BQUE5MkUsTUFBQTgyRSxNQUFBLEdBQ0E5MkUsTUFBQTgyRSxNQUFBLEdBQUE1dkUsS0FDQTJYLFFBQUE3ZSxNQUFBLFlBQUE0cEMsT0FBQXE2QixHQUFBLFNBQUFqa0UsT0FBQWhDLE9BQUEsU0FBQXMzQixJQUFBLE9BQUFBLEdBQUFtRyxXQUFBLElBQ0FtTyxPQUFBL1EsWUFDQTc0QixNQUFBdUYsTUFFQWs3QixPQUFBbDdCLFFBQ0FvcEIsT0FBQXpxQixNQUFBcUIsU0FLQWtuQyxTQUlBdmxDLEtBQUEseUNBRUFpbEQsU0FBQTBTLFNBRUFwcEMsUUFBQSxTQUFBdXBDLEtBQ0EsSUFBQWptRSxLQUFBaW1FLElBQUFqbUUsS0FDQWltRSxJQUFBeFgsVUFFQXhyRCxLQUFBZ0UsT0FDQWtnRCxZQUNBbGtELEtBQUFlLE1BQ0EsT0FBQWk5RCxTQUFBamhFLEtBQUEsU0FBQSxRQUFBLFNBQ0FpaEUsVUFBQSxVQUFBLGNBQUFqaEUsVUFTQW1PLEtBQUEsU0FFQXV1QixRQUFBLFdBQ0F6NUIsS0FBQXExRSxZQVVBMEYsS0FFQWhOLFFBRUE5QixLQUFBLFNBQUFzRCxTQUVBLElBQUF5TCxPQUFBOVEsU0FBQWxxRSxLQUFBaXpFLEtBRUEsSUFBQStILFFBQUF6TCxRQUFBckYsV0FBQThRLE9BQ0EsT0FBQSxFQUdBekwsUUFBQXJGLFNBQUE4USxRQUdBNU8sTUFBQSxXQUNBcHNFLEtBQUFpekUsSUFBQWoyRSxJQUFBZ0QsS0FBQWl6RSxJQUFBajJFLEtBR0F5ekMsUUFBQSxTQUFBLE9BQUEsWUFLQXdxQyxRQUVBM25DLE9BQ0FpSyxPQUFBL2xCLE9BQ0EwakQsWUFBQWhjLFNBR0EvK0QsTUFDQW85QyxPQUFBLHNCQUNBMjlCLFlBQUEsbUJBR0FuTixRQUVBOUIsS0FBQSxTQUFBc0QsU0FFQSxJQUFBaFQsTUFBQXY4RCxLQUFBaXpFLElBQUExdUMsU0FHQSxJQUFBZzRCLE1BQUF4M0QsU0FBQTY5RCxVQUFBNWlFLEtBQUFpekUsS0FDQSxPQUFBMUQsUUFBQTRMLFVBR0E1TCxRQUFBNEwsS0FBQUMsUUFBQTdlLE9BQ0FnVCxRQUFBOEwsUUFBQTlMLFFBQUE0TCxLQUFBeDNFLEtBQUEsU0FBQTIzRSxLQUFBLE9BQUFBLElBQUF2MkUsT0FBQSxLQUlBcW5FLE1BQUEsU0FBQXBKLEtBQ0EsSUFBQTNDLE9BQUFyZ0UsS0FDQWdqRSxJQUFBbVksS0FHQWo1RSxRQUFBLFNBQUFvNUUsSUFBQXoyRSxHQUFBLE9BQUF5MkUsSUFBQXA1RSxRQUFBLFNBQUFvM0IsR0FBQXpmLEdBQ0FxcUMsWUFBQTVxQixHQUFBK21DLE9BQUE5aUIsT0FBQSxJQUFBMTRDLEdBQ0FxL0MsWUFBQTVxQixHQUFBK21DLE9BQUE2YSxZQUFBLElBQUFyaEUsUUFNQTQyQixRQUFBLE9BQUEsWUFNQSxTQUFBMnFDLFFBQUE3ZSxPQUdBLElBRkEsSUFBQTRlLFVBRUF0MkUsRUFBQSxFQUFBQSxFQUFBMDNELE1BQUF4M0QsT0FBQUYsSUFBQSxDQUVBLElBQUF5MEIsR0FBQWlqQyxNQUFBMTNELEdBQ0ErakUsSUFBQTJTLFVBQUFqaUQsSUFFQSxHQUFBc3ZDLElBQUF2cEIsT0FJQSxJQUFBLElBQUF4bEMsRUFBQXNoRSxLQUFBcDJFLE9BQUEsRUFBQThVLEdBQUEsRUFBQUEsSUFBQSxDQUVBLElBQUF5aEUsSUFBQUgsS0FBQXRoRSxHQUVBLElBQUF5aEUsSUFBQSxHQUFBLENBQ0FBLElBQUF0MkUsS0FBQXMwQixJQUNBLE1BR0EsSUFBQWtpRCxRQUFBRCxVQUFBRCxJQUFBLElBRUEsR0FBQTFTLElBQUFsdUMsS0FBQThnRCxRQUFBNWIsT0FBQSxFQUFBLENBQ0F1YixLQUFBbjJFLE1BQUFzMEIsS0FDQSxNQUdBLEdBQUFzdkMsSUFBQWhKLE9BQUE0YixRQUFBOWdELElBQUEsQ0FFQSxHQUFBa3VDLElBQUF0ckIsS0FBQWsrQixRQUFBbCtCLE9BQUEydEIsTUFBQSxDQUNBcVEsSUFBQXAvQyxRQUFBNUMsSUFDQSxNQUdBZ2lELElBQUF0MkUsS0FBQXMwQixJQUNBLE1BR0EsR0FBQSxJQUFBemYsRUFBQSxDQUNBc2hFLEtBQUFqL0MsU0FBQTVDLEtBQ0EsUUFPQSxPQUFBNmhELEtBSUEsU0FBQUksVUFBQTM5RSxTQUVBLElBQUFtdEUsVUFBQW50RSxRQUFBbXRFLFVBQ0FDLFdBQUFwdEUsUUFBQW90RSxXQUNBNWUsYUFBQXh1RCxRQUFBd3VELGFBRUEsT0FDQTF4QixJQUFBcXdDLFVBQ0F6dEIsS0FBQTB0QixXQUNBM3JCLE9BQUErTSxhQUNBd1QsT0FBQW1MLFVBQUEzZSxjQUlBLElBQUFxdkIsTUFFQXJOLFFBQUE2TSxPQUVBNU0sUUFBQXlILE9BRUF0OEMsT0FBQSxFQUVBdHVCLEtBQUEsT0FFQW9vQyxPQUNBb29DLFFBQUF4YyxRQUNBeWMsU0FBQTljLFFBR0ExK0QsTUFDQW85QyxPQUFBLGlCQUNBcStCLFNBQUEsZ0JBQ0FGLFNBQUEsRUFDQUMsU0FBQSxHQUdBOWlDLFVBRUE4aUMsU0FBQSxTQUFBM1ksS0FDQSxJQUFBMlksU0FBQTNZLElBQUEyWSxTQUVBLE9BQUF0OEUsS0FBQTBLLElBQUE0eEUsWUFLQWhPLFVBQUEsV0FDQTN0RSxLQUFBMDdFLFNBQUE3M0IsU0FBQTdqRCxLQUFBaXpFLElBQUEsaUNBR0FsRixTQUlBOUIsS0FBQSxTQUFBakosS0FDQSxJQUFBbVksS0FBQW5ZLElBQUFtWSxNQUdBbjdFLEtBQUEwN0UsU0FBQTE3RSxLQUFBMjdFLFlBQ0FSLEtBQUFBLEtBQUF6MkUsSUFBQSxTQUFBMDNCLFVBQUEsT0FBQW1qQyxPQUFBbmpDLFNBQUEsaUJBR0EsSUErRUErQyxLQUFBeW1DLElBRUF4MkIsTUFFQXJlLEtBbkZBOHFELFlBQUEsRUFDQWpSLFVBQUEsRUFFQSxHQUFBNXFFLEtBQUEwN0UsUUFBQSxDQUVBLElBQUExQyxVQUFBLEVBRUE2QyxXQUFBVixLQUFBNVgsT0FBQSxTQUFBc1ksV0FBQVAsSUFBQXoyRSxHQUtBLE9BSEFnM0UsV0FBQWgzRSxHQUFBeTJFLElBQUE1MkUsSUFBQSxTQUFBMHlCLEVBQUF2ZCxHQUFBLE9BQUEsSUFBQWhWLEVBQUEsRUFBQWk2RCxRQUFBK2MsV0FBQWgzRSxFQUFBLEdBQUFnVixLQUFBbS9ELFVBQUFsYSxRQUFBcWMsS0FBQXQyRSxFQUFBLEdBQUFnVixJQUFBc2hFLEtBQUF0MkUsRUFBQSxHQUFBZ1YsR0FBQXV5QyxpQkFDQTRzQixVQUFBc0MsSUFBQS9YLE9BQUEsU0FBQXlWLFVBQUExL0MsSUFBQSxPQUFBajZCLEtBQUEwTixJQUFBaXNFLFVBQUExL0MsR0FBQTh5QixlQUFBLEdBRUF5dkIsZ0JBSUFqUixTQTBFQSxTQUFBdVEsTUFDQSxPQUFBOTdFLEtBQUEwTixJQUFBbEosTUFBQXhFLEtBQUE4N0UsS0FBQTVYLE9BQUEsU0FBQXVZLElBQUFSLEtBRUEsT0FEQUEsSUFBQXA1RSxRQUFBLFNBQUFvM0IsR0FBQXowQixHQUFBLE9BQUFpM0UsSUFBQWozRSxJQUFBaTNFLElBQUFqM0UsSUFBQSxHQUFBeTBCLEdBQUE4eUIsZUFDQTB2QixVQTdFQUMsQ0FBQVosT0ErREFoOEMsS0EvREFuL0IsS0FBQWl6RSxJQStEQXJOLElBL0RBNWxFLEtBQUF1OUMsT0FpRUFuTyxNQUFBNnZCLFFBQUE5L0IsS0FBQW9GLFVBSUF1NkIsU0FGQS90QyxLQURBcWUsTUFBQXB0QyxPQUFBLFNBQUFzM0IsSUFBQSxPQUFBZ3JCLFNBQUFockIsR0FBQXNzQyxPQUNBLElBR0F4NUIsSUFBQXJiLEtBQUEsYUFDQXFiLElBQUFnRCxNQUFBLEdBQUEsaUJBdkVBK3JDLEtBQUFwMkUsT0FBQSxJQUlBLE9BQUFvMkUsS0FBQUEsS0FBQVUsV0FBQUEsV0FBQXg4QixPQUFBdXJCLFdBSUF3QixNQUFBLFNBQUFwSixLQUNBLElBQUFtWSxLQUFBblksSUFBQW1ZLEtBQ0FFLE9BQUFyWSxJQUFBcVksT0FDQXJDLFVBQUFoVyxJQUFBM2pCLE9BR0E2RSxZQUFBbGtELEtBQUFpekUsSUFBQWp6RSxLQUFBNDdFLFNBQUFQLFFBRUFqdkMsSUFBQXBzQyxLQUFBaXpFLElBQUEsZ0JBQUFqekUsS0FBQTI3RSxVQUFBUixLQUFBeDNFLEtBQUEsU0FBQTIzRSxLQUFBLE9BQUFBLElBQUF2MkUsT0FBQSxJQUFBL0UsS0FBQTI3RSxTQUFBLElBRUEzQyxXQUFBNXNDLElBQUFwc0MsS0FBQWl6RSxJQUFBLFlBQUErRixZQUlBdm9DLFFBQUEsT0FBQSxZQU1BdzdCLEtBQUEsU0FBQWpKLEtBQ0EsSUFBQW1ZLEtBQUFuWSxJQUFBbVksS0FDQW5DLFVBQUFoVyxJQUFBM2pCLE9BRUEsT0FDQTI4QixZQUFBaDhFLEtBQUEyN0UsV0FBQVIsS0FBQXgzRSxLQUFBLFNBQUEyM0UsS0FBQSxPQUFBQSxJQUFBdjJFLE9BQUEsTUFDQTBsRSxhQUFBenFFLEtBQUFpekUsSUFBQStGLFVBQUFBLFVBQUEzNUIsT0FBQXIvQyxLQUFBaXpFLEtBQUEsR0FBQWp6RSxLQUFBMjdFLFdBS0F2UCxNQUFBLFNBQUFwSixLQUNBLElBQUFtWSxLQUFBblksSUFBQW1ZLEtBQ0FhLFNBQUFoWixJQUFBZ1osU0FDQUgsV0FBQTdZLElBQUE2WSxhQUdBLElBQUFHLFVBQUFILGFBSUFWLEtBQUFqNUUsUUFBQSxTQUFBbzVFLElBQUF6MkUsR0FBQSxPQUFBeTJFLElBQUFwNUUsUUFBQSxTQUFBbzNCLEdBQUF6ZixHQUFBLE9BQUF1eUIsSUFBQTlTLEdBQUEsWUFBQTBpRCxVQUFBSCxXQUFBLGdCQUFBQSxhQUFBQSxXQUFBaDNFLEdBQUFnVixLQUFBbWlFLFNBQUFuaUUsRUFBQSxFQUFBbWlFLFNBQUFBLFNBQUEsRUFBQSxJQUFBLE1BQUEsU0FNQXZyQyxRQUFBLFNBQUEsT0FBQSxhQTBCQSxJQUFBd3JDLGFBRUF4eEUsS0FBQSxTQUVBNm9DLE9BQ0EzZ0IsT0FBQTZFLE9BQ0E4akQsSUFBQXBjLFNBR0EvK0QsTUFDQXd5QixPQUFBLE1BQ0Eyb0QsS0FBQSxHQUdBemlDLFVBRUF6YyxTQUFBLFNBQUE0bUMsSUFBQWlRLEtBR0EsT0FBQWhMLEdBRkFqRixJQUFBcndDLE9BRUFzZ0QsT0FLQWxGLFFBRUE5QixLQUFBLFdBQ0EsSUFBQTVMLE9BQUFyZ0UsS0FRQSxPQUxBb3NDLElBQUFwc0MsS0FBQW84QixVQUNBOC9DLFVBQUEsR0FDQUMsVUFBQSxNQUlBaEIsS0FBQW43RSxLQUFBczdFLElBRUFGLFFBQUFwN0UsS0FBQW84QixVQUFBMTNCLElBQUEsU0FBQTAzQixVQUFBLE9BQUFpa0MsT0FBQXYrRCxNQUFBczZCLGFBREFwOEIsS0FBQThCLE1BQUE5QixLQUFBbzhCLGFBS0Fnd0MsTUFBQSxTQUFBcEosS0FDQUEsSUFBQW1ZLEtBR0FqNUUsUUFBQSxTQUFBOGdFLEtBQ0EsSUFBQWdXLFVBQUFoVyxJQUFBM2pCLE9BR0EsT0FBQWpULElBRkE0MkIsSUFBQTVtQyxVQUdBOC9DLFVBQUFsRCxVQUNBbUQsVUFBQSxrQkFNQTFyQyxRQUFBLE9BQUEsV0FJQXU5QixTQUVBbHNFLE1BQUEsU0FBQXM2QixVQUVBLEdBQUFBLFNBQUFyM0IsT0FBQSxFQUNBLFNBR0EsSUFBQXEzRSxXQUNBcnZFLElBQUEsRUFZQSxPQVZBcXZCLFNBQ0FsNkIsUUFBQSxTQUFBbzNCLElBQ0EsSUFDQTAvQyxVQURBMTJELE9BQUFnWCxJQUNBK2xCLE9BQ0F0eUMsSUFBQTFOLEtBQUEwTixJQUFBQSxJQUFBaXNFLFdBQ0FvRCxRQUFBcDNFLEtBQUFnMEUsYUFHQTU4QyxTQUFBQSxTQUFBcDZCLE9BQUEsU0FBQXMzQixHQUFBejBCLEdBQUEsT0FBQXUzRSxRQUFBdjNFLEdBQUFrSSxPQUVBc3lDLE9BQUF0eUMsSUFBQXF2QixTQUFBQSxhQU1BaWdELGdCQUVBL29DLE9BQ0FvSyxPQUFBd2hCLFFBQ0E2TCxVQUFBN0wsUUFDQW9kLGFBQUFwZCxRQUNBZ2QsVUFBQXJkLFFBR0ExK0QsTUFDQXU5QyxRQUFBLEVBQ0FxdEIsV0FBQSxFQUNBdVIsY0FBQSxFQUNBSixVQUFBLEdBR0FuTyxRQUVBM0IsTUFBQSxXQUVBaGdDLElBQUFwc0MsS0FBQWl6RSxJQUFBLFlBQUEsY0FFQSxJQUNBaUosVUFEQUssU0FBQWw5QixPQUFBbGpELFFBQ0E0dUUsVUFBQSxFQUVBLEdBQUEvcUUsS0FBQTA5QyxPQUFBLENBRUF0UixJQUFBcHNDLEtBQUFpekUsS0FBQTV6QixPQUFBLEdBQUE2OEIsVUFBQSxLQUVBLElBQUFqNUQsS0FBQXM1RCxTQUFBbndCLGFBQUFueEQsU0FBQXEvQixpQkFFQXJYLEtBQUEsSUFDQWk1RCxVQUFBOXZCLGFBQUFwc0QsS0FBQWl6RSxLQUFBaHdELFVBR0EsQ0FFQSxJQUNBeVgsSUFEQXBZLE9BQUF0aUIsS0FBQWl6RSxLQUNBdjRDLElBRUFBLElBQUE2aEQsU0FBQSxHQUFBdjhFLEtBQUErcUUsWUFDQUEsV0FBQXJ3QyxNQUdBLElBQUExNkIsS0FBQXM4RSxhQUVBdlIsV0FBQTNlLGFBQUFwc0QsS0FBQWl6RSxJQUFBeE4sb0JBRUFoVixVQUFBendELEtBQUFzOEUsY0FFQXZSLFdBQUF3UixTQUFBLElBQUF2OEUsS0FBQXM4RSxhQUVBdDhFLEtBQUFzOEUsY0FBQXplLFNBQUE3OUQsS0FBQXM4RSxhQUFBLE1BRUF2UixXQUFBak0sUUFBQTkrRCxLQUFBczhFLGNBRUFwZSxTQUFBbCtELEtBQUFzOEUsZ0JBRUF2UixXQUFBM2UsYUFBQXdVLE1BQUE1Z0UsS0FBQXM4RSxhQUFBdDhFLEtBQUFpekUsT0FLQWlKLFVBQUFuUixVQUFBLGdCQUFBQSxVQUFBLE1BQUEsUUFJQSxHQUFBbVIsVUFBQSxDQUlBOXZDLElBQUFwc0MsS0FBQWl6RSxLQUFBNXpCLE9BQUEsR0FBQTY4QixVQUFBQSxZQUVBLElBQUF0UixTQUFBNXFFLEtBQUFpekUsSUFBQTdtQixhQUNBcHNELEtBQUFrOEUsV0FBQWw4RSxLQUFBazhFLFVBQUF0UixVQUNBeCtCLElBQUFwc0MsS0FBQWl6RSxJQUFBLFlBQUFqekUsS0FBQWs4RSxXQUlBSyxTQUFBeFIsV0FBQUgsVUFDQXgrQixJQUFBcHNDLEtBQUFpekUsSUFBQSxTQUFBaUosYUFLQXpyQyxRQUFBLE9BQUEsWUFNQSxTQUFBMmIsYUFBQTl5QixJQUNBLE9BQUFBLElBQUFBLEdBQUE4eUIsY0FBQSxFQUdBLElBQUFvd0IsUUFFQUMsS0FFQWpqRCxPQUFBLEVBRUE4WixPQUNBcHlDLEdBQUFzMkIsT0FDQWtsRCxLQUFBbGxELE9BQ0F4NkIsSUFBQXc2QixPQUNBMFUsTUFBQTFVLE9BQ0FzaEIsTUFBQStsQixPQUNBeGYsT0FBQXdmLE9BQ0FtQixNQUFBbkIsT0FDQWpiLE1BQUFwc0IsUUFHQXIzQixNQUNBNi9ELE1BQUEsRUFDQTkrRCxJQUFBLEVBQ0FpekUsU0FBQSxRQUFBLE1BQUEsUUFDQXZ3QixNQUFBLElBR0ErcEIsVUFBQSxXQUNBLElBQ0FnUCxVQURBdGMsT0FBQXJnRSxLQU1BLEdBRkFBLEtBQUE0akQsT0FBQSxXQUVBNWpELEtBQUEwOEUsTUFBQTFlLFNBQUFoK0QsS0FBQWhELElBQUEsS0FBQSxDQUVBLElBQUE4bEIsTUFBQTlpQixLQUFBaEQsSUFBQXlWLE1BQUEsS0FFQXFRLE1BQUEvZCxPQUFBLElBQ0E0M0UsVUFBQTc1RCxNQUFBOWlCLEtBQUFoRCxJQUFBMi9FLFVBQUEsR0FBQTM4RSxLQUFBMDhFLEtBQUFDLFVBQUEsSUFJQTM4RSxLQUFBNDhFLElBQUE1OEUsS0FBQTY4RSxTQUFBNTJDLEtBQUEsU0FBQTIyQyxLQUVBLElBQUF0akQsR0FjQSxHQVpBNGtDLFNBQUEwZSxNQUVBdmMsT0FBQXFjLE1BQUExZSxTQUFBNGUsSUFBQSxhQUNBQSxJQWlJQSxTQUFBQSxJQUFBRixNQUVBLElBQUFJLFFBQUFGLEtBQUEsQ0FJQSxJQUFBOTZFLE1BQ0EsSUFIQWc3RSxRQUFBRixRQUdBOTZFLE1BQUFpN0UsU0FBQTcvRCxLQUFBMC9ELE1BQ0FFLFFBQUFGLEtBQUE5NkUsTUFBQSxJQUFBLDBDQUFBQSxNQUFBLEdBQUEsT0FHQWk3RSxTQUFBM3VFLFVBQUEsRUFJQSxPQUFBMHVFLFFBQUFGLEtBQUFGLE1BaEpBTSxDQUFBSixJQUFBdmMsT0FBQXFjLE9BQUFFLEtBR0F0akQsR0FBQWo1QixFQUFBdThFLElBQUE1dkUsT0FBQTR2RSxJQUFBcHJFLFFBQUEsV0FHQThuQixHQUFBc2pELElBQUFwdEMsV0FBQSxJQUdBbFcsR0FDQSxPQUFBeXFDLFVBQUFqK0IsT0FBQSxrQkFHQSxJQUFBbTZCLFdBQUE1akMsS0FBQS9DLEdBQUEsV0FXQSxJQUFBLElBQUFweEIsUUFUQSszRCxhQUNBQSxXQUFBQSxXQUFBeHRELE1BQUEsS0FDQTR0RCxPQUFBdm5CLE1BQUF1bkIsT0FBQTJTLE9BQUFsNkIsT0FBQW1uQixXQUFBLEdBQ0FJLE9BQUFoaEIsT0FBQWdoQixPQUFBMlMsT0FBQTN6QixRQUFBNGdCLFdBQUEsSUFHQUksT0FBQXZuQixPQUFBdW5CLE9BQUFMLE1BQ0FLLE9BQUFoaEIsUUFBQWdoQixPQUFBTCxNQUVBSyxPQUFBdVIsU0FBQXQrQixNQUNBK3NCLE9BQUFuNEQsUUFBQTgxRCxTQUFBcUMsT0FBQThULFFBQUFqc0UsT0FDQW0wQixLQUFBL0MsR0FBQXB4QixLQUFBbTRELE9BQUFuNEQsT0FJQW00RCxPQUFBbi9ELElBQ0E0aEQsV0FBQXhwQixHQUFBLE1BR0ErbUMsT0FBQXZuQixRQUFBdW5CLE9BQUFoaEIsUUFDQXlELFdBQUF4cEIsR0FBQSxVQUdBK21DLE9BQUFoaEIsU0FBQWdoQixPQUFBdm5CLE9BQ0FnSyxXQUFBeHBCLEdBQUEsU0FHQSxJQUFBNkYsS0FBQWtoQyxPQUFBNFMsSUFDQSxHQUFBdlEsY0FBQXZqQyxPQUFBLFdBQUFBLEtBQUF3akMsUUFBQSxDQUVBdG1DLEtBQUE4QyxNQUFBMmYsUUFBQSxFQUFBNTlDLEdBQUEsT0FFQSxJQUFBNFksS0FBQXFsQixLQUFBc21DLG1CQUNBM3JELE1BQUF3ZixHQUFBMmpELFlBQUFuakUsTUFDQXdmLEdBQUF4ZixLQUVBZytCLE1BQUEzWSxLQUFBN0YsUUFHQSxDQUVBLElBQUFqSCxLQUFBOE0sS0FBQXE0QyxpQkFDQW5sRCxNQUFBaUgsR0FBQTJqRCxZQUFBNXFELE1BQ0FpSCxHQUFBakgsS0FFQXFsQixPQUFBdlksS0FBQTdGLElBT0EsT0FGQSttQyxPQUFBNmMsTUFBQTVqRCxHQUVBQSxJQUVBcEcsT0FJQTI2QyxhQUFBLFdBQ0EsSUFBQXhOLE9BQUFyZ0UsS0FHQTBpRSxjQUFBMWlFLEtBQUFpekUsTUFDQTUyQyxLQUFBcjhCLEtBQUFpekUsS0FBQW4wQixPQUFBLEtBQUE1OUMsR0FBQWxCLEtBQUFrQixJQUFBLE9BR0FsQixLQUFBNDhFLEtBQ0E1OEUsS0FBQTQ4RSxJQUFBMzJDLEtBQUEsU0FBQTIyQyxLQUFBLFFBQUF2YyxPQUFBeVIsWUFBQThLLE1BQUF2YyxPQUFBNmMsUUFBQWo2RSxPQUFBMjVFLE1BQUExcEQsTUFHQWx6QixLQUFBNDhFLElBQUE1OEUsS0FBQWs5RSxNQUFBLE1BSUFsUCxTQUVBNk8sT0FBQSxXQUNBLElBQUF4YyxPQUFBcmdFLEtBR0EsT0FBQUEsS0FBQWhELElBSUF3L0UsS0FBQXg4RSxLQUFBaEQsS0FDQXcvRSxLQUFBeDhFLEtBQUFoRCxNQUdBdy9FLEtBQUF4OEUsS0FBQWhELEtBQUEsSUFBQSttRSxVQUFBLFNBQUFsK0IsUUFBQUMsUUFFQTIzQixXQUFBNEMsT0FBQXJqRSxJQUFBLFNBQ0E2b0MsUUFBQXMzQyxtQkFBQTljLE9BQUFyakUsSUFBQXlWLE1BQUEsS0FBQSxLQUdBblMsS0FBQSsvRCxPQUFBcmpFLEtBQUFpcEMsS0FDQSxTQUFBb21CLEtBQUEsT0FBQXhtQixRQUFBd21CLElBQUFwQixXQUNBLFdBQUEsT0FBQW5sQixPQUFBLHNCQU9BMDJDLEtBQUF4OEUsS0FBQWhELE1BdEJBK21FLFVBQUFqK0IsWUE4QkFpM0MsU0FBQSwrQ0FDQUQsV0FvQkEsSUFnQ0F2dUIsVUFDQTZ1QixPQUNBQyxRQU5BLHNKQU9BQyxNQUxBLDJLQU1BQyxPQWhDQSw4S0FpQ0FDLGFBckNBLGdRQXNDQUMsY0FwQ0EsZ1FBcUNBQyxxQkFqQ0Esc01Ba0NBQyxlQWhDQSxnTEFpQ0FDLGtCQS9CQSx3S0FnQ0FDLHNCQTlCQSx3S0ErQkFDLGNBN0JBLHFQQThCQUMsZUE1QkEsbVFBNkJBQyxnQkEzQkEsa1FBNEJBQyxnQkExQkEsNkxBMkJBQyxzQkF6QkEsaU1BMEJBQyxvQkF4QkEsOExBeUJBQywwQkF2QkEsbU1BMEJBQyxNQUVBdEosUUFpSEEsU0FBQXgyRSxPQUNBQSxNQUFBbStFLEtBQUF4NUUsSUFBQSxTQUFBZ0ksS0FBQTB4RSxLQUNBLElBQUEzekUsSUFHQXExRSxNQUFBcGdCLFNBQUFoekQsUUFBQWpDLFFBQUFpQyxNQUFBMHhFLElBQUEzekUsS0FBQWlDLEtBQ0ErbUIsS0FBQXFzRCxNQUFBLFNBQUExQixJQUFBMXhFLE1BQ0FreUUsTUFBQWx5RSxNQUFBMHhFLFdBQ0FydUIsT0FBQXJqRCxRQUdBM00sTUFBQXkyRSxjQUNBbnhFLE1BQUE1SSxTQUFBa3lDLEtBQUEsU0FBQTdULElBQUEsT0FBQXJILEtBQUExekIsTUFBQTAyRSxjQUFBMzdDLElBQUEsU0FBQWlsRCxLQUFBLE9BQUFBLElBQUEzTSxTQUFBNE0sUUFBQUQsSUFBQTdCLFFBQUE0QixPQUFBQyxJQUFBbEssZUEzSEE3NkMsT0FBQSxPQUFBLFNBRUE2MEMsUUFBQXlILE1BQUEyRyxLQUVBaHlFLEtBQUEsT0FFQTZvQyxPQUFBLFFBRUFuekMsTUFBQWcwRSxTQUFBLEtBQUEsUUFBQSxRQUFBLE1BQUEsT0FBQSxVQUVBcUssUUFBQSxFQUVBN1EsVUFBQSxXQUNBOXBCLFNBQUE3akQsS0FBQWl6RSxJQUFBLFlBR0FqRixTQUVBNk8sT0FBQSxXQUVBLElBQUFILEtBOEdBLFNBQUFBLE1BRUEsSUFBQVUsTUFBQVYsTUFDQSxPQUFBLEtBR0FudUIsT0FBQW11QixRQUNBbnVCLE9BQUFtdUIsTUFBQXI4RSxFQUFBKzhFLE1BQUFWLE1BQUFwcEQsU0FHQSxPQUFBaTdCLE9BQUFtdUIsTUF4SEErQixDQTJIQSxTQUFBL0IsTUFDQSxPQUFBelIsTUFBQTUrQixLQUFBQSxLQUFBcXdDLEtBQUEsT0FBQSxTQUFBLFdBQUEsUUFBQUEsS0E1SEFnQyxDQUFBMStFLEtBQUEwOEUsT0FFQSxPQUFBQSxLQUlBM1ksVUFBQWwrQixRQUFBNjJDLE1BSEEzWSxVQUFBaitCLE9BQUEsc0JBVUE2NEMsZUFFQXZRLFFBQUFpUSxLQUVBbCtFLEtBQUEsU0FBQXF0RSxJQUFBLE9BQ0FrUCxLQUFBemYsVUFBQXVRLEdBQUE3N0MsWUFBQWEsUUFBQXRuQixTQUtBMHpFLFVBRUF4USxRQUFBdVEsY0FFQWhSLFVBQUEsV0FDQTlwQixTQUFBN2pELEtBQUFpekUsSUFBQSxnQkFHQXA2QixVQUVBNmpDLEtBQUEsU0FBQTFaLElBQUFpUSxLQUNBLElBQUF5SixLQUFBMVosSUFBQTBaLEtBRUEsT0FBQXA0QixTQUFBMnVCLElBQUEscUJBQ0F5SixLQUFBLFNBQ0FBLFFBT0FtQyxRQUVBelEsUUFBQXVRLGNBRUE5bEMsVUFFQTZqQyxLQUFBLFNBQUExWixJQUFBaVEsS0FDQSxJQUFBeUosS0FBQTFaLElBQUEwWixLQUVBLE9BQUFwNEIsU0FBQTJ1QixJQUFBLG1CQUFBbHVDLFFBQUFrdUMsSUFBQSxvQkFBQWx1RSxPQUNBLGVBQ0FnZ0MsUUFBQWt1QyxJQUFBLHFCQUFBbHVFLE9BQ0EsZ0JBQ0EyM0UsUUFPQW9DLE9BRUExUSxRQUFBdVEsY0FFQTlsQyxVQUVBNmpDLEtBQUEsV0FDQSxNQUFBLFVBQUFwNEIsU0FBQXRrRCxLQUFBaXpFLElBQUEsa0JBQUEsUUFBQSxXQU9BOEwsU0FFQTNRLFFBQUF1USxjQUVBaFIsVUFBQSxXQUNBLElBQUF0TixPQUFBcmdFLEtBRUFBLEtBQUE0OEUsSUFBQTMyQyxLQUFBLFNBQUEyMkMsS0FBQSxPQUFBLElBQUF2YyxPQUFBTCxPQUFBNXpCLElBQUEvckMsRUFBQSxTQUFBdThFLEtBQUEsY0FBQSxFQUFBdmMsT0FBQUwsUUFBQTlzQyxRQXlDQSxJQUFBOHJELEtBRUF4bEQsT0FBQSxFQUVBOFosT0FDQTJyQyxRQUFBem5ELE9BQ0EwbkQsV0FBQWhnQixRQUNBaWdCLFVBQUFqZ0IsUUFDQTBGLE1BQUFwdEMsT0FDQXNoQixNQUFBK2xCLE9BQ0F4ZixPQUFBd2YsT0FDQXVnQixVQUFBdmdCLE9BQ0F3Z0IsV0FBQXhnQixPQUNBa00sVUFBQXZ6QyxPQUNBd3pDLFdBQUF4ekMsT0FDQTdFLE9BQUE2RSxRQUdBcjNCLE1BQ0E4K0UsUUFBQSxHQUNBQyxZQUFBLEVBQ0FDLFdBQUEsRUFDQXZhLE9BQUEsRUFDQTlyQixPQUFBLEVBQ0F1RyxRQUFBLEVBQ0EwckIsVUFBQSxPQUNBQyxXQUFBLEVBQ0FyNEMsUUFBQSxHQUdBa21CLFVBRUF5bUMsU0FBQSxTQUFBdGMsS0FDQSxJQUFBaWMsUUFBQWpjLElBQUFpYyxRQUVBLE9BQUFqL0UsS0FBQSxNQUFBLElBQUFpL0UsU0FHQW5tQyxNQUFBLFNBQUFrcUIsS0FDQSxJQUFBaVcsU0FBQWpXLElBQUFscUIsTUFDQXNtQyxVQUFBcGMsSUFBQW9jLFVBRUEsT0FBQW5HLFVBQUFtRyxXQUdBLy9CLE9BQUEsU0FBQTJqQixLQUNBLElBQUFnVyxVQUFBaFcsSUFBQTNqQixPQUNBZ2dDLFdBQUFyYyxJQUFBcWMsV0FFQSxPQUFBckcsV0FBQXFHLFlBR0F6YSxNQUFBLFNBQUE1QixLQUNBLElBQUE0QixNQUFBNUIsSUFBQTRCLE1BQ0F1YSxVQUFBbmMsSUFBQW1jLFVBRUEsT0FBQXZhLE9BQUF1YSxXQUdBSSxNQUFBLFNBQUFub0QsRUFBQTY3QyxLQUNBLE9BQUFzTSxNQUFBdE0sTUFHQXRnRCxPQUFBLFNBQUFxd0MsS0FDQSxJQUFBcndDLE9BQUFxd0MsSUFBQXJ3QyxPQUVBLE9BQUEzeUIsS0FBQWl6RSxLQUFBL2lELE9BQUE0d0MsU0FBQW51QyxPQUFBM3lCLEtBQUFpekUsT0FHQWxJLFVBQUEsU0FBQS9ILEtBR0EsT0FBQXdjLEtBRkF4YyxJQUFBK0gsVUFFQSxXQUdBQyxXQUFBLFNBQUFoSSxLQUdBLE9BQUF3YyxLQUZBeGMsSUFBQWdJLFdBRUEsV0FLQTJDLFVBQUEsV0FFQThSLFFBQUF6L0UsS0FBQXMvRSxVQUNBSSxZQUFBMS9FLEtBQUFpekUsSUFBQXdNLFFBQUF6L0UsS0FBQXMvRSxXQUFBdC9FLEtBQUFpL0UsUUFBQWovRSxLQUFBay9FLFdBQUFsL0UsS0FBQTRrRSxPQUNBNWtFLEtBQUF1L0UsT0FBQXYvRSxLQUFBODRDLE9BQUE5NEMsS0FBQXEvQyxRQUNBcWdDLFlBQUExL0UsS0FBQWl6RSxJQXdFQSxTQUFBZ0csU0FBQUQsVUFBQXBVLE1BQUErYSxPQUNBLElBQUFoRCxlQUVBLElBQUFnRCxRQUFBQSxNQUFBLGVBRUEsR0FBQS9hLE1BQUEsQ0FHQSxJQUZBLElBQUFnYixXQUVBQSxXQUFBQyxRQUFBM2lFLEtBQUEwbkQsUUFDQSxJQUFBZ2IsV0FBQSxJQUFBempGLE9BQUEyakYsV0FBQUYsV0FBQSxJQUFBLzhELFFBQUEsQ0E4QkFrOUQsS0E3QkFILFdBQUEsR0FBQUEsV0E4QkFuaUIsV0FBQXNpQixLQUFBLFFBQ0FBLEtBQ0FDLFVBQUEsRUFBQUQsS0FBQWg3RSxPQUFBLEdBQ0FoSCxRQUFBa2lGLE9BQUEsU0FBQUYsTUFBQSxPQUFBUCxLQUFBTyxRQUNBaGlGLFFBQUEsS0FBQSxJQUNBK0QsTUFBQW8rRSxZQUNBM2MsT0FBQSxTQUFBcitELEVBQUFDLEdBQUEsT0FBQUQsSUFBQUMsR0FBQSxHQUNBNDZFLEtBcENBLE1BSUFGLFFBQUF6eEUsVUFBQSxFQUVBdXVFLFVBQUE1YyxXQUFBQyxPQUFBbG5CLE1BQUFtZ0MsU0FBQTU1QixPQUFBMjVCLFdBQUEsUUFBQXdHLEtBQUFJLFlBQUEsVUFBQTNHLFNBQUEwRCxVQUFBN2pDLE1BQUFrZ0MsVUFBQTJELFVBQUF0OUIsT0FzQkEsSUFBQTBnQyxLQWxCQSxJQUFBcjFFLElBQUF1dUUsU0FBQSxJQUFBRCxVQUFBLElBQUEyRyxNQUNBLEdBQUFRLFNBQUF6MUUsS0FDQSxPQUFBeTFFLFNBQUF6MUUsS0FHQSxJQUFBMDFFLE9BQUFseEMsU0FBQSxZQUNBa3hDLE9BQUF0bkMsTUFBQW1nQyxTQUNBbUgsT0FBQS9nQyxPQUFBMjVCLFVBRUEsSUFBQTFuRCxRQUFBOHVELE9BQUFDLFdBQUEsTUFJQSxPQUhBL3VELFFBQUFndkQsVUFBQVgsTUFDQXJ1RCxRQUFBaXZELFNBQUEsRUFBQSxFQUFBdEgsU0FBQUQsV0FFQW1ILFNBQUF6MUUsS0FBQTAxRSxPQUFBSSxVQUFBLGFBMUdBQyxDQUFBemdGLEtBQUE4NEMsTUFBQTk0QyxLQUFBcS9DLE9BQUFyL0MsS0FBQTRrRSxTQUtBbUosU0FJQTlCLEtBQUEsU0FBQWpKLEtBQ0EsSUFBQTNDLE9BQUFyZ0UsS0FDQXdpRCxNQUFBd2dCLElBQUF4Z0IsTUFDQXBpQixNQUFBNGlDLElBQUE1aUMsTUFHQSxHQUFBb2lCLE1BQUEsQ0FJQSxJQUFBcGlCLE9BQUFwZ0MsS0FBQTJ5QixPQUFBaHZCLEtBQUEsU0FBQTIxQixJQUFBLE9BQUE0d0MsU0FBQTV3QyxHQUFBK21DLE9BQUEwSyxVQUFBMUssT0FBQTJLLFlBQUEsS0FTQSxPQUNBNXFDLE1BQUFza0MsU0FBQTFrRSxLQUFBaS9FLFFBQUFqL0UsS0FBQWsvRSxXQUFBbC9FLEtBQUE0a0UsT0FBQTMrQixLQUFBLFNBQUFtOEIsS0FJQSxPQUZBc2QsWUFBQXJmLE9BQUE0UyxJQUFBeU4sV0FBQXRlLEtBQUFBLElBQUF1QyxPQUFBdkMsSUFBQXdDLE9BQ0E2YSxRQUFBcGYsT0FBQWlmLFVBQUFvQixXQUFBdGUsS0FDQUEsS0FFQWx2QyxRQWRBbHpCLEtBQUF1L0UsT0FBQW4vQyxPQUNBQSxNQUFBNkYsS0FBQSxTQUFBbThCLEtBQUEsT0FBQUEsS0FBQXNkLFlBQUFyZixPQUFBNFMsSUFBQXlOLFdBQUF0ZSxVQWtCQWdLLE1BQUEsU0FBQW1ELFNBR0EsSUFBQUEsUUFBQS9zQixNQUVBLE9BREF4aUQsS0FBQXExRSxRQUNBOUYsUUFBQS9zQixPQUFBLEdBS0EvUixRQUFBLFNBQUEsT0FBQSxhQVFBLFNBQUFpdkMsWUFBQXBtRCxHQUFBdDhCLElBQUEybkUsT0FBQUMsT0FFQTJhLE1BQUFqbUQsS0FDQXQ4QixNQUFBczhCLEdBQUF0OEIsSUFBQUEsS0FDQTJuRSxTQUFBcnJDLEdBQUFxckMsT0FBQUEsUUFDQUMsUUFBQXRyQyxHQUFBc3JDLE1BQUFBLFFBRUE1bkUsS0FBQW92QyxJQUFBOVMsR0FBQSxrQkFBQSxPQUFBdDhCLElBQUEsS0FLQSxJQUFBbWpGLFlBQ0FOLFFBQUEsMENBc0NBLElBQUFJLE9BQUEsZ0JBQ0FDLFdBQUEsY0FZQSxTQUFBVixLQUFBajJFLE1BQUFvOUQsU0FBQS9vRSxTQUlBLFlBSEEsSUFBQStvRSxXQUFBQSxTQUFBLGNBQ0EsSUFBQS9vRSxVQUFBQSxRQUFBekIsUUFFQXMwRCxVQUFBbG5ELFFBQ0FBLE1BQ0FzMEQsU0FBQXQwRCxNQUFBLE1BQ0F1MEMsUUFBQWxnRCxRQUFBLFFBQUEyTCxPQUNBczBELFNBQUF0MEQsTUFBQSxNQUNBdTBDLFFBQUFsZ0QsUUFBQSxTQUFBMkwsT0FDQXMwRCxTQUFBdDBELE1BQUEsS0FDQXUwQyxRQUFBbGdELFFBQUErb0UsU0FBQXA5RCxPQUNBdTFELFFBQUF2MUQsT0FHQSxJQUFBMDJELFlBQUE1Z0IsT0FBQUEsT0FBQXZHLE1BQUFBLE9BQ0EsU0FBQWdGLFFBQUFsZ0QsUUFBQStvRSxTQUFBcDlELE9BQ0EsT0FBQTAyRCxXQUFBMEcsVUFBQS9vRSxTQUFBa2hFLFFBQUF2MUQsT0FBQSxJQUdBLFNBQUFnMkUsTUFBQWptRCxJQUNBLE1BQUEsUUFBQUEsR0FBQXFwQyxRQUdBLFNBQUErZCxXQUFBcG5ELElBQ0EsT0FBQUEsR0FBQW9uRCxZQUFBcG5ELEdBQUF0OEIsSUFHQSxJQUNBeWlGLFFBR0EsS0FDQUEsUUFBQXRqRixPQUFBd2tGLG9CQUNBLFNBQUEsU0FDQWxCLFFBQUEsU0FDQSxNQUFBLy9FLEdBQ0ErL0UsV0FHQSxJQWlHQW1CLFNBc09BbndDLE9BdlVBb3dDLFFBRUF4UyxRQUFBeUgsT0FFQXhpQyxPQUNBd3RDLEtBQUF0cEQsT0FDQXVwRCxNQUFBLFNBR0E1Z0YsTUFDQTJnRixLQUFBLEdBQ0FDLE9BQUEsRUFDQUMsV0FBQSxpQkFDQUMsUUFBQSxpQkFDQUMsU0FBQSxhQUdBcm9DLFVBRUFpb0MsS0FBQSxTQUFBOWQsS0FHQSxPQUZBQSxJQUFBOGQsTUFFQTdaLFVBQUEsaUJBS0EwRyxVQUFBLFdBQ0EsSUFBQWdQLFVBRUFBLFVBQUEzd0IsVUFBQWhzRCxLQUFBaXpFLElBQUEsZ0JBQUFqekUsS0FBQSxXQUFBLE1BQUFBLEtBQUFtaEYsUUFBQXhFLFVBQUEsSUFHQTlPLGFBQUEsV0FDQTNoQixPQUFBbHNELEtBQUFtaEYsUUFBQS9vRCxhQUdBMjFDLFNBSUE5QixLQUFBLFNBQUFqSixLQUNBLElBQUFzVSxRQUFBdFUsSUFBQXNVLFFBQ0EyQixTQUFBalcsSUFBQWxxQixNQUdBclUsS0FBQXcwQyxTQUlBLE9BQ0FuZ0MsTUFIQW1nQyxTQUFBNTVFLEtBQUFDLE1BQUFVLEtBQUFpekUsSUFBQTk0QixZQUFBLEdBSUFtOUIsUUFBQUEsU0FBQTd5QyxPQUFBdzBDLFNBQ0EzckMsS0FBQXR0QyxLQUFBK2dGLFFBQUE1a0YsT0FBQTJqRixXQUFBOS9FLEtBQUErZ0YsT0FBQWwrRCxVQUlBdXBELE1BQUEsU0FBQW1ELFNBRUFyckIsWUFBQWxrRCxLQUFBbWhGLFFBQUFuaEYsS0FBQWloRixRQUFBMVIsUUFBQWppQyxNQUVBaWlDLFFBQUErSCxVQUNBL0gsUUFBQStILFNBQUEsRUFDQWo3QyxLQUFBcjhCLEtBQUFtaEYsUUFBQW5oRixLQUFBa2hGLFNBQUEsSUFBQWo5RSxNQUFBc3JFLFFBQUF6MkIsT0FBQWx1QyxLQUFBNUssS0FBQThnRixTQUtBcndDLFFBQUEsT0FBQSxhQU9BMndDLFdBRUE5dEMsT0FDQWlHLFVBQUEybEIsU0FHQS8rRCxNQUNBbzVDLFdBQUEsR0FHQVYsVUFFQVUsVUFBQSxTQUFBeXBCLEtBQ0EsSUFBQXpwQixVQUFBeXBCLElBQUF6cEIsVUFFQSxPQUFBLElBQUFBLFdBQUF2NUMsS0FBQTIxRSxZQUFBcDhCLFdBQUFsNUMsRUFBQWs1QyxjQVNBOG5DLE9BRUFoVCxRQUFBeUgsTUFBQXNMLFVBQUFyTCxXQUVBemlDLE9BQ0FndUMsU0FBQTlwRCxPQUNBMmdELFNBQUEzZ0QsT0FDQStwRCxTQUFBcmlCLFFBQ0FzaUIsUUFBQXRpQixRQUNBcDBELE1BQUFvMEQsU0FHQS8rRCxNQUNBeWxFLElBQUEsVUFDQTJiLFVBQUEsRUFDQUMsU0FBQSxFQUNBQyxTQUFBLEVBQ0EzMkUsT0FBQSxHQUdBK3RDLFVBRUE2b0MsTUFBQSxTQUFBMWUsSUFBQWlRLEtBR0EsT0FBQTV5RSxFQUZBMmlFLElBQUFzZSxTQUVBck8sTUFHQTBPLGtCQUFBLFdBQ0EsT0FBQTNoRixLQUFBMGhGLE9BR0FFLG1CQUFBLFdBQ0EsT0FBQXhpQixLQUFBaHpCLElBQUFwc0MsS0FBQTJoRixrQkFBQSx3QkFHQUgsUUFBQSxTQUFBeGUsS0FHQSxPQUZBQSxJQUFBd2UsU0FFQXhoRixLQUFBMGhGLFFBS0FqeEMsU0FJQXZsQyxLQUFBLFFBRUFpbEQsU0FBQSxXQUNBLE9BQUFud0QsS0FBQW00RSxVQUdBMStDLFFBQUEsU0FBQS81QixHQUNBQSxFQUFBMHlDLGlCQUNBcHlDLEtBQUFzdEMsVUFPQXBpQyxLQUFBLFNBRUErNEIsTUFBQSxFQUVBeEssUUFBQSxTQUFBLzVCLEdBRUFBLEVBQUE4ekMsbUJBSUE5ekMsRUFBQTB5QyxpQkFDQXB5QyxLQUFBdXRDLGFBTUFyaUMsS0FBQSxhQUVBKzRCLE1BQUEsRUFFQXhLLFFBQUEsU0FBQS81QixHQUVBLElBQUEra0MsS0FBQW04QyxVQUFBQSxXQUFBNWdGLE1BQUE0Z0YsU0FJQSxHQUZBQSxTQUFBNWdGLEtBRUF5a0MsS0FBQSxDQUNBLElBQUF6a0MsS0FBQThLLE1BS0EsT0FGQTI1QixLQUFBNkksT0FBQXJILEtBQUFqbUMsS0FBQXF0QyxXQUNBM3RDLEVBQUEweUMsaUJBSEFweUMsS0FBQXlrQyxLQUFBQSxNQTBJQSxXQUVBLEdBQUFnTSxPQUNBLE9BR0FBLFFBQ0FSLEdBQUFoMUMsU0FBQSxRQUFBLFNBQUErbkUsS0FDQSxJQUFBcndDLE9BQUFxd0MsSUFBQXJ3QyxPQUNBNmdCLGlCQUFBd3ZCLElBQUF4dkIsa0JBRUFvdEMsV0FBQUEsU0FBQVksU0FBQWh1QyxrQkFBQW90QyxTQUFBYSxVQUFBMWUsT0FBQXB3QyxPQUFBaXVELFNBQUEzTixNQUFBbFEsT0FBQXB3QyxPQUFBaXVELFNBQUFjLFFBQ0FkLFNBQUF0ekMsU0FHQTJDLEdBQUFoMUMsU0FBQSxVQUFBLFNBQUF5RSxHQUNBLEtBQUFBLEVBQUFpMUMsU0FBQWlzQyxVQUFBQSxTQUFBVyxXQUNBN2hGLEVBQUEweUMsaUJBQ0F3dUMsU0FBQXR6QyxXQXBKQXUwQyxNQU9BMzJFLEtBQUEsYUFFQSs0QixNQUFBLEVBRUF4SyxRQUFBLFlBRUFtbkQsU0FBQUEsVUFBQUEsV0FBQTVnRixNQUFBNGdGLFVBQUE1Z0YsS0FBQXlrQyxRQThJQWdNLFFBQUFBLE9BQUF2dUMsUUFBQSxTQUFBZ3VELFFBQUEsT0FBQUEsV0FDQXpmLE9BQUEsU0FuSUF2bEMsS0FBQSxPQUVBKzRCLE1BQUEsRUFFQXhLLFFBQUEsV0FFQTZxQixTQUFBcnBELFNBQUFxL0IsZ0JBQUF0NkIsS0FBQThoRixXQUNBOWhGLEtBQUEraEYsZUFBQWpwQyxNQUFBMzhDLFFBQUEyOEMsTUFBQTc5QyxVQUNBbXhDLElBQUFueEMsU0FBQWt5QyxLQUFBLFlBQUFudEMsS0FBQStoRixnQkFBQS9oRixLQUFBeWhGLFFBQUEsU0FBQSxLQUdBNTlCLFNBQUE1b0QsU0FBQXEvQixnQkFBQXQ2QixLQUFBOGhGLFlBUUE1MkUsS0FBQSxTQUVBKzRCLE1BQUEsRUFFQXhLLFFBQUEsV0FRQSxJQVBBLElBR0F1b0QsTUFFQXY5QyxLQURBemtDLEtBQ0F5a0MsS0FFQUEsTUFBQSxDQUVBLEdBQUFBLEtBQUFxOUMsVUFUQTloRixLQVNBOGhGLFFBQUEsQ0FDQUUsT0FBQSxFQUNBLE1BR0F2OUMsS0FBQUEsS0FBQUEsS0FJQXU5QyxPQUNBcmtGLFlBQUExQyxTQUFBcS9CLGdCQUFBdDZCLEtBQUE4aEYsVUFJQTloRixLQUFBeWtDLE1BQUEySCxJQUFBbnhDLFNBQUFreUMsS0FBQSxZQUFBLE9BT0E2Z0MsU0FFQXpnQyxPQUFBLFdBQ0EsT0FBQXZ0QyxLQUFBNjJFLFlBQUE3MkUsS0FBQXN0QyxPQUFBdHRDLEtBQUFxdEMsUUFHQUEsS0FBQSxXQUVBLE9BQUFydEMsS0FBQTYyRSxZQUNBOVMsVUFBQWwrQixXQUdBN2xDLEtBQUF1NUMsV0FBQXY1QyxLQUFBaXpFLElBQUEvaEQsYUFBQWx4QixLQUFBdTVDLFlBQ0E3QixPQUFBMTNDLEtBQUF1NUMsVUFBQXY1QyxLQUFBaXpFLEtBQ0FqekUsS0FBQTZ4RSxrQkFHQTd4RSxLQUFBZzNFLFVBQUFoM0UsS0FBQWl6RSxLQUFBLEtBR0EzbEMsS0FBQSxXQUNBLE9BQUF0dEMsS0FBQTYyRSxZQUNBNzJFLEtBQUFnM0UsVUFBQWgzRSxLQUFBaXpFLEtBQUEsR0FDQWxQLFVBQUFsK0IsV0FHQW84QyxVQUFBLFdBQ0EsT0FBQXJCLFVBR0F4SixpQkFBQSxTQUFBOTlDLEdBQUErVCxNQUNBLElBQUFnekIsT0FBQXJnRSxLQUVBLE9BQUEsSUFBQStqRSxVQUFBLFNBQUFsK0IsU0FBQSxPQUFBa1osc0JBQUEsV0FDQXNoQixPQUFBZ1gsUUFBQS85QyxHQUFBK1QsTUFFQWd6QixPQUFBdWhCLG1CQUNBLzZDLEtBQUF3NUIsT0FBQXNoQixrQkFBQSxnQkFBQTk3QyxTQUFBLEVBQUEsU0FBQW5tQyxHQUFBLE9BQUFBLEVBQUFpekIsU0FBQTB0QyxPQUFBc2hCLG9CQUVBOTdDLGlCQXlDQSxJQUFBcThDLFNBRUFuTixRQThDQSxTQUFBeDJFLE9BRUFBLE1BQUE0akYsTUFBQUMsT0FBQSxTQUFBLzhDLFFBQUE3UyxTQUVBLElBQUE0dkQsT0FBQTdqRixNQUFBNGpGLE1BQUEsd0RBQUE5OEMsUUFBQSxpQkFBQTdTLFNBYUEsT0FYQTR2RCxPQUFBLzBDLE9BRUE0QyxHQUFBbXlDLE9BQUFuUCxJQUFBLFNBQUEsU0FBQWpRLEtBQ0EsSUFBQXJ3QyxPQUFBcXdDLElBQUFyd0MsT0FDQXNmLGNBQUErd0IsSUFBQS93QixjQUVBdGYsU0FBQXNmLGVBQ0Ftd0MsT0FBQXROLFVBQUEsS0FJQXNOLFFBR0E3akYsTUFBQTRqRixNQUFBRSxNQUFBLFNBQUE1akYsUUFBQSt6QixTQUlBLE9BRkFBLFFBQUE2c0MsUUFBQW1pQixTQUFBLEVBQUFELFVBQUEsRUFBQWUsT0FBQS9qRixNQUFBNGpGLE1BQUFHLFFBQUE5dkQsU0FFQSxJQUFBdXhDLFVBQ0EsU0FBQWwrQixTQUFBLE9BQUFvSyxHQUFBMXhDLE1BQUE0akYsTUFBQUMsT0FBQSxnQ0FBQWxrQixTQUFBei9ELFNBQUFBLFFBQUF1NEMsS0FBQXY0QyxVQUFBLDJIQUFBK3pCLFFBQUE4dkQsT0FBQSxHQUFBLG9CQUFBOXZELFNBQUF5Z0QsSUFBQSxPQUFBcHRDLFlBSUF0bkMsTUFBQTRqRixNQUFBSSxRQUFBLFNBQUE5akYsUUFBQSt6QixTQUlBLE9BRkFBLFFBQUE2c0MsUUFBQW1pQixTQUFBLEVBQUFELFVBQUEsRUFBQWUsT0FBQS9qRixNQUFBNGpGLE1BQUFHLFFBQUE5dkQsU0FFQSxJQUFBdXhDLFVBQUEsU0FBQWwrQixRQUFBQyxRQUVBLElBQUF5OEMsUUFBQWhrRixNQUFBNGpGLE1BQUFDLE9BQUEsdUNBQUFsa0IsU0FBQXovRCxTQUFBQSxRQUFBdTRDLEtBQUF2NEMsVUFBQSwrSEFBQSt6QixRQUFBOHZELE9BQUEsT0FBQSxtRUFBQTl2RCxRQUFBOHZELE9BQUEsR0FBQSw0QkFBQTl2RCxTQUVBZ3dELFVBQUEsRUFFQXZ5QyxHQUFBc3lDLFFBQUF0UCxJQUFBLFNBQUEsT0FBQSxTQUFBdnpFLEdBQ0FBLEVBQUEweUMsaUJBQ0F2TSxVQUNBMjhDLFVBQUEsRUFDQUQsUUFBQWoxQyxTQUVBMkMsR0FBQXN5QyxRQUFBdFAsSUFBQSxPQUFBLFdBQ0F1UCxVQUNBMThDLGNBT0F2bkMsTUFBQTRqRixNQUFBTSxPQUFBLFNBQUFoa0YsUUFBQThLLE1BQUFpcEIsU0FJQSxPQUZBQSxRQUFBNnNDLFFBQUFtaUIsU0FBQSxFQUFBRCxVQUFBLEVBQUFlLE9BQUEvakYsTUFBQTRqRixNQUFBRyxRQUFBOXZELFNBRUEsSUFBQXV4QyxVQUFBLFNBQUFsK0IsU0FFQSxJQUFBNDhDLE9BQUFsa0YsTUFBQTRqRixNQUFBQyxPQUFBLHVFQUFBbGtCLFNBQUF6L0QsU0FBQUEsUUFBQXU0QyxLQUFBdjRDLFVBQUEsMktBQUErekIsUUFBQTh2RCxPQUFBLE9BQUEseURBQUE5dkQsUUFBQTh2RCxPQUFBLEdBQUEsNEJBQUE5dkQsU0FDQXh1QixNQUFBM0QsRUFBQSxRQUFBb2lGLE9BQUF4UCxLQUVBanZFLE1BQUF1RixNQUFBQSxNQUVBLElBQUFpNUUsVUFBQSxFQUVBdnlDLEdBQUF3eUMsT0FBQXhQLElBQUEsU0FBQSxPQUFBLFNBQUF2ekUsR0FDQUEsRUFBQTB5QyxpQkFDQXZNLFFBQUE3aEMsTUFBQXVGLE9BQ0FpNUUsVUFBQSxFQUNBQyxPQUFBbjFDLFNBRUEyQyxHQUFBd3lDLE9BQUF4UCxJQUFBLE9BQUEsV0FDQXVQLFVBQ0EzOEMsUUFBQSxXQU9BdG5DLE1BQUE0akYsTUFBQUcsUUFDQUksR0FBQSxLQUNBamIsT0FBQSxXQWhJQTRHLFFBQUFnVCxPQUVBbGhGLE1BQ0EyaEYsUUFBQSxnQkFDQVIsU0FBQSxtQkFDQW5KLFNBQUEsMkZBR0ExbkMsU0FHQXZsQyxLQUFBLE9BRUErNEIsTUFBQSxFQUVBeEssUUFBQSxXQUVBNnFCLFNBQUF0a0QsS0FBQTBoRixNQUFBLDJCQUNBNzlCLFNBQUE3akQsS0FBQWl6RSxJQUFBLFdBRUE3bUMsSUFBQXBzQyxLQUFBaXpFLElBQUEsVUFBQSxTQUdBNXpCLE9BQUFyL0MsS0FBQWl6RSxRQUtBL25FLEtBQUEsU0FFQSs0QixNQUFBLEVBRUF4SyxRQUFBLFdBRUEyUyxJQUFBcHNDLEtBQUFpekUsSUFBQSxVQUFBLElBQ0F0MUUsWUFBQXFDLEtBQUFpekUsSUFBQSxlQWtHQSxJQTBRQThELE9BMVFBNEwsS0FFQXZVLFFBQUF1SixVQUVBeDNFLE1BQ0F3a0MsUUFBQSxlQUNBNEksT0FBQSxNQUNBbEksUUFBQSxTQUtBdTlDLFFBRUF2VSxRQUFBeUgsT0FFQXhpQyxPQUNBdXZDLFNBQUFyckQsT0FDQW1pRCxLQUFBLE9BQ0F6USxNQUFBMXhDLE9BQ0FsVixPQUFBdThDLE9BQ0E0SixTQUFBdkosUUFDQTBhLGNBQUExYSxRQUNBNmEsUUFBQXZpRCxPQUNBcWlELFVBQUFoYixPQUNBaWIsVUFBQWpiLE9BQ0Fpa0IsUUFBQTVqQixRQUNBNmpCLFlBQUF2ckQsT0FDQXdyRCxjQUFBOWpCLFFBQ0E3OUMsU0FBQXc5QyxRQUdBMStELE1BQ0EwaUYsU0FBQSxzQkFDQTNaLE1BQUErQixNQUFBLFFBQUEsT0FDQThPLFFBQUEscUJBQ0FKLFVBQUF6OEUsRUFDQW9sQixZQUFBcGxCLEVBQ0EyOEUsZUFBQTM4RSxFQUNBNDhFLGVBQUE1OEUsRUFDQTA4RSxtQkFBQTE4RSxFQUNBc3JFLEtBQUEsSUFDQUMsVUFBQSxFQUNBcWEsU0FBQSxFQUNBQyxZQUFBLFFBQ0FDLGVBQUEsRUFDQTNoRSxTQUFBLEtBR0F3M0IsVUFFQTR2QixTQUFBLFNBQUF6RixJQUFBaVEsS0FDQSxJQUFBeEssU0FBQXpGLElBQUF5RixTQUNBbVIsY0FBQTVXLElBQUE0VyxjQUVBLE9BQUEsSUFBQW5SLFVBQUFtUixjQUFBM0csSUFBQXhLLFVBR0F1YSxjQUFBLFNBQUFoZ0IsSUFBQWlRLEtBR0EsT0FBQXJTLE1BRkFvQyxJQUFBZ2dCLGNBRUEvUCxNQUdBdjBFLElBQUEsU0FBQXNrRSxLQUdBLE1BQUEsVUFGQUEsSUFBQWtHLE9BS0ErWixVQUFBLFNBQUFqZ0IsSUFBQWlRLEtBSUEsT0FBQWhMLEdBSEFqRixJQUFBNmYsU0FHQSxLQUZBN2YsSUFBQStXLFFBRUE5RyxPQUtBdkYsY0FBQSxXQUVBLElBQ0FvVixRQURBOWlGLEtBQUFnekUsT0FDQThQLFFBRUE5aUYsS0FBQThpRixRQUFBQSxVQUFBbGlCLE1BQUFraUIsUUFBQTlpRixLQUFBaXpFLE1BQUE1eUUsRUFBQSx1QkFBQUwsS0FBQWl6RSxNQUFBNXlFLEVBQUEsZ0JBRUFMLEtBQUE4aUYsVUFFQWovQixTQUFBN2pELEtBQUE4aUYsUUFBQSxxQkFFQSxVQUFBOWlGLEtBQUEraUYsYUFDQWwvQixTQUFBN2pELEtBQUE4aUYsUUFBQSw2QkFNQWpWLGFBQUEsV0FDQTd0RSxLQUFBOGlGLFNBQUE3L0UsT0FBQWpELEtBQUE4aUYsVUFHQS9VLE9BQUEsV0FDQSxJQUFBMU4sT0FBQXJnRSxLQUdBQSxLQUFBdTFFLFFBQ0EsT0FDQXYxRSxLQUFBaWpGLFVBQUFqaEYsT0FBQSxTQUFBczNCLElBQUEsT0FBQSttQyxPQUFBNmlCLFlBQUE1cEQsTUFDQStsQyxVQUFBci9ELEtBQUFnekUsUUFBQXZLLFNBQUF6b0UsS0FBQXlvRSxTQUFBL3BFLElBQUFzQixLQUFBdEIsSUFBQTRqQixPQUFBdGlCLEtBQUE4aUYsU0FBQTlpRixLQUFBc2lCLFdBS0FtdUIsU0FHQXZsQyxLQUFBLFlBRUFpbEQsU0FBQSxXQUNBLE9BQUFud0QsS0FBQTZpRixVQUdBcHBELFFBQUEsU0FBQXVwQyxLQUNBLElBQUF4WCxRQUFBd1gsSUFBQXhYLFFBRUEzRCxPQUFBN25ELEtBQUFpaUYsWUFDQXA2QixRQUFBQSxPQUFBdGEsU0FBQXcxQixPQUFBbGIsT0FBQXRhLE9BQUEwbEMsSUFBQXpuQixXQUFBM0QsT0FBQW95QixRQUFBak4sUUFBQW5sQixPQUFBb3JCLE1BQ0FwckIsT0FBQXZhLE1BQUEsTUFPQXBpQyxLQUFBLGFBRUFvdUIsR0FBQSxXQUNBLE9BQUF0NUIsS0FBQThpRixTQUdBcnBELFFBQUEsV0FDQSxJQUFBb3VCLE9BQUE3bkQsS0FBQWlpRixZQUVBcDZCLFNBQUFobEMsUUFBQTdpQixLQUFBOGlGLFFBQUEsV0FDQWo3QixPQUFBdmEsVUFNQXBpQyxLQUFBLGFBRUFpb0UsU0FBQSxFQUVBbnhFLE9BQUEsV0FDQSxPQUFBaEMsS0FBQThpRixTQUdBcnBELFFBQUEsV0FFQXo1QixLQUFBOGlGLFFBQUE1eEQsWUFDQTRtQixNQUFBOTNDLEtBQUFnakYsZUFBQWhqRixLQUFBaXpFLElBQUFqekUsS0FBQThpRixZQU9BNTNFLEtBQUEsT0FFQWlvRSxTQUFBLEVBRUFueEUsT0FBQSxXQUNBLE9BQUFoQyxLQUFBOGlGLFNBR0FycEQsUUFBQSxTQUFBckMsRUFBQXNqRCxNQUVBLElBQUF6SCxJQUFBeUgsS0FBQXpILElBQ0E5NkMsSUFBQXVpRCxLQUFBdmlELElBRUFuNEIsS0FBQSs1RSxTQUFBbDJCLFNBQUFvdkIsSUFBQWp6RSxLQUFBLFFBQUEsWUFFQSxXQUFBbTRCLEtBQ0FuNEIsS0FBQW1qRixhQUFBbFEsSUFBQTdtQixhQUFBMFMsUUFBQTF5QixJQUFBNm1DLElBQUEsY0FBQW5VLFFBQUExeUIsSUFBQTZtQyxJQUFBLGlCQUFBQSxRQU1BL25FLEtBQUEsYUFFQWxKLE9BQUEsV0FDQSxPQUFBaEMsS0FBQThpRixTQUdBcnBELFFBQUEsU0FBQS81QixFQUFBc2pFLEtBQ0EsSUFBQWlRLElBQUFqUSxJQUFBaVEsSUFHQXByQixPQUFBN25ELEtBQUFpaUYsWUFFQXAvRCxRQUFBN2lCLEtBQUE4aUYsUUFBQSxXQUFBajdCLFFBQUFBLE9BQUFvckIsTUFBQUEsS0FDQXZ6RSxFQUFBMHlDLG9CQU1BbG5DLEtBQUEsT0FFQWxKLE9BQUEsV0FDQSxPQUFBaEMsS0FBQThpRixTQUdBcnBELFFBQUEsU0FBQXJDLEVBQUE0ckMsS0FDQSxJQUFBaVEsSUFBQWpRLElBQUFpUSxJQUdBcHJCLE9BQUE3bkQsS0FBQWlpRixjQUVBcDZCLFFBQUFBLFFBQUFBLE9BQUFvckIsTUFBQUEsTUFDQWp6RSxLQUFBbWpGLGFBQUEsTUFPQW5WLFNBRUFpVSxVQUFBLFdBQ0EsSUFDQXA2QixPQURBN25ELEtBQUFpakYsVUFBQXYrRSxJQUFBMUUsS0FBQWtqRixhQUFBbGhGLE9BQUEsU0FBQTA0RSxNQUFBLE9BQUFBLEtBQUFQLGFBQ0EsR0FDQSxPQUFBdHlCLFFBQUFtVyxTQUFBblcsT0FBQTh4QixLQUFBLFVBQUE1VyxPQUFBbGIsT0FBQXRhLE9BQUEwbEMsSUFBQWp6RSxLQUFBaXpFLE1BQUFwckIsUUFHQXM3QixhQUFBLFNBQUFDLFVBQUE5cEQsSUFFQSxJQUNBd3BELFFBREE5aUYsS0FDQThpRixRQUNBTyxVQUFBemdCLFVBQUFrZ0IsU0FBQXpqQyxPQUFBeWpDLFNBQUEsRUFTQSxPQUxBMTJDLElBRkE5UyxHQUFBK3BELFVBQUFELFdBQUE5cEQsR0FFQSxPQUFBLFVBQUFBLEdBQUEsWUFBQSxNQUFBK3BELFVBQUEsU0FFQWhrQyxPQUFBeWpDLFFBQUFPLFdBRUE3YixXQUFBQyxRQUFBbnVDLEdBQUF3cEQsVUFDQTllLFFBQUExNUIsS0FDQWs5QixXQUFBaHJFLE1BQUFzbUYsU0FBQXpqQyxPQUFBK2pDLFdBQUFwakYsS0FBQXFoQixVQUNBbW1ELFdBQUFockUsTUFBQTg4QixJQUFBZ3FELEtBQUEsVUFBQWhxRCxHQUFBLFlBQUEsTUFBQThwRCxVQUFBLFNBQUFwakYsS0FBQXFoQixZQUVBaW1CLE1BQUFwVSxNQUNBK1MsS0FBQSxXQUFBLE9BQUFtRyxJQUFBOVMsSUFBQWdxRCxLQUFBLFFBR0FKLFlBQUEsU0FBQTVwRCxJQUNBLE9BQUF0NUIsS0FBQXkxRSxjQUFBbjhDLEdBQUEsU0FBQXQ1QixLQUFBeTFFLGNBQUFuOEMsR0FBQSxlQVNBaXFELFdBRUFsVixRQUFBZ1QsT0FFQTUyRSxLQUFBLE9BRUE2b0MsT0FDQWpPLFFBQUE3TixPQUNBbWlELEtBQUFuaUQsT0FDQWd4QyxLQUFBdEosUUFDQXVpQixRQUFBdmlCLFNBR0EvK0QsTUFDQWtsQyxRQUFBLHdCQUNBczBDLEtBQUEsUUFDQW5SLE1BQUEsRUFDQWlaLFNBQUEsRUFDQUssUUFBQSxvQkFDQTBCLGFBQUEseUJBQ0FsQyxTQUFBLG9CQUNBbUMsUUFBQSxvQkFDQUMsV0FBQSx1QkFDQUMsb0JBQUEsaUNBQ0FDLG9CQUFBLDZCQUNBQyxRQUFBLGVBQ0FDLFdBQUEsdUJBQ0EzTCxTQUFBLHVCQUdBdC9CLFVBRUF4VCxRQUFBLFNBQUEyOUIsS0FHQSxPQUFBM2lFLEVBRkEyaUUsSUFBQTM5QixVQUVBcHFDLFNBQUFreUMsTUFHQXMyQyxRQUFBLFNBQUF6Z0IsS0FDQSxJQUFBd0YsS0FBQXhGLElBQUF3RixLQUNBaWIsUUFBQXpnQixJQUFBeWdCLFFBRUEsT0FBQWpiLEtBQUFpYixRQUFBLElBR0FLLFdBQUEsU0FBQTlnQixLQUNBLElBQUF5ZSxRQUFBemUsSUFBQXllLFFBQ0FxQyxXQUFBOWdCLElBQUE4Z0IsV0FFQSxPQUFBckMsUUFBQXFDLFdBQUEsSUFHQUQsUUFBQSxTQUFBN2dCLEtBQ0EsSUFBQTJXLEtBQUEzVyxJQUFBMlcsS0FHQSxPQUZBM1csSUFBQTZnQixRQUVBLElBQUFsSyxNQUdBaUssb0JBQUEsU0FBQTVnQixLQUNBLElBQUEyVyxLQUFBM1csSUFBQTJXLEtBQ0FpSyxvQkFBQTVnQixJQUFBNGdCLG9CQUVBLE1BQUEsU0FBQWpLLE1BQUEsV0FBQUEsS0FBQSxHQUFBaUsscUJBR0FELG9CQUFBLFNBQUEzZ0IsS0FDQSxJQUFBMlcsS0FBQTNXLElBQUEyVyxLQUNBZ0ssb0JBQUEzZ0IsSUFBQTJnQixvQkFFQSxNQUFBLFNBQUFoSyxNQUFBLFdBQUFBLEtBQUEsR0FBQWdLLHFCQUdBaEMsa0JBQUEsU0FBQTNlLEtBR0EsTUFBQSxXQUZBQSxJQUFBMlcsS0FFQTM1RSxLQUFBMGhGLE1BQUF4d0QsV0FBQWx4QixLQUFBMGhGLFFBS0EzVCxRQUVBM0IsTUFBQSxXQUVBcHNFLEtBQUFpaUYsY0FBQWppRixRQUVBQSxLQUFBeWhGLFNBQUF6aEYsS0FBQTJqRixzQkFDQTdxQyxNQUFBOTRDLEtBQUFxbEMsUUFBQXlULE1BQUEzOEMsUUFBQTZELEtBQUEraEYsZ0JBR0EvaEYsS0FBQXloRixVQUNBcGlDLE9BQUFyL0MsS0FBQXFsQyxRQUFBZ2EsT0FBQWxqRCxTQUNBNDZFLFNBQ0EvMkUsS0FBQXFsQyxRQUFBNlksVUFBQTY0QixPQUFBMWxFLE1BUUFvL0IsUUFBQSxXQUlBQSxTQUlBdmxDLEtBQUEsUUFFQWlsRCxTQUFBLFdBQ0EsTUFBQSxnQkFHQTEyQixRQUFBLFNBQUF1cEMsS0FDQSxJQUFBeFgsUUFBQXdYLElBQUF4WCxRQUVBQSxRQUFBdHNCLE1BQUE3K0IsRUFBQW1yRCxRQUFBdHNCLEtBQUFsL0IsS0FBQXFsQyxXQUNBMHhDLE9BQUEsS0FDQS8yRSxLQUFBc3RDLFdBUUFwaUMsS0FBQSxlQUVBbEosT0FBQSxXQUNBLE9BQUFoQyxLQUFBeWhGLFNBR0Fob0QsUUFBQSxTQUFBLzVCLEVBQUFxM0UsT0FBQXBrRCxRQUNBb2tELFFBQUFwa0QsUUFBQTN5QixLQUFBNjJFLGFBQUF4MkUsRUFBQXN5QixPQUFBM3lCLEtBQUFxbEMsV0FDQXdCLEtBQUE3bUMsS0FBQWl6RSxJQUFBLFNBQUEsV0FBQSxPQUFBOEQsT0FBQXRuQixTQUFBOThCLFVBQ0FqekIsRUFBQTB5QyxxQkFPQWxuQyxLQUFBLE9BRUErNEIsTUFBQSxFQUVBeEssUUFBQSxXQUVBczlDLE9BQUFBLFNBQUE5MEUsRUFBQTlGLE9BQUFtekQsWUFBQWorQyxFQUFBbFYsT0FBQWt6RCxhQUVBLFdBQUFydkQsS0FBQTI1RSxNQUFBcjFCLFNBQUF0a0QsS0FBQTBoRixNQUFBMWhGLEtBQUE2akYsV0FDQS8zQixRQUFBOXJELEtBQUEwaEYsTUFBQSxTQUNBNzlCLFNBQUE3akQsS0FBQTBoRixNQUFBeHdELFdBQUFseEIsS0FBQTZqRixVQUdBejNDLElBQUFueEMsU0FBQXEvQixnQkFBQSxjQUFBdDZCLEtBQUEyakYscUJBQUEzakYsS0FBQXdvRSxPQUFBeG9FLEtBQUEraEYsZ0JBQUEvaEYsS0FBQXloRixRQUFBLFNBQUEsSUFDQTU5QixTQUFBNW9ELFNBQUFreUMsS0FBQW50QyxLQUFBd2pGLGFBQUF4akYsS0FBQXlqRixRQUFBempGLEtBQUE4akYsWUFDQXprQyxPQUFBcGtELFNBQUFreUMsTUFDQTBXLFNBQUE3akQsS0FBQXFsQyxRQUFBcmxDLEtBQUEyakYscUJBQ0E5L0IsU0FBQTdqRCxLQUFBMGhGLE1BQUExaEYsS0FBQTRqRixvQkFBQSxXQUFBNWpGLEtBQUEyNUUsS0FBQTM1RSxLQUFBNmpGLFFBQUEsSUFDQWhnQyxTQUFBN2pELEtBQUFpekUsSUFBQWp6RSxLQUFBOGpGLFlBQ0ExM0MsSUFBQXBzQyxLQUFBaXpFLElBQUEsVUFBQSxTQUNBNXpCLE9BQUFyL0MsS0FBQWl6RSxRQU1BL25FLEtBQUEsT0FFQSs0QixNQUFBLEVBRUF4SyxRQUFBLFdBQ0E5N0IsWUFBQXFDLEtBQUFxbEMsUUFBQXJsQyxLQUFBMmpGLHFCQUVBLElBQUE5N0IsT0FBQTduRCxLQUFBaWlGLGFBQ0EsU0FBQWppRixLQUFBMjVFLE1BQUE5eEIsUUFBQUEsU0FBQTduRCxNQUFBNm5ELFNBQUE3bkQsS0FBQXlrQyxPQUNBd08sUUFBQWp6QyxLQUFBMGhGLE1BQUEsb0JBTUF4MkUsS0FBQSxTQUVBKzRCLE1BQUEsRUFFQXhLLFFBQUEsV0FNQSxHQUpBLFdBQUF6NUIsS0FBQTI1RSxNQUNBenRCLE9BQUFsc0QsS0FBQTBoRixPQUdBMWhGLEtBQUF5aEYsU0FFQSxJQUFBMUssT0FBQSxDQUNBLElBQUEvVCxJQUFBaGpFLEtBQUFxbEMsUUFDQXBqQyxFQUFBK2dFLElBQUE3a0IsV0FDQTlzQyxFQUFBMnhELElBQUE5a0IsVUFDQTY0QixRQUFBOTBFLEVBQUFBLEVBQUFvUCxFQUFBQSxTQUxBMGxFLFFBQUE5MEUsRUFBQTlGLE9BQUFtekQsWUFBQWorQyxFQUFBbFYsT0FBQWt6RCxhQVFBMXhELFlBQUFxQyxLQUFBMGhGLE1BQUExaEYsS0FBQTRqRixvQkFBQTVqRixLQUFBNmpGLFNBQ0FsbUYsWUFBQXFDLEtBQUFpekUsSUFBQWp6RSxLQUFBOGpGLFlBQ0ExM0MsSUFBQXBzQyxLQUFBaXpFLElBQUEsVUFBQSxJQUNBdDFFLFlBQUExQyxTQUFBa3lDLEtBQUFudEMsS0FBQXdqRixhQUFBeGpGLEtBQUF5akYsUUFBQXpqRixLQUFBOGpGLFlBQ0E3b0YsU0FBQWt5QyxLQUFBK1EsVUFBQTY0QixPQUFBMWxFLEVBRUErNkIsSUFBQW54QyxTQUFBcS9CLGdCQUFBLFlBQUEsSUFFQXdlLE1BQUE5NEMsS0FBQXFsQyxRQUFBLElBQ0FnYSxPQUFBci9DLEtBQUFxbEMsUUFBQSxJQUVBbHBDLE9BQUE0NkUsT0FBQUEsT0FBQTkwRSxFQUFBODBFLE9BQUExbEUsR0FFQTBsRSxPQUFBLFFBTUE3ckUsS0FBQSx1QkFFQXV1QixRQUFBLFNBQUEvNUIsR0FFQU0sS0FBQTYyRSxhQUFBbkcsUUFBQWh4RSxLQUFBLGNBQUFBLEVBQUEzQyxPQUFBaUQsS0FBQXdvRSxNQUFBLGVBQUE5b0UsRUFBQTNDLE1BQUFpRCxLQUFBd29FLE9BQ0F4b0UsS0FBQXN0QyxXQVVBeTJDLGNBRUExVixRQUFBeUgsT0FFQWo5QixVQUVBc3BDLE1BQUEsU0FBQS9xRCxFQUFBNjdDLEtBQ0EsT0FBQXJ1QyxRQUFBcXVDLElBQUEsY0FHQXlPLE1BQUEsU0FBQXRxRCxFQUFBNjdDLEtBQ0EsT0FBQXJ1QyxRQUFBcXVDLElBQUEsc0JBS0F0RixVQUFBLFdBQ0F2aEMsSUFBQXBzQyxLQUFBaXpFLElBQUEsWUFBQSxNQUdBbEYsUUFFQTNCLE1BQUEsV0FFQSxHQUFBcHNFLEtBQUEwaEYsT0FBQTFoRixLQUFBbWlGLE1BQUEsQ0FJQSxJQUFBMzJCLFFBQUFwZixJQUFBcHNDLEtBQUFpekUsSUFBQSxhQUVBN21DLElBQUFBLElBQUFwc0MsS0FBQWl6RSxJQUFBLFlBQUEsS0FBQSxZQUFBNXpFLEtBQUEwTixJQUFBLElBQUEsSUFBQXN5QyxPQUFBci9DLEtBQUFtaUYsT0FBQW5pRixLQUFBMGhGLE1BQUF0MUIsZUFDQVosVUFBQXBmLElBQUFwc0MsS0FBQWl6RSxJQUFBLGNBQ0FoZ0MsUUFBQWp6QyxLQUFBaXpFLElBQUEsWUFJQXhpQyxRQUFBLE9BQUEsWUFNQXV6QyxZQUVBMXdDLE9BQUEsUUFBQSxVQUVBcTZCLFVBQUEsV0FDQTlwQixTQUFBN2pELEtBQUFpekUsSUFBQSx3QkFHQWxGLFFBRUE5QixLQUFBLFdBQ0EsU0FBQXJKLFVBQUE1aUUsS0FBQWl6RSxNQUFBanpFLEtBQUE4NEMsT0FBQTk0QyxLQUFBcS9DLFVBQ0F2RyxNQUFBQSxNQUFBOTRDLEtBQUFpekUsSUFBQS9oRCxZQUFBbXVCLE9BQUFyL0MsS0FBQXEvQyxTQUlBK3NCLE1BQUEsU0FBQXhELEtBQ0F2cEIsT0FBQXIvQyxLQUFBaXpFLElBQUFsVCxXQUFBSSxTQUFBOWdCLE9BQUFyL0MsS0FBQXEvQyxPQUFBdkcsTUFBQTk0QyxLQUFBODRDLE9BQUE4dkIsS0FBQXZwQixTQUdBNU8sUUFBQSxPQUFBLFlBTUF3ekMsUUFFQTN3QyxPQUNBanlCLFNBQUF3OUMsT0FDQXY4QyxPQUFBdThDLFFBR0ExK0QsTUFDQWtoQixTQUFBLElBQ0FpQixPQUFBLEdBR0EwckQsU0FFQXZlLFNBQUEsU0FBQW4yQixJQUNBLElBQUErbUMsT0FBQXJnRSxLQUdBczVCLEdBQUFBLElBQUFqNUIsRUFBQWk1QixLQUFBcitCLFNBQUFreUMsS0FFQSxJQUFBKzJDLFVBQUE3a0MsT0FBQXBrRCxVQUNBa3BGLFVBQUE5a0MsT0FBQWxqRCxRQUVBdzJCLE9BQUFyUSxPQUFBZ1gsSUFBQW9CLElBQUExNkIsS0FBQXNpQixPQUtBLEdBSkFxUSxPQUFBd3hELFVBQUFELFlBQ0F2eEQsT0FBQXV4RCxVQUFBQyxXQUdBbHhDLFFBQUFqekMsS0FBQWl6RSxJQUFBLGdCQUFBanpFLEtBQUFzNUIsS0FBQSxDQUlBLElBQUE5OEIsTUFBQXlCLEtBQUFHLE1BQ0FnbUYsT0FBQWpvRixPQUFBa3pELFlBQ0FyUixLQUFBLFdBRUEsSUFtQ0FwOUIsRUFuQ0F5akUsU0FBQUQsUUFBQXp4RCxPQUFBeXhELFNBbUNBeGpFLEVBbkNBNCtDLE9BQUF2aEUsS0FBQUcsTUFBQTVCLE9BQUE2akUsT0FBQWgvQyxVQW9DQSxJQUFBLEVBQUFoaUIsS0FBQWsvQyxJQUFBbC9DLEtBQUFtL0MsR0FBQTU5QixLQWxDQXprQixPQUFBNDZFLE9BQUE1NkUsT0FBQW16RCxZQUFBKzBCLFVBR0FBLFdBQUExeEQsT0FDQW9zQixzQkFBQWYsTUFFQS9LLFFBQUFvdEIsT0FBQTRTLElBQUEsWUFBQTVTLE9BQUEvbUMsTUFLQTBrQixVQU1Bdk4sUUFFQTBDLE1BQUEsU0FBQXp6QyxHQUVBQSxFQUFBOHpDLG1CQUlBOXpDLEVBQUEweUMsaUJBQ0FweUMsS0FBQXl2RCxTQUFBbHpCLE9BQUF2OEIsS0FBQWl6RSxJQUFBL3pDLE1BQUFseUIsT0FBQSxRQVdBLElBQUFzM0UsV0FFQTc1RSxLQUFBLE1BRUE2b0MsT0FDQXN5QixJQUFBLE9BQ0FqekMsT0FBQTZFLE9BQ0FzbkIsT0FBQW9nQixRQUNBNkwsVUFBQWxNLE9BQ0FtTSxXQUFBbk0sT0FDQTBsQixPQUFBcmxCLFFBQ0ExYyxNQUFBcWMsUUFHQTErRCxLQUFBLFdBQUEsT0FDQXlsRSxPQUNBanpDLFFBQUEsRUFDQW1zQixRQUFBLEVBQ0Fpc0IsVUFBQSxFQUNBQyxXQUFBLEVBQ0F1WixRQUFBLEVBQ0EvaEMsTUFBQSxFQUNBZ2lDLFlBQUEsd0JBR0EzckMsVUFFQXpjLFNBQUEsU0FBQTRtQyxJQUFBaVEsS0FDQSxJQUFBdGdELE9BQUFxd0MsSUFBQXJ3QyxPQUVBLE9BQUFBLE9BQUFzMUMsR0FBQXQxQyxPQUFBc2dELE1BQUFBLE9BS0FsRixTQUlBM0IsTUFBQSxXQUNBcHNFLEtBQUE4K0MsUUFDQTFTLElBQUFwcUMsT0FBQWhDLEtBQUFvOEIsU0FBQSxTQUFBcDhCLEtBQUEsWUFBQSxLQUFBLGFBQUEsYUFRQWlzRSxLQUFBLFNBQUE1ekMsS0FDQSxJQUFBZ29DLE9BQUFyZ0UsS0FHQXE0QixJQUFBbXFCLE9BSUF4aUQsS0FBQW84QixTQUFBbDZCLFFBQUEsU0FBQW8zQixHQUFBejBCLEdBRUEsSUFBQTQvRSxPQUFBcHNELElBQUF4ekIsR0FFQSxJQUFBNC9FLFFBQUFBLE9BQUFuckQsS0FBQUEsR0FBQSxDQUNBLElBQUFzc0MsSUFBQXpsRSxLQUFBbTVCLEdBQUEsc0JBQ0FtckQsUUFBQW5yRCxHQUFBQSxHQUFBb3JELFFBQUE5ZSxLQUFBQSxJQUFBbnpELE1BQUEsTUFBQTR0RCxPQUFBdUYsS0FHQTZlLE9BQUFwM0MsS0FBQTY4QixTQUFBNXdDLEdBQUErbUMsT0FBQTBLLFVBQUExSyxPQUFBMkssWUFDQTN5QyxJQUFBeHpCLEdBQUE0L0UsVUFLQXJZLE1BQUEsU0FBQS96QyxLQUNBLElBQUFnb0MsT0FBQXJnRSxLQUlBLElBQUFxNEIsSUFBQW1xQixNQUVBLE9BREF4aUQsS0FBQXExRSxRQUNBaDlDLElBQUFtcUIsT0FBQSxFQUdBLElBQUFteEIsU0FBQSxJQUFBM3pFLEtBQUFvOEIsU0FBQXIzQixPQUFBLEVBQUEsRUFFQS9FLEtBQUFvOEIsU0FBQWw2QixRQUFBLFNBQUFvM0IsR0FBQXowQixHQUVBLElBQUE0L0UsT0FBQXBzRCxJQUFBeHpCLEdBQ0ErZ0UsSUFBQTZlLE9BQUFDLFFBQUE3L0UsSUFBQTQvRSxPQUFBQyxRQUFBLEdBRUEsSUFBQUQsT0FBQXAzQyxNQUFBbzNDLE9BQUF6SixRQUFBeUosT0FBQWprQyxPQXVCQWlrQyxPQUFBcDNDLE1BQUFvM0MsT0FBQXpKLFFBQUEzYSxPQUFBa2tCLFNBRUFFLE9BQUFqa0MsUUFDQWlDLGFBQUFnaUMsT0FBQWprQyxjQUNBaWtDLE9BQUFqa0MsT0FHQXBVLElBQUE5UyxHQUFBLGFBQUErbUMsT0FBQXZoQixPQUFBLFNBQUEsSUFDQW5oRCxZQUFBMjdCLEdBQUErbUMsT0FBQW1rQixhQUNBdGdDLFlBQUE1cUIsR0FBQXNzQyxLQUVBM3lCLFFBQUEzWixHQUFBLFdBRUErbUMsT0FBQW1WLFFBQUFsOEMsSUFFQW1yRCxPQUFBekosUUFBQSxPQXRDQSxDQUVBLElBQUEzdEMsS0FBQSxXQUNBakIsSUFBQTlTLEdBQUEsYUFBQSxJQUNBdXFCLFNBQUF2cUIsR0FBQSttQyxPQUFBbWtCLGFBQ0F0Z0MsWUFBQTVxQixHQUFBc3NDLEtBRUEzeUIsUUFBQTNaLEdBQUEsVUFFQSttQyxPQUFBbVYsUUFBQWw4QyxJQUVBbXJELE9BQUF6SixRQUFBLFNBQ0F5SixPQUFBamtDLE9BR0E2ZixPQUFBN2QsT0FBQW14QixTQUNBOFEsT0FBQWprQyxNQUFBM1gsV0FBQXdFLEtBQUFnekIsT0FBQTdkLE1BQUFteEIsVUFFQXRtQyxPQUdBc21DLGVBMEJBbGpDLFFBQUEsU0FBQSxPQUFBLGFBUUFrMEMsY0FFQXJ4QyxPQUNBc3lCLElBQUFwdUMsT0FDQW9OLFFBQUFwTixPQUNBdS9DLE9BQUE3WCxRQUNBLzRELFNBQUErNEQsUUFDQTU4QyxPQUFBdThDLFFBR0ExK0QsTUFDQXlsRSxJQUFBLFlBQ0FoaEMsU0FBQSxFQUNBbXlDLFFBQUEsRUFDQTV3RSxVQUFBLEVBQ0FtYyxPQUFBLEdBR0F1MkIsVUFFQWtZLE1BQUEsU0FBQTM1QixFQUFBNjdDLEtBQ0EsT0FBQWhMLEdBQUEsZUFBQWdMLEtBQUFqeEUsT0FBQSxTQUFBczNCLElBQUEsT0FBQUEsR0FBQTRGLFFBR0E5QyxTQUFBLFdBQ0EsT0FBQXA4QixLQUFBNGtDLFFBQUFBLFFBQUE1a0MsS0FBQSt3RCxNQUFBL3dELEtBQUE0a0MsU0FBQTVrQyxLQUFBK3dELE9BR0Fwc0IsUUFBQSxXQUNBLE9BQUFzakMsR0FBQWpvRSxLQUFBK3dELE1BQUFyc0QsSUFBQSxTQUFBNDBCLElBQUEsT0FBQUEsR0FBQTRGLE9BQUF0MEIsS0FBQSxRQUtBbWpFLFNBSUE5QixLQUFBLFdBQ0Fqc0UsS0FBQSsyRSxRQUNBLzJFLEtBQUF1MUUsUUFBQSxTQUFBdjFFLEtBQUErd0QsT0FBQXp1QyxPQUFBdGlCLEtBQUFzaUIsUUFBQSxPQVFBMnBELEtBQUEsU0FBQXNELFNBQ0EsSUFBQWxQLE9BQUFyZ0UsS0FHQSsyRSxPQUFBNTZFLE9BQUFrekQsWUFBQXJ2RCxLQUFBc2lCLE9BQUEsRUFDQXZWLElBQUFzeUMsT0FBQXBrRCxVQUFBb2tELE9BQUFsakQsUUFBQTZELEtBQUFzaUIsT0FFQWl0RCxRQUFBMW5CLFFBQUEsRUFFQTduRCxLQUFBMmtDLFFBQUE2dUMsTUFBQSxTQUFBbDZDLEdBQUF6MEIsR0FFQSxJQUNBNjFCLElBREFwWSxPQUFBZ1gsSUFDQW9CLElBQ0FySSxLQUFBeHRCLEVBQUEsSUFBQXc3RCxPQUFBMTdCLFFBQUE1L0IsT0FFQSxJQUFBczdELE9BQUFsNkQsV0FBQSxJQUFBdEIsR0FBQTYxQixJQUFBcThDLFFBQUExa0QsTUFBQXFJLElBQUFwQixHQUFBeXhDLFVBQUFnTSxRQUNBLE9BQUEsRUFHQSxJQUFBMWtELE1BQUEvUCxPQUFBKzlDLE9BQUExN0IsUUFBQTkvQixFQUFBLElBQUE2MUIsS0FBQXE4QyxPQUNBLE9BQUEsRUFHQSxHQUFBQSxRQUFBaHFFLElBQ0EsSUFBQSxJQUFBOE0sRUFBQXdtRCxPQUFBMTdCLFFBQUE1L0IsT0FBQSxFQUFBOFUsRUFBQWhWLEVBQUFnVixJQUNBLEdBQUFxd0QsU0FBQTdKLE9BQUExN0IsUUFBQTlxQixJQUFBLENBQ0F5ZixHQUFBK21DLE9BQUExN0IsUUFBQTlxQixHQUNBLE1BS0EsUUFBQTAxRCxRQUFBMW5CLE9BQUF4bkQsRUFBQTJCLE9BQUFxK0QsT0FBQXRQLE1BQUEsV0FBQXozQixHQUFBLEdBQUEsV0FNQTh5QyxNQUFBLFNBQUFwSixLQUNBLElBQUFuYixPQUFBbWIsSUFBQW5iLE9BR0E3bkQsS0FBQSt3RCxNQUFBN3VELFFBQUEsU0FBQW8zQixJQUFBLE9BQUFBLEdBQUE0WixTQUNBdjFDLFlBQUFxQyxLQUFBbzhCLFNBQUFwOEIsS0FBQTRsRSxLQUVBL2QsUUFDQTVVLFFBQUFqekMsS0FBQWl6RSxJQUFBLFVBQUFwckIsT0FBQWhFLFNBQUE3akQsS0FBQTRrQyxRQUFBQSxRQUFBaWpCLE9BQUE3bkQsS0FBQTRrQyxTQUFBaWpCLE9BQUE3bkQsS0FBQTRsRSxRQUtBbjFCLFFBQUEsU0FBQSxPQUFBLGFBUUFtMEMsUUFFQXZXLFFBQUF5SCxPQUVBdDhDLE9BQUEsRUFFQThaLE9BQ0E1WSxJQUFBLEtBQ0FrbEMsT0FBQVYsUUFDQTU4QyxPQUFBdThDLE9BQ0F0ZixVQUFBL25CLE9BQ0FxdEQsVUFBQXJ0RCxPQUNBc3RELFlBQUF0dEQsT0FDQXV0RCxTQUFBdnRELE9BQ0F3dEQsU0FBQXh0RCxPQUNBeXRELFVBQUF6dEQsT0FDQTB0RCxhQUFBaG1CLFFBQ0FpbUIsU0FBQWptQixRQUNBNmhCLE1BQUEsUUFDQXhZLGFBQUExSixRQUdBMStELE1BQ0F1NkIsSUFBQSxFQUNBa2xDLFFBQUEsRUFDQXQ5QyxPQUFBLEVBQ0FpOUIsVUFBQSxHQUNBc2xDLFVBQUEsWUFDQUMsWUFBQSxHQUNBQyxTQUFBLGtCQUNBQyxTQUFBLGtCQUNBQyxVQUFBLEdBQ0FDLGNBQUEsRUFDQUMsVUFBQSxFQUNBcEUsT0FBQSxFQUNBeFksY0FBQSxHQUdBMXZCLFVBRUFvc0MsVUFBQSxTQUFBamlCLElBQUFpUSxLQUNBLElBQUFnUyxVQUFBamlCLElBQUFpaUIsVUFFQSxPQUFBQSxXQUFBNWtGLEVBQUE0a0YsVUFBQWhTLE1BQUFBLEtBR0FpUyxhQUFBLFNBQUFsaUIsSUFBQWlRLEtBR0EsT0FBQXJTLE1BRkFvQyxJQUFBa2lCLGFBRUFqUyxNQUFBanpFLEtBQUFvbEYsY0FLQXpYLFVBQUEsV0FFQTN0RSxLQUFBb2xGLFlBQUEva0YsRUFBQSwyQkFBQUwsS0FBQWl6RSxNQUFBNXlFLEVBQUEsNkNBRUFMLEtBQUFtNkUsVUFDQW42RSxLQUFBc3RDLFFBSUF1Z0MsYUFBQSxXQUVBN3RFLEtBQUFtNkUsV0FDQW42RSxLQUFBbTZFLFVBQUEsRUFDQW42RSxLQUFBc3RDLE9BQ0EzdkMsWUFBQXFDLEtBQUFpbEYsVUFBQWpsRixLQUFBOGtGLGNBR0E3aEYsT0FBQWpELEtBQUFvbEYsYUFDQXBsRixLQUFBb2xGLFlBQUEsS0FDQXBsRixLQUFBa2xGLGFBQUEsTUFHQXowQyxTQUdBdmxDLEtBQUEsU0FFQSs0QixNQUFBLEVBRUF4SyxRQUFBLFdBQ0Fvc0MsYUFBQTdsRSxLQUFBaWxGLFVBQUFqbEYsS0FBQThrRixZQUFBOWtGLEtBQUE2a0YsY0FNQTM1RSxLQUFBLFdBRUErNEIsTUFBQSxFQUVBeEssUUFBQSxXQUNBb3NDLGFBQUE3bEUsS0FBQWlsRixVQUFBamxGLEtBQUE2a0YsVUFBQTdrRixLQUFBOGtGLGdCQU9BNTVFLEtBQUEsMkJBRUFvdUIsR0FBQW45QixPQUVBczlCLFFBQUEsV0FDQSxJQUFBNG1DLE9BQUFyZ0UsS0FHQSxJQUFBLElBQUFBLEtBQUF1b0UsY0FBQXJwRSxTQUFBZ2dDLE1BQUEvaUMsT0FBQWt6RCxZQUFBLEVBQUEsQ0FJQSxJQUFBMThCLE9BQUF0eUIsRUFBQW5CLFNBQUFnZ0MsTUFFQXZNLFFBQ0FtNUMsUUFBQUcsS0FBQSxXQUVBLElBQ0F2eEMsSUFEQXBZLE9BQUFxUSxRQUNBK0gsSUFDQTZ2QyxNQUFBam9ELE9BQUErOUMsT0FBQTRTLEtBQUF2NEMsSUFDQWt3QyxTQUFBdkssT0FBQTRTLElBQUE3bUIsYUFFQWlVLE9BQUE4WixVQUFBNVAsTUFBQUssVUFBQWx3QyxLQUFBNnZDLE9BQUE3dkMsSUFBQS9ILE9BQUF5NUIsY0FDQWp3RCxPQUFBNDZFLE9BQUEsRUFBQXI4QyxJQUFBa3dDLFVBQUFuYSxVQUFBNFAsT0FBQWtJLGNBQUFsSSxPQUFBa0ksYUFBQSxHQUFBbEksT0FBQS85QyxjQVlBeXJELFNBSUEzQixNQUFBLFdBRUEsSUFDQWdaLFlBREFwbEYsS0FDQW9sRixZQUNBaDVCLGFBRkFwc0QsS0FFQWl6RSxJQUFBN21CLGFBRUFoZ0IsSUFBQWc1QyxZQUFBL2xCLFFBQ0FoZ0IsT0FBQSxhQUFBalQsSUFBQXBzQyxLQUFBaXpFLElBQUEsWUFBQTdtQixhQUFBLElBQ0FoZ0IsSUFBQXBzQyxLQUFBaXpFLEtBQUEsWUFBQSxlQUFBLGFBQUEsa0JBR0FsUSxPQUFBcWlCLFlBQUFucUYsWUFDQTY4QyxNQUFBOTNDLEtBQUFpekUsSUFBQW1TLGFBQ0Evb0QsS0FBQStvRCxZQUFBLFNBQUEsS0FHQXBsRixLQUFBbXFFLFVBQUE3bkQsT0FBQXRpQixLQUFBbTZFLFNBQUFpTCxZQUFBcGxGLEtBQUFpekUsS0FBQXY0QyxJQUNBMTZCLEtBQUFxbEYsYUFBQXJsRixLQUFBbXFFLFVBQUEvZCxhQUVBLElBQUF3VCxPQUFBMGxCLFVBQUEsU0FBQXRsRixNQUVBQSxLQUFBMDZCLElBQUFyN0IsS0FBQTBOLElBQUEreEQsUUFBQXdtQixVQUFBLE1BQUF0bEYsT0FBQUEsS0FBQW1xRSxXQUFBbnFFLEtBQUFzaUIsT0FDQXRpQixLQUFBNC9ELE9BQUFBLFFBQUFBLE9BQUF4VCxhQUNBcHNELEtBQUF1bEYsU0FBQXZsRixLQUFBK2dGLFFBQUE1a0YsT0FBQTJqRixXQUFBOS9FLEtBQUErZ0YsT0FBQWwrRCxTQUlBNHRCLFFBQUEsT0FBQSxZQU1BdzdCLEtBQUEsU0FBQTcwQyxFQUFBNHJDLEtBQ0EsSUFBQXdpQixRQUFBeGlCLElBQUF3aUIsUUFLQSxZQUxBLElBQUFBLFVBQUFBLFFBQUFycEYsT0FBQWt6RCxhQUdBcnZELEtBQUE4NEMsT0FBQThwQixVQUFBNWlFLEtBQUFrbEYsY0FBQWxsRixLQUFBa2xGLGFBQUFsbEYsS0FBQWl6RSxLQUFBOTRCLGFBR0E0OEIsT0FBQS8yRSxLQUFBKzJFLE9BQUF5TyxRQUNBcjVCLFFBQUF5VyxVQUFBNWlFLEtBQUFpekUsT0FJQTdHLE1BQUEsU0FBQXBKLElBQUEwUSxPQUNBLElBQUFyVCxPQUFBcmdFLEtBQ0Ftc0QsUUFBQTZXLElBQUE3VyxRQUNBNHFCLE9BQUEvVCxJQUFBK1QsWUFDQSxJQUFBckQsUUFBQUEsVUFDQSxJQUFBdjdDLElBQUF1N0MsTUFBQXY3QyxJQUdBLEtBQUE0K0MsT0FBQSxJQUFBNXFCLFNBQUFuc0QsS0FBQWs0QixVQUFBbDRCLEtBQUFtbEYsV0FBQWh0RCxLQUlBLEdBQUFuNEIsS0FBQXVsRixVQUNBeE8sT0FBQS8yRSxLQUFBMDZCLEtBQ0ExNkIsS0FBQW1sRixXQUFBcE8sUUFBQS8yRSxLQUFBMDZCLEtBQUEsU0FBQXZDLEtBQUEsT0FBQUEsTUFBQW40QixLQUFBbTZFLFVBQUFwRCxRQUFBLzJFLEtBQUFxbEYsY0FDQSxDQUVBLElBQUFybEYsS0FBQW02RSxTQUNBLE9BR0FuNkUsS0FBQW02RSxVQUFBLEVBRUFuNkUsS0FBQXUvQyxXQUFBdzNCLE9BQUEvMkUsS0FBQW1xRSxXQUNBM3FCLFVBQUFpb0IsT0FBQXpuRSxLQUFBaXpFLEtBQ0F6ekIsVUFBQWoxQixJQUFBdnFCLEtBQUFpekUsSUFBQWp6RSxLQUFBdS9DLFdBQUF0WixLQUFBLFdBQUEsT0FBQW82QixPQUFBL3lCLFFBQUFwYSxPQUVBbHpCLEtBQUFzdEMsWUFHQXR0QyxLQUFBbTZFLFNBRUFuNkUsS0FBQSt0RSxTQUVBL3RFLEtBQUF1L0MsV0FFQUMsVUFBQWlvQixPQUFBem5FLEtBQUFpekUsS0FDQWp6RSxLQUFBcXRDLE9BQ0FtUyxVQUFBdW9CLEdBQUEvbkUsS0FBQWl6RSxJQUFBanpFLEtBQUF1L0MsV0FBQWpZLE1BQUFwVSxPQUdBbHpCLEtBQUFxdEMsUUFLQW9ELFFBQUEsT0FBQSxTQUFBLFlBSUF1OUIsU0FFQTNnQyxLQUFBLFdBRUFydEMsS0FBQW02RSxVQUFBLEVBQ0FuNkUsS0FBQSt0RSxTQUNBMXhDLEtBQUFyOEIsS0FBQW9sRixZQUFBLFNBQUEsT0FJQTkzQyxLQUFBLFdBRUF0dEMsS0FBQW02RSxXQUFBNzFCLFNBQUF0a0QsS0FBQWlsRixVQUFBamxGLEtBQUE2a0YsWUFDQTV4QyxRQUFBanpDLEtBQUFpekUsSUFBQSxZQUdBdDFFLFlBQUFxQyxLQUFBaXpFLElBQUFqekUsS0FBQStrRixTQUFBL2tGLEtBQUFnbEYsVUFDQTU0QyxJQUFBcHNDLEtBQUFpekUsS0FBQWg1QixTQUFBLEdBQUF2ZixJQUFBLEdBQUFvZSxNQUFBLEtBQ0F6YyxLQUFBcjhCLEtBQUFvbEYsWUFBQSxTQUFBLEtBSUFyWCxPQUFBLFdBRUEsSUFBQWxtQixPQUFBLElBQUE3bkQsS0FBQTA2QixLQUFBMTZCLEtBQUErMkUsT0FBQS8yRSxLQUFBMDZCLElBQ0FBLElBQUFyN0IsS0FBQTBOLElBQUEsRUFBQS9NLEtBQUFzaUIsUUFFQXRpQixLQUFBNC9ELFFBQUE1L0QsS0FBQSsyRSxPQUFBLzJFLEtBQUE0L0QsT0FBQTUvRCxLQUFBc2lCLFNBQ0FvWSxJQUFBMTZCLEtBQUE0L0QsT0FBQTUvRCxLQUFBKzJFLFFBR0EzcUMsSUFBQXBzQyxLQUFBaXpFLEtBQ0FoNUIsU0FBQSxRQUNBdmYsSUFBQUEsSUFBQSxLQUNBb2UsTUFBQTk0QyxLQUFBODRDLFFBR0F3TCxTQUFBdGtELEtBQUFpbEYsVUFBQWpsRixLQUFBNmtGLFdBRUFoOUIsUUFDQTVVLFFBQUFqekMsS0FBQWl6RSxJQUFBLFlBR0FwckIsUUFDQTVVLFFBQUFqekMsS0FBQWl6RSxJQUFBLFVBR0EvdUIsWUFBQWxrRCxLQUFBaXpFLElBQUFqekUsS0FBQWdsRixTQUFBaGxGLEtBQUErMkUsT0FBQS8yRSxLQUFBcWxGLGNBQ0F4aEMsU0FBQTdqRCxLQUFBaXpFLElBQUFqekUsS0FBQStrRixhQVFBLFNBQUFPLFVBQUFwOUUsS0FBQTg2RCxLQUNBLElBQUFnUSxPQUFBaFEsSUFBQWdRLE9BQ0FDLElBQUFqUSxJQUFBaVEsSUFDQXdTLFdBQUF6aUIsSUFBQTk2RCxLQUFBLFVBR0FxQixNQUFBeXBFLE9BQUE5cUUsTUFFQSxHQUFBcUIsTUFBQSxDQUlBLEdBQUFrbkQsVUFBQWxuRCxPQUVBLE9BQUFrOEUsV0FBQTNtQixRQUFBdjFELE9BRUEsR0FBQTIwRCxTQUFBMzBELFFBQUFBLE1BQUF6SCxNQUFBLGFBRUEsT0FBQXU5QyxPQUFBbGpELFFBQUEyaUUsUUFBQXYxRCxPQUFBLElBSUEsSUFBQSt2QixJQUFBLElBQUEvdkIsTUFBQTBwRSxJQUFBL2hELFdBQUEwdkMsTUFBQXIzRCxNQUFBMHBFLEtBRUEsT0FBQTM1QyxHQUNBaFgsT0FBQWdYLElBQUFvQixJQUFBcEIsR0FBQTh5QixrQkFEQSxHQU9BLElBQUFzNUIsVUFFQXJYLFFBQUEwSCxXQUVBdHJFLEtBQUEsVUFFQTZvQyxPQUNBNGhDLFFBQUExOUMsT0FDQStWLE9BQUEvVixPQUNBcXdCLE9BQUFnWCxPQUNBOG1CLFFBQUF6bUIsU0FHQS8rRCxNQUNBKzBFLFFBQUEsZ0JBQ0EzbkMsT0FBQSxNQUNBc2EsT0FBQSxFQUNBODlCLFNBQUEsRUFDQS9mLElBQUEsWUFDQTRkLGFBQUEsY0FDQW9DLFNBQUEsbUJBQ0E1UCxRQUFBLEdBR0FuOUIsVUFFQWd0QyxTQUFBLFNBQUE3aUIsSUFBQWlRLEtBR0EsT0FBQW5TLFNBRkFrQyxJQUFBa1MsUUFFQWpDLE1BR0F5UixRQUFBLFNBQUExaEIsSUFBQWlRLEtBR0EsT0FBQWhMLEdBRkFqRixJQUFBejFCLE9BRUEwbEMsT0FLQXhpQyxTQUlBdmxDLEtBQUEsUUFFQWlsRCxTQUFBLFdBQ0EsT0FBQW53RCxLQUFBLE9BQUEsc0JBR0F5NUIsUUFBQSxTQUFBLzVCLEdBQ0FBLEVBQUEweUMsaUJBQ0FweUMsS0FBQXF0QyxLQUFBM3RDLEVBQUE4ckQsWUFNQXRnRCxLQUFBLFFBRUFvdUIsR0FBQSxXQUNBLE9BQUF0NUIsS0FBQTZsRixVQUdBMTFCLFNBQUEsV0FDQSxNQUFBLElBQUFud0QsS0FBQSxTQUFBLFdBQUFBLEtBQUEsU0FBQSxLQUdBeTVCLFFBQUEsU0FBQS81QixHQUNBQSxFQUFBMHlDLGlCQUNBcHlDLEtBQUFxdEMsS0FBQWx0QyxLQUFBVCxFQUFBOHJELFFBQUF4ckQsS0FBQTRsRixjQUtBMTZFLEtBQUEsdUJBRUFsSixPQUFBLFdBQ0EsT0FBQWhDLEtBQUEybEYsU0FHQXJzRCxHQUFBLFdBQ0EsT0FBQXQ1QixLQUFBNmxGLFVBR0Fwc0QsUUFBQSxTQUFBLzVCLEdBQ0FneEUsUUFBQWh4RSxLQUlBQSxFQUFBMHlDLGlCQUNBajJDLE9BQUEycEYsZUFBQTFoRixZQUNBcEUsS0FBQXF0QyxLQUFBLGNBQUEzdEMsRUFBQTNDLEtBQUEsT0FBQSxnQkFPQWd4RSxPQUFBLFdBQ0EsSUFBQTFOLE9BQUFyZ0UsS0FHQUEsS0FBQTZsRixTQUFBM2pGLFFBQUEsU0FBQXN6QixNQUFBLE9BQUE2cUMsT0FBQTRXLFdBQUF6aEQsS0FBQStPLFlBQ0F2a0MsS0FBQXF0QyxLQUFBcnJDLE9BQUFoQyxLQUFBMGtGLFFBQUEsSUFBQTFrRixLQUFBLEtBQUEsSUFBQUEsS0FBQTBrRixRQUFBMWtGLEtBQUE2bkQsU0FBQTduRCxLQUFBMGtGLFFBQUEsS0FJQTFXLFNBRUEzZ0MsS0FBQSxTQUFBcy9CLE1BWUEsSUFYQSxJQVNBcC9CLE9BVEE4eUIsT0FBQXJnRSxLQUlBK0UsT0FEQS9FLEtBQUEwa0YsUUFDQTMvRSxPQUNBMC9CLE9BQUF6a0MsS0FBQTZsRixTQUFBOWdGLFFBQUFvbEIsTUFBQW5vQixPQUFBaEMsS0FBQTZsRixTQUFBLEdBQUF0aEQsU0FBQSxJQUFBdmtDLEtBQUEsS0FBQSxJQUNBK2xGLFFBQUF0aEQsTUFBQSxFQUNBdE0sSUFBQSxhQUFBdzBDLE1BQUEsRUFBQSxFQUVBN3lELEtBQUFrckQsU0FBQTJILEtBQUEzc0UsS0FBQTBrRixRQUFBamdELE1BRUE1L0IsRUFBQSxFQUFBQSxFQUFBRSxPQUFBRixJQUFBaVYsTUFBQUEsS0FBQXFlLElBQUFwekIsUUFBQUEsT0FDQSxJQUFBOGQsUUFBQXc5QyxPQUFBcWtCLFFBQUE1cUUsTUFBQSw0QkFBQSxDQUNBeXpCLE9BQUE4eUIsT0FBQXFrQixRQUFBNXFFLE1BQ0EsT0FJQXl6QixRQUFBOUksTUFBQSxHQUFBNmYsU0FBQS9XLE9BQUF2dEMsS0FBQTRsRSxNQUFBbmhDLE9BQUEzcUIsT0FJQW5jLFlBQUFxQyxLQUFBMGtGLFFBQUExa0YsS0FBQTRsRSxLQUNBdnBDLEtBQUFyOEIsS0FBQTBrRixRQUFBLGlCQUFBLEdBQ0E3Z0MsU0FBQXRXLE9BQUF2dEMsS0FBQTRsRSxLQUNBdnBDLEtBQUFrUixPQUFBLGlCQUFBLEdBRUF2dEMsS0FBQTZsRixTQUFBM2pGLFFBQUEsU0FBQXN6QixNQUNBdXdELFFBR0ExbEIsT0FBQW9XLGVBQUFqaEQsS0FBQStPLFNBQUFFLE1BQUFqUCxLQUFBK08sU0FBQXpxQixRQUZBdW1ELE9BQUEyVyxVQUFBeGhELEtBQUErTyxTQUFBenFCLGFBWUFrc0UsS0FFQTNYLFFBQUF5SCxPQUVBMUgsUUFBQXNYLFNBRUFweUMsT0FDQXl0QyxNQUFBLFNBR0E1Z0YsTUFDQTRnRixNQUFBLElBQ0E2RSxTQUFBLGVBR0FqWSxVQUFBLFdBRUEsSUFBQS9ILElBQUF0aEIsU0FBQXRrRCxLQUFBaXpFLElBQUEsZUFDQSxnQkFDQTN1QixTQUFBdGtELEtBQUFpekUsSUFBQSxpQkFDQSxlQUdBck4sS0FDQTVsRSxLQUFBdTFFLFFBQUEsU0FBQXYxRSxLQUFBaXpFLEtBQUFyTixJQUFBQSxJQUFBK1QsS0FBQSxRQUFBb0gsTUFBQS9nRixLQUFBK2dGLFVBTUFrRixRQUVBNVgsUUFBQTBILFdBRUF0ckUsS0FBQSxTQUVBNm9DLE9BQ0Ezd0MsS0FBQTYwQixPQUNBN0UsT0FBQSxLQUNBZ25ELEtBQUEsT0FDQW9ILE1BQUEsU0FHQTVnRixNQUNBd0MsTUFBQSxFQUNBZ3dCLFFBQUEsRUFDQWduRCxLQUFBLFFBQ0EzRCxRQUFBLEVBQ0ErSyxPQUFBLEdBR0Fsb0MsVUFFQWxtQixPQUFBLFNBQUFxd0MsSUFBQWlRLEtBQ0EsSUFBQXR3RSxLQUFBcWdFLElBQUFyZ0UsS0FDQWd3QixPQUFBcXdDLElBQUFyd0MsT0FHQSxPQURBQSxPQUFBbXVDLFNBQUFudUMsUUFBQWh3QixLQUFBc3dFLE1BQ0FsdUUsUUFBQTR0QixTQUFBc2dELE9BS0F4aUMsU0FJQXZsQyxLQUFBMGdFLGFBQUEsSUFBQUMsYUFFQTdwRSxPQUFBLFdBQ0EsT0FBQWc4RCxTQUFBaCtELEtBQUEyNUUsS0FBQSxVQUdBbGdELFFBQUEsU0FBQS81QixHQUNBZ3hFLFFBQUFoeEUsSUFDQU0sS0FBQXV0QyxPQUFBLFVBQUE3dEMsRUFBQTNDLE9BQUE2dUUsYUFBQSxPQUFBLFlBUUExZ0UsS0FBQSxRQUVBbEosT0FBQSxXQUNBLE9BQUFnOEQsU0FBQWgrRCxLQUFBMjVFLEtBQUEsVUFBQXRPLFVBQUFyTixTQUFBaCtELEtBQUEyNUUsS0FBQSxVQUdBbGdELFFBQUEsU0FBQS81QixHQU9BLElBQUErMEQsTUFMQWljLFFBQUFoeEUsSUFBQXMrRCxTQUFBaCtELEtBQUEyNUUsS0FBQSxhQU1BLzBDLFFBQUFsbEMsRUFBQWl6QixPQUFBLHlCQUNBOGhDLEtBQUE3dkIsUUFBQWxsQyxFQUFBaXpCLE9BQUEsY0FDQTN5QixLQUFBNGxFLE1BQ0FoRCxVQUFBNWlFLEtBQUEyeUIsU0FDQThoQyxLQUFBdjFCLE1BQUFyYyxRQUFBN2lCLEtBQUEyeUIsT0FBQThoQyxLQUFBdjFCLFNBR0EySCxLQUFBNXJDLFNBQUEsUUFBQSxTQUFBeUUsR0FBQSxPQUFBQSxFQUFBMHlDLG1CQUdBcHlDLEtBQUF1dEMsYUFNQXdnQyxRQUVBM0IsTUFBQSxXQUVBLEdBQUFwTyxTQUFBaCtELEtBQUEyNUUsS0FBQSxVQUFBMzVFLEtBQUErZ0YsTUFBQSxDQUlBLElBQUFuSyxRQUFBNTJFLEtBQUE2MkUsVUFBQTcyRSxLQUFBMnlCLFNBQ0F4MkIsT0FBQTJqRixXQUFBOS9FLEtBQUErZ0YsT0FBQWwrRCxTQUFBK3pELFFBQUFBLFVBQ0E1MkUsS0FBQXV0QyxXQUtBa0QsUUFBQSxPQUFBLFdBSUF1OUIsU0FFQXpnQyxPQUFBLFNBQUF4d0MsTUFDQWsyQyxRQUFBanpDLEtBQUEyeUIsT0FBQTUxQixNQUFBLFVBQUFpRCxRQUNBQSxLQUFBeTJFLGNBQUF6MkUsS0FBQTJ5QixXQTJEQXAwQixNQUFBd3dCLFFBQUEsYUFuREEsU0FBQXh3QixPQUdBQSxNQUFBK3lFLFVBQUEsWUFBQXFHLFdBQ0FwNUUsTUFBQSt5RSxVQUFBLFFBQUEyRyxPQUNBMTVFLE1BQUEreUUsVUFBQSxRQUFBeUgsT0FDQXg2RSxNQUFBK3lFLFVBQUEsT0FBQW9JLE1BQ0FuN0UsTUFBQSt5RSxVQUFBLFdBQUFzSixVQUNBcjhFLE1BQUEreUUsVUFBQSxhQUFBdUosWUFDQXQ4RSxNQUFBK3lFLFVBQUEsTUFBQXlKLEtBQ0F4OEUsTUFBQSt5RSxVQUFBLE9BQUFtSyxNQUNBbDlFLE1BQUEreUUsVUFBQSxjQUFBMkssYUFDQTE5RSxNQUFBK3lFLFVBQUEsaUJBQUErSyxnQkFDQTk5RSxNQUFBK3lFLFVBQUEsT0FBQStNLE1BQ0E5L0UsTUFBQSt5RSxVQUFBLE1BQUEwTixLQUNBemdGLE1BQUEreUUsVUFBQSxTQUFBdVAsUUFDQXRpRixNQUFBK3lFLFVBQUEsU0FBQTJKLFFBQ0ExOEUsTUFBQSt5RSxVQUFBLFFBQUE0USxTQUNBM2pGLE1BQUEreUUsVUFBQSxNQUFBcVIsS0FDQXBrRixNQUFBK3lFLFVBQUEsU0FBQXNSLFFBQ0Fya0YsTUFBQSt5RSxVQUFBLFlBQUFpUyxXQUNBaGxGLE1BQUEreUUsVUFBQSxlQUFBeVMsY0FDQXhsRixNQUFBK3lFLFVBQUEsYUFBQTBTLFlBQ0F6bEYsTUFBQSt5RSxVQUFBLFNBQUEyUyxRQUNBMWxGLE1BQUEreUUsVUFBQSxZQUFBZ1QsV0FDQS9sRixNQUFBK3lFLFVBQUEsZUFBQXFULGNBQ0FwbUYsTUFBQSt5RSxVQUFBLFNBQUFzVCxRQUNBcm1GLE1BQUEreUUsVUFBQSxNQUFBbUwsS0FDQWwrRSxNQUFBK3lFLFVBQUEsV0FBQW9VLFVBQ0FubkYsTUFBQSt5RSxVQUFBLE1BQUEwVSxLQUNBem5GLE1BQUEreUUsVUFBQSxTQUFBMlUsUUFDQTFuRixNQUFBK3lFLFVBQUEsUUFBQW1ILE9BR0FsNkUsTUFBQSt5RSxVQUFBLFFBQUF3TixPQUNBdmdGLE1BQUEreUUsVUFBQSxTQUFBcU4sZUFDQXBnRixNQUFBK3lFLFVBQUEsbUJBQUFxTixlQUNBcGdGLE1BQUEreUUsVUFBQSxjQUFBcU4sZUFDQXBnRixNQUFBK3lFLFVBQUEsaUJBQUFxTixlQUNBcGdGLE1BQUEreUUsVUFBQSxxQkFBQXFOLGVBQ0FwZ0YsTUFBQSt5RSxVQUFBLGFBQUF1TixRQUNBdGdGLE1BQUEreUUsVUFBQSxlQUFBc04sVUFDQXJnRixNQUFBK3lFLFVBQUEsbUJBQUFzTixVQUNBcmdGLE1BQUEreUUsVUFBQSxVQUFBeU4sU0FDQXhnRixNQUFBK3lFLFVBQUEsUUFBQXFOLGVBR0FwZ0YsTUFBQTJ5RSxJQUFBa0gsTUFNQThOLENBQUEzbkYsT0FFQSxJQUFBNG5GLFdBRUE5WCxRQUFBeUgsT0FFQXQ4QyxPQUFBLEVBRUE4WixPQUNBN3dDLEtBQUErMEIsT0FDQXdwRCxXQUFBeHBELFFBR0FyM0IsTUFDQXNDLEtBQUEsR0FDQXUrRSxXQUFBLHdCQUdBbm9DLFVBRUFwMkMsS0FBQSxTQUFBdWdFLEtBQ0EsSUFBQXZnRSxLQUFBdWdFLElBQUF2Z0UsS0FFQSxPQUFBeEUsS0FBQW90QyxNQUFBNW9DLE9BR0FyRCxLQUFBLFNBQUE0akUsSUFBQWlRLEtBR0EsT0FBQTV5RSxFQUZBMmlFLElBQUFnZSxXQUVBampGLFFBQUEsU0FBQSxRQUFBazFFLE1BR0ExekUsTUFBQSxTQUFBeWpFLElBQUFpUSxLQUdBLE9BQUE1eUUsRUFGQTJpRSxJQUFBZ2UsV0FFQWpqRixRQUFBLFNBQUEsU0FBQWsxRSxNQUdBenpFLFFBQUEsU0FBQXdqRSxJQUFBaVEsS0FHQSxPQUFBNXlFLEVBRkEyaUUsSUFBQWdlLFdBRUFqakYsUUFBQSxTQUFBLFdBQUFrMUUsTUFHQXh6RSxRQUFBLFNBQUF1akUsSUFBQWlRLEtBR0EsT0FBQTV5RSxFQUZBMmlFLElBQUFnZSxXQUVBampGLFFBQUEsU0FBQSxXQUFBazFFLE1BR0FobkUsTUFBQSxXQUNBLElBQUFvMEQsT0FBQXJnRSxLQUVBLE9BQUEsT0FBQSxRQUFBLFVBQUEsV0FBQWdDLE9BQUEsU0FBQTRKLE1BQUEsT0FBQXkwRCxPQUFBejBELFVBS0EraEUsVUFBQSxXQUNBM3RFLEtBQUF4RCxTQUdBcXhFLGFBQUEsV0FDQSxJQUFBeE4sT0FBQXJnRSxLQUVBQSxLQUFBbkUsT0FDQW1FLEtBQUFpTSxNQUFBL0osUUFBQSxTQUFBMEosTUFBQSxPQUFBNUYsTUFBQXE2RCxPQUFBejBELFVBR0E2a0MsU0FJQXZsQyxLQUFBLG1CQUVBb3VCLEdBQUFyK0IsU0FFQXcrQixRQUFBLFdBQ0F4K0IsU0FBQTZqRCxPQUNBOStDLEtBQUFuRSxPQUVBbUUsS0FBQXhELFdBUUF1eEUsUUFFQTNCLE1BQUEsV0FDQSxJQW1FQTNwRSxLQUVBMnJCLE1BckVBaXlDLE9BQUFyZ0UsS0FHQW9tRixVQWdFQTNqRixLQWhFQXpDLEtBQUF5QyxNQXFFQTJyQixNQUhBQSxNQUFBM3JCLEtBQUF4RSxLQUFBRyxNQUlBcUIsUUFBQTJ1QixNQUFBLElBQUEsR0FDQTV1QixRQUFBNHVCLE1BQUEsSUFBQSxHQUFBLEdBQ0E3dUIsTUFBQTZ1QixNQUFBLElBQUEsR0FBQSxHQUFBLEdBQ0FodkIsS0FBQWd2QixNQUFBLElBQUEsR0FBQSxHQUFBLEtBdkVBZzRELFNBQUFoNEQsT0FBQSxJQUVBcHVCLEtBQUFuRSxPQUVBdXFGLFNBQUFobkYsS0FDQWduRixTQUFBN21GLE1BQ0E2bUYsU0FBQTVtRixRQUNBNG1GLFNBQUEzbUYsUUFDQSxHQUdBTyxLQUFBaU0sTUFBQS9KLFFBQUEsU0FBQTBKLE1BRUEsSUFBQXk2RSxPQUFBN3VELE9BQUFuNEIsS0FBQUMsTUFBQThtRixTQUFBeDZFLFFBRUF5NkUsT0FBQUEsT0FBQXRoRixPQUFBLEVBQUEsSUFBQXNoRixPQUFBQSxPQUVBLElBQUEvc0QsR0FBQSttQyxPQUFBejBELE1BQ0EwdEIsR0FBQXVELGNBQUF3cEQsVUFDQUEsT0FBQUEsT0FBQTV6RSxNQUFBLEtBRUExTixTQUFBdTBCLEdBQUFpTCxTQUFBeC9CLFFBQ0FpeUMsS0FBQTFkLEdBQUErc0QsT0FBQTNoRixJQUFBLFdBQUEsTUFBQSxrQkFBQWtHLEtBQUEsS0FHQXk3RSxPQUFBbmtGLFFBQUEsU0FBQW9rRixNQUFBemhGLEdBQUEsT0FBQXkwQixHQUFBaUwsU0FBQTEvQixHQUFBZzRCLFlBQUF5cEQsYUFTQXRZLFNBRUF4eEUsTUFBQSxXQUNBLElBQUE2akUsT0FBQXJnRSxLQUdBQSxLQUFBbkUsT0FFQW1FLEtBQUF5QyxNQUFBekMsS0FBQWlNLE1BQUFsSCxTQUNBL0UsS0FBQXExRSxRQUNBcjFFLEtBQUF3Z0QsTUFBQXpoRCxZQUFBLFdBQUEsT0FBQXNoRSxPQUFBZ1YsU0FBQSxPQUtBeDVFLEtBQUEsV0FFQW1FLEtBQUF3Z0QsUUFDQXZoRCxjQUFBZSxLQUFBd2dELE9BQ0F4Z0QsS0FBQXdnRCxNQUFBLFNBc0JBLElBeUlBK2xDLFFBeklBQyxZQUFBLHNCQUVBQyxTQUVBbnpDLE9BQ0FpTSxVQUFBc2YsUUFHQTErRCxNQUNBby9DLFVBQUEsS0FHQTFHLFVBRUFsbUIsT0FBQSxXQUNBLE9BQUEzeUIsS0FBQWl6RSxNQUtBakYsU0FFQXZzQixRQUFBLFNBQUF4aEQsUUFDQSxJQUFBb2dFLE9BQUFyZ0UsS0FxSEF1bUYsVUFDQUEsUUFBQTd1QyxPQUFBejhDLFNBQUFnMkIsS0FBQSxXQUFBeTFELE9BQ0FDLFdBQ0EsSUFBQUgsWUFBQSw2SEFuSEEsSUFBQWppRCxTQUFBMDZCLFFBQUFqL0QsS0FBQTJ5QixPQUFBNFIsVUFDQXFpRCxVQUFBcmlELFNBQUE3L0IsSUFBQSxTQUFBNDBCLElBQUEsT0FBQXE1QyxTQUFBcjVDLElBQUEsS0FFQStwRCxVQUFBaGtDLE9BQUFyL0MsS0FBQTJ5QixRQUNBazBELFdBQUExcUYsT0FBQWt6RCxZQUVBcHZELFNBRUF1bkUsV0FBQUMsT0FBQXpuRSxLQUFBMnlCLFFBQ0E0UixTQUFBcmlDLFFBQUFzbEUsV0FBQUMsUUFFQW5uQyxNQUFBdGdDLEtBQUEyeUIsUUFDQTN5QixLQUFBdzFFLFFBQUF4MUUsS0FBQTJ5QixRQUNBbTVDLFFBQUFTLFFBRUEsSUFBQTZXLFVBQUEvakMsT0FBQXIvQyxLQUFBMnlCLFFBSUFtMEQsU0FGQXZpRCxTQUFBQSxTQUFBclUsT0FBQSt1QyxRQUFBai9ELEtBQUEyeUIsT0FBQTRSLFVBQUF2aUMsT0FBQSxTQUFBczNCLElBQUEsT0FBQTBrQyxTQUFBejVCLFNBQUFqTCxRQUVBNTBCLElBQUEsU0FBQTQwQixHQUFBejBCLEdBQUEsU0FBQXkwQixHQUFBcEksWUFBQXJzQixLQUFBK2hGLGFBQ0FBLFVBQUEvaEYsR0FDQSs5RCxVQUFBdHBDLElBQ0F5dEQsc0JBQUF6dEQsS0FDQStpQixRQUFBLElBQ0FBLFFBQUF1bUIsVUFBQXRwQyxJQUFBLEVBQUEsTUErQkEsT0EzQkFzdEQsVUFBQUUsUUFBQXBpRixJQUFBLFNBQUE0dUMsTUFBQXp1QyxHQUNBLElBQUFvRCxLQUFBczhCLFNBQUExL0IsR0FBQXFzQixhQUFBbXZDLE9BQUExdEMsU0FDQWkwRCxVQUFBL2hGLElBQUE4dEUsU0FBQXB1QyxTQUFBMS9CLEtBR0EsR0FBQW9ELEtBQ0EsR0FBQXFyQyxPQUVBLEtBQUEsWUFBQUEsT0FBQSxDQUNBcnJDLEtBQUFvMEMsUUFFQSxFQUNBL0ksTUFBQStJLFFBQUEsU0FFQXAwQyxLQUFBbzBDLHFCQVBBcDBDLEtBQUFvMEMsUUFZQSxPQUFBcDBDLE9BR0E0N0MsU0FBQTdqRCxLQUFBMnlCLE9BQUE2ekQsYUFDQWppRCxTQUFBcmlDLFFBQUEsU0FBQW8zQixHQUFBejBCLEdBQUEsT0FBQStoRixVQUFBL2hGLElBQUF1bkMsSUFBQTlTLEdBQUFzdEQsVUFBQS9oRixNQUNBdW5DLElBQUFwc0MsS0FBQTJ5QixPQUFBLFlBQUEwd0QsV0FDQWxuRixPQUFBNDZFLE9BQUE1NkUsT0FBQW16RCxZQUFBdTNCLFlBRUE5aUIsVUFBQXo1QixJQUFBL0YsU0FBQTcvQixJQUFBLFNBQUE0MEIsR0FBQXowQixHQUFBLE9BQUEraEYsVUFBQS9oRixJQUFBaWlGLFFBQUFqaUYsR0FDQTJpRSxXQUFBaHJFLE1BQUE4OEIsR0FBQXd0RCxRQUFBamlGLEdBQUF3N0QsT0FBQTlnQixVQUFBLFFBQ0F3a0IsVUFBQWwrQixZQUNBM1YsT0FBQXMzQyxXQUFBaHJFLE1BQUF3RCxLQUFBMnlCLFFBQUF1cEQsVUFBQWtILFdBQUFwakYsS0FBQXUvQyxVQUFBLFVBQUF0WixLQUFBLFdBQ0ExQixTQUFBcmlDLFFBQUEsU0FBQW8zQixHQUFBejBCLEdBQUEsT0FBQXVuQyxJQUFBOVMsSUFBQTZTLFFBQUEsSUFBQTI2QyxRQUFBamlGLEdBQUF3M0MsUUFBQSxPQUFBLEdBQUFVLE9BQUEsT0FDQXpjLE1BQUErL0IsT0FBQTF0QyxRQUNBMHRDLE9BQUFtVixRQUFBblYsT0FBQTF0QyxTQUNBTyxTQU1BLFNBQUF5L0MsU0FBQXI1QyxHQUFBK2lCLFNBRUEsSUFBQVUsT0FBQTNRLElBQUE5UyxHQUFBLFVBRUEsUUFBQXNwQyxVQUFBdHBDLEtBQ0ErbEMsUUFDQWx6QixRQUFBLEdBQ0FrUSxRQUFBQSxRQUFBalEsSUFBQTlTLEdBQUEsV0FBQSxJQUNBMHRELGNBQUEsT0FDQS9zQyxTQUFBLFdBQ0E4QyxPQUFBLFNBQUFBLE9BQUE1eUIsTUFBQW1QLElBQUF5akIsUUFDQWdxQyxzQkFBQXp0RCxLQUlBLFNBQUFnSCxNQUFBaEgsSUFDQThTLElBQUE5UyxHQUFBaUwsVUFDQThhLE9BQUEsR0FDQS9CLEtBQUEsR0FDQWpCLFFBQUEsR0FDQTJxQyxjQUFBLEdBQ0Evc0MsU0FBQSxHQUNBdmYsSUFBQSxHQUNBb2UsTUFBQSxLQUVBbjdDLFlBQUEyN0IsR0FBQWt0RCxhQUNBcDZDLElBQUE5UyxHQUFBLFlBQUEsSUFHQSxTQUFBeXRELHNCQUFBenRELElBQ0EsSUFBQTBwQyxJQUFBMXBDLEdBQUErakIsd0JBQ0EyN0IsVUFBQWhXLElBQUEzakIsT0FDQTQ1QixTQUFBalcsSUFBQWxxQixNQUNBNDZCLE1BQUF6NUIsU0FBQTNnQixJQUNBb0IsSUFBQWc1QyxNQUFBaDVDLElBQ0E0aUIsS0FBQW8yQixNQUFBcDJCLEtBR0EsT0FBQTVpQixJQUZBQSxLQUFBb2tDLFFBQUExeUIsSUFBQTlTLEdBQUEsY0FFQWdrQixLQUFBQSxLQUFBK0IsT0FBQTI1QixVQUFBbGdDLE1BQUFtZ0MsVUFjQSxJQUFBZ08sUUFFQTVZLFFBQUFvWSxTQUVBaDhFLEtBQUEsU0FFQTZvQyxPQUNBM2dCLE9BQUF1c0MsUUFDQWdvQixVQUFBaG9CLFNBR0EvK0QsTUFDQXd5QixPQUFBLEtBQ0F1MEQsV0FBQSxFQUNBdEIsU0FBQSxvQkFDQWhnQixJQUFBLFlBQ0FybUIsVUFBQSxLQUdBMUcsVUFFQTZyQyxRQUFBLFNBQUExaEIsSUFBQWlRLEtBQ0FqUSxJQUFBNGlCLFNBRUEsT0FBQTNkLEdBQUEsSUFBQWpvRSxLQUFBLFNBQUEsV0FBQUEsS0FBQSxTQUFBLElBQUFpekUsTUFHQXRnRCxPQUFBLFNBQUFxd0MsSUFBQWlRLEtBR0EsT0FBQTV5RSxFQUZBMmlFLElBQUFyd0MsT0FFQXNnRCxPQUtBeGlDLFNBSUF2bEMsS0FBQSxRQUVBaWxELFNBQUEsV0FDQSxNQUFBLElBQUFud0QsS0FBQSxTQUFBLFdBQUFBLEtBQUEsU0FBQSxLQUdBeTVCLFFBQUEsU0FBQS81QixHQUVBQSxFQUFBMHlDLGlCQUNBcHlDLEtBQUE2RCxNQUFBbkUsRUFBQThyRCxZQVFBbWlCLFVBQUEsV0FDQSxJQUFBdE4sT0FBQXJnRSxLQUdBLElBQUEsSUFBQUEsS0FBQWtuRixVQUFBLENBSUEsSUFBQUMsUUFBQWxmLEdBQUFqb0UsS0FBQWtuRixVQUFBbG5GLEtBQUFpekUsS0FDQWp6RSxLQUFBMGtGLFFBQUF4aUYsUUFBQSxTQUFBbzNCLElBQUEsT0FBQTRxQixZQUFBNXFCLEdBQUErbUMsT0FBQXVGLElBQUE1SCxTQUFBbXBCLFFBQUE3dEQsU0FHQXkwQyxPQUFBLFNBQUF3QixTQUVBLElBQUFtVixRQUFBblYsUUFBQW1WLFFBQ0FuZ0QsU0FBQWdyQyxRQUFBaHJDLFNBQ0E2aUQsWUFBQTFDLFFBQUExa0YsS0FBQTBrRixTQUFBLElBQUEwQyxZQUFBN2lELFNBQUF2a0MsS0FBQTJ5QixPQUFBNFIsVUFBQSxLQUlBZ3JDLFFBQUFtVixRQUFBMWtGLEtBQUEwa0YsUUFDQW5WLFFBQUFockMsU0FBQXZrQyxLQUFBMnlCLE9BQUE0UixTQUVBdmtDLEtBQUFxbkYsU0FBQXJuRixLQUFBc25GLFlBQUEsS0FJQXRaLFNBRUFucUUsTUFBQSxTQUFBeTFCLElBQ0F0NUIsS0FBQXFuRixTQUFBRSxXQUFBanVELEdBQUF0NUIsS0FBQTRsRixTQUFBNWxGLEtBQUFzbkYsY0FHQUEsU0FBQSxXQUNBLElBQUFqbkIsT0FBQXJnRSxLQUVBLE9BQUFBLEtBQUEwa0YsUUFDQTFpRixPQUFBLFNBQUEycUUsTUFBQSxPQUFBcm9CLFNBQUFxb0IsS0FBQXRNLE9BQUF1RixPQUNBckMsT0FBQSxTQUFBeGlFLE1BQUF1NEIsSUFBQSxPQUFBaXVELFdBQUFqdUQsR0FBQSttQyxPQUFBdWxCLFNBQUE3a0YsU0FBQWlCLFFBQUE0dEQsR0FBQSxJQUFBdjhDLFdBR0FnMEUsU0FBQSxTQUFBdG1GLE1BQUEyMUUsWUFDQSxJQUFBclcsT0FBQXJnRSxVQUNBLElBQUEwMkUsYUFBQUEsWUFBQSxHQUdBMzFFLE1BQUFzK0QsUUFBQXI5RCxRQUFBNHRELEdBQUEsSUFBQXY4QyxTQUFBdFMsT0FFQWt5QyxRQUFBanpDLEtBQUFpekUsSUFBQSxnQkFBQWp6RSxLQUFBZSxRQUVBLElBQUF3akMsU0FBQTA2QixRQUFBai9ELEtBQUEyeUIsT0FBQTRSLFVBRUF2a0MsS0FBQTBrRixRQUFBeGlGLFFBQUEsU0FBQW8zQixJQUFBLE9BQUE0cUIsWUFBQTVxQixHQUFBK21DLE9BQUF1RixJQWtFQSxTQUFBdHNDLEdBQUFrdUQsUUFBQXhrQixLQUNBLElBQUF5a0IsWUFBQXprQixJQUFBaGhFLE9BQ0EwbEYsU0FBQTFrQixJQUFBM3ZELEtBQ0FzMEUsVUFBQUQsU0FBQSxHQUNBRSxXQUFBRixTQUFBLEdBRUFoVSxNQUFBbVUsVUFBQXZ1RCxHQUFBa3VELFNBQ0FwVSxVQUFBTSxNQUFBMXhFLE9BQ0E4bEYsTUFBQXBVLE1BQUFvVSxXQUFBLElBQUFBLFFBQUFBLE1BQUEsSUFDQSxJQUFBejBFLEtBQUFxZ0UsTUFBQXJnRSxLQUNBdXBDLE1BQUE4MkIsTUFBQTkyQixXQUFBLElBQUFBLFFBQUFBLE1BQUEsT0FDQSxPQUFBc2lCLFNBQ0FrVSxXQUFBN3VFLFlBQUE4TyxRQUFBeTBFLFNBQUFMLGNBQUFyVSxZQUFBcVUsWUFBQUssUUFBQXZqRixZQUFBNnVFLGFBQUFxVSxZQUFBSyxTQUNBSCxXQUFBdDBFLE1BQUFzMEUsWUFBQXQwRSxNQUFBdTBFLGFBQUFockMsT0EvRUFtckMsQ0FBQXp1RCxHQUFBK21DLE9BQUF1bEIsU0FBQTdrRixVQUVBLElBQUFpbkYsU0FBQSxXQUVBLElBQUF6cUYsU0EwRkEsU0FBQXlsRSxLQUNBLElBRUF6bEUsU0FBQSxHQUVBLE9BREEwMEIsS0FIQSt3QyxJQUFBaGhFLE9BR0EsU0FBQXVILE9BQUEsT0FBQWhNLFVBQUFnTSxPQUFBLEtBQ0FoTSxTQS9GQTBxRixDQUFBbG5GLE9BRUF3akMsU0FBQXJpQyxRQUFBLFNBQUFvM0IsSUFBQSxPQUFBOFMsSUFBQTlTLEdBQUEsVUFBQS83QixXQUFBc2xCLFFBQUF5VyxHQUFBLzdCLFVBQUEsT0FBQSxNQUVBLElBQUF5bEUsSUFBQWppRSxNQUFBc1MsS0FDQUEsS0FBQTJ2RCxJQUFBLEdBQ0FwbUIsTUFBQW9tQixJQUFBLEdBRUEsR0FBQTN2RCxLQUFBLENBQ0EsSUFBQTYwRSxPQXlGQSxTQUFBOTRDLE1BQUEvN0IsS0FBQXVwQyxPQUNBLE9BQUFxaUIsUUFBQTd2QixPQUFBLzdCLEtBQUEsU0FBQW5PLEVBQUFDLEdBQUEsT0FBQWhGLEtBQUErRSxFQUFBbU8sTUFBQTgwRSxjQUFBaG9GLEtBQUFnRixFQUFBa08sUUFBQSxRQUFBdXBDLFFBQUEsS0ExRkF3ckMsQ0FBQTdqRCxTQUFBbHhCLEtBQUF1cEMsT0FDQXdxQyxZQUFBYyxPQUFBM2pELFdBQ0EyakQsT0FBQWhtRixRQUFBLFNBQUFvM0IsSUFBQSxPQUFBb2UsT0FBQTJvQixPQUFBMXRDLE9BQUEyRyxRQU1BbzlDLFdBQ0ExMkUsS0FBQXloRCxRQUFBdW1DLFVBQUEvaEQsS0FBQSxXQUFBLE9BQUFnTixRQUFBb3RCLE9BQUE0UyxJQUFBLGVBQUE1UyxZQUVBMm5CLFdBQ0EvMEMsUUFBQWp6QyxLQUFBaXpFLElBQUEsZUFBQWp6RSxXQVNBLFNBQUE2bkYsVUFBQXZ1RCxHQUFBa3VELFNBQ0EsT0FBQWhaLGFBQUFydUUsS0FBQW01QixHQUFBa3VELFVBQUEsV0FHQSxTQUFBRCxXQUFBanVELEdBQUFrdUQsUUFBQXptRixPQXlCQSxPQXZCQWsrRCxRQUFBM2xDLElBQUFwM0IsUUFBQSxTQUFBbzNCLElBQ0EsSUFBQSt1RCxTQUFBUixVQUFBdnVELEdBQUFrdUQsU0FDQXBVLFVBQUFpVixTQUFBcm1GLE9BQ0E4bEYsTUFBQU8sU0FBQVAsTUFDQXowRSxLQUFBZzFFLFNBQUFoMUUsS0FDQXVwQyxNQUFBeXJDLFNBQUF6ckMsV0FBQSxJQUFBQSxRQUFBQSxNQUFBLFFBRUF3MkIsV0FBQTd1RSxZQUFBOE8sU0FFQXkwRSxjQUNBL21GLE1BQUFpQixPQUFBLElBQ0FqQixNQUFBaUIsT0FBQThsRixPQUFBMVUsV0FFQXJ5RSxNQUFBaUIsUUFBQTR0RCxHQUFBd2pCLFlBS0E3dUUsWUFBQThPLFFBQ0F0UyxNQUFBc1MsTUFBQUEsS0FBQXVwQyxVQUlBNzdDLE1Bb0JBLFNBQUFxbUYsWUFBQWtCLE1BQUFDLE1BQUE3aUYsUUFPQSxZQU5BLElBQUFBLFNBQUFBLFFBQUEsR0FHQTRpRixNQUFBcnBCLFFBQUFxcEIsT0FDQUMsTUFBQXRwQixRQUFBc3BCLE9BRUFELE1BQUF2akYsU0FBQXdqRixNQUFBeGpGLFFBQ0F1akYsTUFBQTlVLE1BQUEsU0FBQWw2QyxHQUFBejBCLEdBQUEsT0FBQWEsT0FBQTR6QixLQUFBaXZELE1BQUExakYsSUFBQTBqRixNQUFBLzJFLFFBQUE4bkIsTUFlQSxJQUFBa3ZELFlBRUFDLE9BRUFwN0MsS0FBQSxTQUFBbFYsS0FDQSxRQUNBdXdELFVBQUFDLFdBQUEsSUFBQXh3RCxPQUNBdXdELFVBQUFDLGVBSUE3cUMsUUFBQSxTQUFBME4sU0FDQSxPQUFBbzlCLFdBQUFwOUIsVUFHQW05QixVQUFBLFNBQUE3cUMsUUFBQTNsQixLQUNBLFFBQ0F1d0QsVUFBQUMsV0FBQSxJQUFBeHdELElBQUEybEIsV0FDQTRxQyxVQUFBQyxVQUFBLElBQUF4d0QsS0FBQSxFQUFBMmxCLGVBUUEsU0FBQThxQyxXQUFBdHZELElBQ0EsT0FBQWo2QixLQUFBMEssSUFBQXFpQyxJQUFBOVMsR0FBQSxhQUFBN21CLE1BQUEsS0FBQSxHQUFBNm1CLEdBQUE2Z0IsY0FBQSxFQUdBLFNBQUF3dUMsVUFBQXAvRSxNQUFBcUMsTUFJQSxZQUhBLElBQUFyQyxRQUFBQSxNQUFBLFFBQ0EsSUFBQXFDLE9BQUFBLEtBQUEsS0FFQSxjQUFBckMsT0FBQUEsTUFBQXFDLEtBQUEsSUFBQSxJQUdBLFNBQUFpOUUsUUFBQXQvRSxPQUNBLE1BQUEsV0FBQUEsTUFBQSxLQUFBQSxNQUFBLE9BR0EsSUFBQXUvRSxhQUFBenBCLFVBQUFtcEIsWUFFQU8sTUFFQTE3QyxLQUFBLFdBQ0EsUUFDQWdQLFFBQUEsSUFDQUEsUUFBQSxLQUlBeUIsUUFBQSxTQUFBME4sU0FDQSxPQUFBLEVBQUFwZixJQUFBb2YsUUFBQSxZQUdBbTlCLFVBQUEsU0FBQTdxQyxTQUNBLFFBQ0F6QixRQUFBLEVBQUF5QixVQUNBekIsUUFBQXlCLFlBTUFuUixPQUVBVSxLQUFBLFdBQ0EsUUFDQWdQLFFBQUEsRUFBQXFzQyxVQUFBRyxRQUFBLE1BQ0F4c0MsUUFBQSxFQUFBcXNDLFVBQUFHLFFBQUEsTUFJQS9xQyxRQUFBLFNBQUEwTixTQUNBLE9BQUEsRUFBQXBmLElBQUFvZixRQUFBLFlBR0FtOUIsVUFBQSxTQUFBN3FDLFNBQ0EsUUFDQXpCLFFBQUEsRUFBQXlCLFFBQUE0cUMsVUFBQUcsUUFBQSxFQUFBLEdBQUEvcUMsV0FDQXpCLFFBQUF5QixRQUFBNHFDLFVBQUFHLFFBQUEsR0FBQSxHQUFBL3FDLGVBNkZBLFNBQUFrckMsY0FBQTF2RCxHQUFBdjhCLEtBQUF3eUUsU0FDQXQ4QixRQUFBM1osR0FBQW9xQyxZQUFBM21FLE1BQUEsR0FBQSxFQUFBd3lFLFVBNlRBLElBa0dBMFosUUFFQXp2RCxPQUFBLEVBRUE2MEMsU0E5WkEvNkIsT0FDQXFsQyxTQUFBelosUUFDQWdxQixpQkFBQXJxQixPQUNBc3FCLGFBQUFqcUIsU0FHQS8rRCxNQUNBdzRFLFVBQUEsRUFDQXVRLGlCQUFBLElBQ0FDLGNBQUEsR0FHQXhiLFVBQUEsV0FDQTN0RSxLQUFBb3BGLGlCQUdBdmIsYUFBQSxXQUNBN3RFLEtBQUFxcEYsZ0JBR0E1NEMsU0FJQXZsQyxLQUFBLG1CQUVBb3VCLEdBQUFyK0IsU0FFQXcrQixRQUFBLFdBQ0F4K0IsU0FBQTZqRCxPQUNBOStDLEtBQUFxcEYsZUFFQXJwRixLQUFBb3BGLG1CQVFBbCtFLEtBQUF1Z0UsWUFDQWh5QyxRQUFBLGlCQU1BdnVCLEtBQUEsYUFFQWxKLE9BQUEsV0FDQSxPQUFBaEMsS0FBQTI0RSxVQUdBbC9DLFFBQUEsV0FDQXo1QixLQUFBc3BGLFlBQUEsS0FPQXArRSxLQUFBLGFBRUFsSixPQUFBLFdBQ0EsT0FBQWhDLEtBQUEyNEUsVUFHQWwvQyxRQUFBLFdBQ0F6NUIsS0FBQXNwRixZQUFBLEtBT0F0YixTQUVBb2IsY0FBQSxXQUNBLElBQUEvb0IsT0FBQXJnRSxLQUdBQSxLQUFBcXBGLGVBRUFycEYsS0FBQTI0RSxXQUNBMzRFLEtBQUFnL0MsU0FBQWpnRCxZQUNBLFdBQUEsUUFBQXNoRSxPQUFBaXBCLFlBQUFqcEIsT0FBQThvQixnQkFBQTlvQixPQUFBdjFELE1BQUEvRixRQUFBczdELE9BQUFoekIsS0FBQSxTQUNBcnRDLEtBQUFrcEYsb0JBTUFHLGFBQUEsV0FDQXJwRixLQUFBZy9DLFVBQ0EvL0MsY0FBQWUsS0FBQWcvQyxjQVVBNytDLE1BQ0FrdkIsVUFBQSxHQUNBazZELGNBQUEsR0FHQWg0RCxLQUFBLFdBQ0EsSUFBQTh1QyxPQUFBcmdFLE1BR0EsUUFBQSxPQUFBLE9BQUFrQyxRQUFBLFNBQUF3SSxLQUVBLElBQUE5RixHQUFBeTdELE9BQUEzMUQsS0FDQTIxRCxPQUFBMzFELEtBQUEsU0FBQWhMLEdBRUEsSUFBQWhCLElBQUF5eEUsU0FBQXp3RSxHQUFBdUMsR0FBQWdwRSxPQUFBLEVBQUEsR0FFQTVLLE9BQUE2TSxRQUFBeHVFLE1BQUEyaEUsT0FBQTNoRSxJQUFBMmhFLE9BQUEzaEUsSUFBQTJoRSxPQUFBNk0sUUFDQTdNLE9BQUEzaEUsSUFBQUEsSUFFQWtHLEdBQUFsRixPQU9BK3dDLFNBSUF2bEMsS0FBQXVnRSxZQUVBdGIsU0FBQSxXQUNBLE9BQUFud0QsS0FBQXdwRixnQkFHQS92RCxRQUFBLFNBQUEvNUIsR0F3S0EsSUFBQTQ1QixJQXRLQW8zQyxRQUFBaHhFLEtBc0tBNDVCLEdBdEtBNTVCLEVBQUFpekIsUUF1S0EyRyxHQUFBaUwsU0FBQXgvQixRQUFBdTBCLEdBQUFsQixXQUFBcnpCLFNBdEtBckYsRUFBQXlDLE9BQUEsR0FDQW5DLEtBQUErRSxPQUFBLEdBQ0EvRSxLQUFBdXBGLGNBS0F2cEYsS0FBQXhELE1BQUFrRCxNQU1Bd0wsS0FBQSxZQUVBdXVCLFFBQUEsU0FBQS81QixHQUNBQSxFQUFBMHlDLG9CQU1BNDdCLFNBRUF4eEUsTUFBQSxXQUVBd0QsS0FBQXlwRixLQUFBenBGLEtBQUF0QixJQUVBc0IsS0FBQTBwRixlQUVBMXBGLEtBQUE4OUMsUUFBQTk5QyxLQUFBMHBGLGNBQUE1ckMsVUFDQTk5QyxLQUFBeXBGLE1BQUF6cEYsS0FBQTBwRixjQUFBQyxjQUFBM3BGLEtBQUE4OUMsUUFBQTk5QyxLQUFBbTRCLElBRUFuNEIsS0FBQTBwRixjQUFBZixVQUFBM29GLEtBQUE4OUMsU0FDQTk5QyxLQUFBMHBGLGNBQUFqaUIsU0FFQXpuRSxLQUFBNHBGLFVBQUEsRUFFQTVwRixLQUFBOEssVUFHQTlLLEtBQUE2cEYsVUFBQTdwRixLQUFBbXFCLE1BR0FucUIsS0FBQThwRixXQUFBNzVDLEdBQUFoMUMsU0FBQXl3RSxZQUFBMXJFLEtBQUErcEYsTUFBQTVXLFNBQUEsRUFBQW1GLFNBQUEsSUFDQXJvQyxHQUFBOXpDLE9BQUEsU0FBQTZELEtBQUE4cEYsWUFDQTc1QyxHQUFBaDFDLFNBQUEwd0UsVUFBQTNyRSxLQUFBc3lCLEtBQUEsSUFJQXkzRCxLQUFBLFNBQUFycUYsR0FDQSxJQUFBMmdFLE9BQUFyZ0UsS0FHQWdxRixTQUFBaHFGLEtBQUF0QixJQUFBc0IsS0FBQXlwRixLQUVBLEtBQUEsSUFBQU8sVUFBQWhxRixLQUFBa3RFLFVBQUFsdEUsS0FBQXRCLE1BQUFzQixLQUFBNHBGLFVBQUF2cUYsS0FBQTBLLElBQUFpZ0YsVUFBQWhxRixLQUFBcXZCLFdBQUEsQ0FJQTN2QixFQUFBcTBDLFlBQUFyMEMsRUFBQTB5QyxpQkFFQXB5QyxLQUFBNHBGLFVBQUEsRUFDQTVwRixLQUFBbTRCLElBQUE2eEQsU0FBQSxFQUFBLEdBQUEsRUFVQSxJQVJBLElBQ0FDLE9BREFqcUYsS0FDQWlxRixPQUVBSixVQURBN3BGLEtBQ0E2cEYsVUFDQUssSUFBQTdxRixLQUFBMEssSUFBQWlnRixVQUNBRyxVQUFBbnFGLEtBQUFnbEUsU0FBQTZrQixVQUFBN3BGLEtBQUFtNEIsSUFBQTB4RCxXQUNBNVEsU0FBQWo1RSxLQUFBb3FGLGFBQUFQLFVBQUFNLFlBQUFGLE9BQUFKLFdBQUExdkMsWUFFQWd3QyxZQUFBTixXQUFBSyxJQUFBalIsVUFFQTVZLE9BQUFvcEIsTUFBQXhRLFNBQUE1WSxPQUFBbG9DLElBRUEweEQsVUFBQU0sVUFDQUQsS0FBQWpSLFNBQ0FrUixVQUFBOXBCLE9BQUEyRSxTQUFBNmtCLFVBQUF4cEIsT0FBQWxvQyxJQUFBMHhELFdBQ0E1USxTQUFBNVksT0FBQStwQixhQUFBUCxVQUFBTSxZQUFBRixPQUFBSixXQUFBMXZDLFlBSUFuNkMsS0FBQTg5QyxRQUFBb3NDLElBQUFqUixTQUVBLElBS0FvUixVQUxBNWxELEtBQUF3bEQsT0FBQUosV0FDQS92RSxLQUFBbXdFLE9BQUFFLFdBQ0E3UyxRQUFBdDNFLEtBQUFtcUIsUUFBQWdnRSxVQUNBRyxLQUFBVCxZQUFBTSxXQUlBbnFGLEtBQUFtcUIsTUFBQW5xQixLQUFBNnBGLFdBQUE3bkYsT0FBQSxTQUFBNkMsR0FBQSxPQUFBbTVELFVBQUFtc0IsVUFBQU4sV0FBQWhsRixLQUFBM0MsUUFBQSxTQUFBMkMsR0FDQW91QyxRQUFBZzNDLE9BQUFwbEYsR0FBQSxjQUFBdzdELFNBRUFpcUIsT0FDQUQsV0FBQSxFQUNBaHFCLE9BQUF3cEIsVUFBQUEsY0FLQTdwRixLQUFBbXFCLFFBQUEwL0QsV0FBQTdwRixLQUFBNnBGLFlBQUFBLFdBQUFRLFlBQ0FwM0MsUUFBQWczQyxPQUFBanFGLEtBQUFtcUIsT0FBQSxhQUFBbnFCLE9BR0FzM0UsVUFDQXQzRSxLQUFBNnBGLFVBQUFBLFVBQ0E3cEYsS0FBQW1xQixNQUFBZ2dFLFdBRUFHLE1BQUFyM0MsUUFBQXhPLEtBQUEsa0JBQUF6a0MsT0FDQWl6QyxRQUFBbjVCLEtBQUEsa0JBQUE5WixRQUdBQSxLQUFBMHBGLGNBQUExcEYsS0FBQXVxRixXQUFBbHJGLEtBQUEwSyxJQUFBL0osS0FBQTg5QyxTQUFBclosTUFBQTZsRCxNQUFBeHdFLE1BRUF3OUQsV0FDQWdULE1BQUFyM0MsUUFBQXhPLEtBQUEsWUFBQXprQyxPQUNBaXpDLFFBQUFuNUIsS0FBQSxZQUFBOVosVUFLQXN5QixJQUFBLFdBTUEsR0FKQWdlLElBQUFuMEMsT0FBQSxTQUFBNkQsS0FBQThwRixZQUNBOXBGLEtBQUE4cEYsYUFDQXg1QyxJQUFBcjFDLFNBQUEwd0UsVUFBQTNyRSxLQUFBc3lCLEtBQUEsR0FFQXR5QixLQUFBNHBGLFNBQUEsQ0FJQSxHQUZBNXBGLEtBQUE0cEYsU0FBQSxLQUVBNXBGLEtBQUFtcUIsUUFBQW5xQixLQUFBNnBGLFVBQ0E3cEYsS0FBQTg5QyxRQUFBLEVBQUE5OUMsS0FBQTg5QyxRQUNBOTlDLEtBQUFtNEIsTUFBQSxFQUNBbjRCLEtBQUF3cUYsT0FBQSxFQUFBeHFGLEtBQUFtcUIsT0FBQSxHQUNBbnFCLEtBQUEwcEYsY0FBQSxTQUNBLENBRUEsSUFBQWUsV0FBQXhmLE1BQUFqckUsS0FBQW00QixLQUFBOHlDLE1BQUEsR0FBQSxHQUFBanJFLEtBQUFtNEIsS0FBQSxHQUFBbjRCLEtBQUFrdEUsUUFBQWx0RSxLQUFBdEIsSUFDQXNCLEtBQUFtcUIsTUFBQXNnRSxVQUFBenFGLEtBQUFtcUIsTUFBQW5xQixLQUFBNnBGLFVBRUFZLFlBQ0F6cUYsS0FBQTg5QyxRQUFBLEVBQUE5OUMsS0FBQTg5QyxTQUdBOTlDLEtBQUFxdEMsS0FBQXJ0QyxLQUFBbTRCLElBQUEsSUFBQXN5RCxXQUFBenFGLEtBQUFtNEIsSUFBQSxHQUFBc3lELFVBQUEsT0FBQSxZQUFBLEdBR0EzbUIsZUFJQTlqRSxLQUFBeXBGLEtBQ0F6cEYsS0FBQTg5QyxRQUNBLFNBY0EzOUMsTUFDQXVxRixRQUFBLEdBR0E3eEMsVUFFQTh4QyxJQUFBLFNBQUEzbkIsSUFBQWlRLEtBR0EsT0FBQTV5RSxFQUZBMmlFLElBQUEwbkIsT0FFQXpYLE1BR0EyWCxnQkFBQSxTQUFBNW5CLEtBQ0EsSUFBQTRpQixTQUFBNWlCLElBQUE0aUIsU0FFQSxNQUFBLElBQUFBLFNBQUEsV0FBQUEsU0FBQSxLQUdBaUYsU0FBQSxTQUFBenpELEVBQUE2N0MsS0FDQSxPQUFBaEwsR0FBQWpvRSxLQUFBNHFGLGdCQUFBM1gsT0FLQWxGLFNBSUEzQixNQUFBLFdBQ0EsSUFBQS9MLE9BQUFyZ0UsS0FHQUEsS0FBQTJxRixLQUFBM3FGLEtBQUErRSxTQUFBL0UsS0FBQTJxRixJQUFBcG1ELFNBQUF4L0IsUUFDQWl5QyxLQUFBaDNDLEtBQUEycUYsSUFBQTNxRixLQUFBaXFGLE9BQUF2bEYsSUFBQSxTQUFBMHlCLEVBQUF2eUIsR0FBQSxNQUFBLE9BQUF3N0QsT0FBQSxTQUFBLEtBQUF4N0QsRUFBQSw0QkFBQStGLEtBQUEsS0FHQXM1QyxZQUFBK2pCLEdBQUFqb0UsS0FBQTRxRixnQkFBQTVxRixLQUFBaXpFLEtBQUEvaUQsT0FBQWx3QixLQUFBMnFGLEtBQUEsYUFBQTNxRixLQUFBOHFGLFVBRUE5cUYsS0FBQStxRixhQUlBdDZDLFFBQUEsT0FBQSxZQU1BQSxTQUlBdmxDLEtBQUEsUUFFQWlsRCxTQUFBLFdBQ0EsT0FBQW53RCxLQUFBNHFGLGlCQUdBbnhELFFBQUEsU0FBQS81QixHQUNBQSxFQUFBMHlDLGlCQUNBMXlDLEVBQUE4ckQsUUFBQXRZLE9BQ0FsekMsS0FBQXF0QyxLQUFBbHRDLEtBQUFULEVBQUE4ckQsUUFBQXhyRCxLQUFBNGxGLGNBT0ExNkUsS0FBQSxXQUNBdXVCLFFBQUEsY0FNQXUwQyxTQUVBK2MsVUFBQSxXQUNBLElBQUExcUIsT0FBQXJnRSxLQUdBNkUsRUFBQTdFLEtBQUFnckYsZ0JBQ0FockYsS0FBQTZxRixTQUFBM29GLFFBQUEsU0FBQW8zQixJQUVBLElBQUFxMUMsSUFBQXh1RSxLQUFBbTVCLEdBQUErbUMsT0FBQXVsQixVQUVBMWhDLFlBQUE1cUIsR0FBQSttQyxPQUFBd2tCLFVBQUFqbUIsU0FBQStQLE9BQUE5cEUsR0FDQXEvQyxZQUFBNXFCLEdBQUEsZUFBQSttQyxPQUFBNEUsU0FBQSxhQUFBMEosS0FBQSxJQUFBOXBFLEdBQUEsU0FBQThwRSxLQUFBOXBFLEdBQUF3N0QsT0FBQXlxQixpQkFlQXgzQyxPQUNBMjNDLGFBQUEvckIsUUFDQS9pQixPQUFBM2tCLE9BQ0FyTixNQUFBMDBDLE9BQ0FvRyxPQUFBL0YsUUFDQWdzQixTQUFBcnNCLFFBR0ExK0QsS0FBQSxXQUFBLE9BQ0FnOEMsT0FBQSxPQUNBOG9CLFFBQUEsRUFDQWltQixTQUFBLEVBQ0EvZ0UsTUFBQSxFQUNBcmYsU0FDQWd6QyxRQUFBLEVBQ0ErbUMsVUFBQSxZQUNBb0csY0FBQSxFQUNBRSxjQUFBLEVBQ0FDLHVCQUdBdnlDLFVBRUF4M0IsU0FBQSxTQUFBMmhELElBQUFpUSxLQUNBLElBQUFpWSxTQUFBbG9CLElBQUFrb0IsU0FFQSxPQUFBRyxRQUFBcFksSUFBQTk0QixZQUFBK3dDLFdBR0FubUYsT0FBQSxXQUNBLE9BQUEvRSxLQUFBaXFGLE9BQUFsbEYsUUFHQXl3QixLQUFBLFNBQUF3dEMsSUFBQWlRLEtBR0EsT0FBQTV5RSxFQUZBMmlFLElBQUFzb0IsUUFFQXJZLE1BR0E2WCxTQUFBLFdBQ0EsT0FBQTlxRixLQUFBK0UsT0FBQSxHQUdBeWtGLGVBQUEsU0FBQXhtQixLQUdBLE9BRkFBLElBQUFzb0IsUUFFQSxRQUdBckIsT0FBQSxXQUNBLE9BQUFockIsUUFBQWovRCxLQUFBdzFCLEtBQUErTyxZQUtBa00sUUFFQTg2QyxVQUFBLFdBQ0F2ckYsS0FBQXcxRSxRQUFBeDFFLEtBQUF3MUIsUUFLQXc0QyxTQUVBM2dDLEtBQUEsU0FBQXNtQyxTQUFBN04sT0FDQSxJQUFBekYsT0FBQXJnRSxLQUlBLFFBSEEsSUFBQThsRSxRQUFBQSxPQUFBLElBR0E5bEUsS0FBQTRwRixVQUFBNXBGLEtBQUErRSxPQUFBLENBSUEsSUFDQStGLE1BREE5SyxLQUNBOEssTUFDQTBnRixXQUFBMWxCLE1BQUEsRUFBQWg3RCxNQUFBL0YsT0FDQXU3QixNQUFBLFdBQ0F4MUIsTUFBQXluQixPQUFBaTVELFdBQUEsR0FFQTFnRixNQUFBL0YsUUFDQXM3RCxPQUFBaHpCLEtBQUF2aUMsTUFBQTRmLFNBQUEsSUFNQSxHQUZBNWYsTUFBQWc3RCxNQUFBLFVBQUEsUUFBQTZOLFdBRUE3TixPQUFBaDdELE1BQUEvRixPQUFBLEVBRUEsSUFBQStGLE1BQUEvRixRQUNBL0UsS0FBQTBwRixjQUFBMXJELFFBQUEzK0IsS0FBQXdLLElBQUE3SixLQUFBcWhCLFNBQUEsVUFIQSxDQVNBLElBQUF3b0UsVUFBQTdwRixLQUFBbXFCLE1BQ0FzYSxLQUFBNmYsU0FBQXRrRCxLQUFBaXFGLE9BQUFqcUYsS0FBQTZrRixZQUFBN2tGLEtBQUFpcUYsT0FBQUosV0FDQU0sVUFBQW5xRixLQUFBZ2xFLFNBQUEyTyxTQUFBM3pFLEtBQUFtcUIsT0FDQXJRLEtBQUE5WixLQUFBaXFGLE9BQUFFLFdBRUEsR0FBQTFsRCxPQUFBM3FCLEtBQUEsQ0FVQSxHQUxBOVosS0FBQW00QixJQTRHQSxTQUFBdzdDLFNBQUFrVyxXQUNBLE1BQUEsU0FBQWxXLFNBQ0EsRUFDQSxhQUFBQSxVQUNBLEVBQ0FBLFNBQUFrVyxXQUNBLEVBQ0EsRUFuSEE0QixDQUFBOVgsU0FBQWtXLFdBQ0E3cEYsS0FBQTZwRixVQUFBQSxVQUNBN3BGLEtBQUFtcUIsTUFBQWdnRSxVQUVBMWxELE1BQUF3TyxRQUFBeE8sS0FBQSxrQkFBQXprQyxRQUNBaXpDLFFBQUFuNUIsS0FBQSxrQkFBQTlaLEtBQUF5a0MsT0FHQSxPQUZBemtDLEtBQUFtcUIsTUFBQW5xQixLQUFBNnBGLGVBQ0F2cEQsUUFJQSxJQUFBMEYsUUFBQWhtQyxLQUFBd3FGLE1BQUEvbEQsS0FBQTNxQixLQUFBZ3NELE9BQUE3L0IsS0FBQSxXQUtBLE9BSEF4QixNQUFBd08sUUFBQXhPLEtBQUEsY0FBQTQ3QixTQUNBcHRCLFFBQUFuNUIsS0FBQSxhQUFBdW1ELFNBRUEsSUFBQTBELFVBQUEsU0FBQWwrQixTQUNBaW1DLFFBQUFNLE1BQUEsV0FDQXRoRSxNQUFBNGYsUUFDQTVmLE1BQUEvRixPQUNBczdELE9BQUFoekIsS0FBQXZpQyxNQUFBNGYsU0FBQSxHQUVBMjFDLE9BQUFxcEIsY0FBQSxLQUVBN2pELGdCQVNBLE9BSEFwQixNQUFBd08sUUFBQXhPLEtBQUEsWUFBQXprQyxPQUNBaXpDLFFBQUFuNUIsS0FBQSxZQUFBOVosT0FFQWdtQyxRQXJDQTFGLFdBeUNBMGtDLFNBQUEsU0FBQTJPLFNBQUFsdkMsTUFJQSxZQUhBLElBQUFrdkMsV0FBQUEsU0FBQTN6RSxLQUFBbXFCLFlBQ0EsSUFBQXNhLE9BQUFBLEtBQUF6a0MsS0FBQW1xQixPQUVBcTFDLE1BQUF3RixTQUFBMk8sU0FBQTN6RSxLQUFBaXFGLE9BQUF4bEQsS0FBQXprQyxLQUFBaWxFLFFBQUEsRUFBQWpsRSxLQUFBOHFGLFdBR0FFLGNBQUEsU0FBQXJYLFNBQUFrVyxXQUlBLFlBSEEsSUFBQWxXLFdBQUFBLFNBQUEzekUsS0FBQW1xQixZQUNBLElBQUEwL0QsWUFBQUEsVUFBQTdwRixLQUFBNnBGLFdBRUE3cEYsS0FBQWdsRSxTQUFBMk8sU0FBQWtXLFlBR0FXLE1BQUEsU0FBQS9sRCxLQUFBM3FCLEtBQUFnc0QsT0FlQSxHQWJBOWxFLEtBQUEwcEYsY0FBQTFwRixLQUFBMHJGLGlCQUNBam5ELEtBQ0EzcUIsS0FDQTlaLEtBQUFtNEIsSUFDQWtuQyxRQUNBbGpCLE9BQUEycEIsTUFDQWhzRCxLQUFBcWdDLFlBQUEsSUFDQSx1Q0FDQSxxQ0FDQW42QyxLQUFBbThDLFFBQ0FuOEMsS0FBQW9yRixxQkFHQXRsQixRQUFBcmhDLEtBRUEsT0FEQXprQyxLQUFBMHBGLGNBQUFmLFVBQUEsR0FDQTVrQixVQUFBbCtCLFVBR0EsSUFDQTlnQyxPQURBL0UsS0FBQThLLE1BQ0EvRixPQUNBLE9BQUEvRSxLQUFBMHBGLGNBQUEza0YsT0FBQSxFQUFBLFVBQUEsUUFBQUEsT0FBQSxFQUFBMUYsS0FBQXdLLElBQUE3SixLQUFBcWhCLFNBQUEsR0FBQSxJQUFBdGMsT0FBQSxJQUFBL0UsS0FBQXFoQixTQUFBcmhCLEtBQUE4OUMsVUFJQXNzQyxhQUFBLFNBQUEzbEQsS0FBQTNxQixNQUNBLE9BQUEsSUFBQTlaLEtBQUEwckYsaUJBQUFqbkQsS0FBQUEsT0FBQTNxQixNQUFBQSxNQUFBNnZFLGVBR0FZLFdBQUEsU0FBQXpzQyxRQUFBclosS0FBQTNxQixXQUNBLElBQUEycUIsT0FBQUEsS0FBQXprQyxLQUFBNnBGLGdCQUNBLElBQUEvdkUsT0FBQUEsS0FBQTlaLEtBQUFtcUIsT0FFQSxJQUFBd2hFLGFBQUEzckYsS0FBQTByRixpQkFBQWpuRCxPQUFBM3FCLE1BQUEycUIsS0FBQTNxQixNQUVBLE9BREE2eEUsYUFBQWhELFVBQUE3cUMsU0FDQTZ0QyxjQUdBRCxpQkFBQSxTQUFBam5ELEtBQUEzcUIsS0FBQXFlLElBQUEzRixTQU1BLFlBTEEsSUFBQWlTLE9BQUFBLEtBQUF6a0MsS0FBQTZwRixnQkFDQSxJQUFBL3ZFLE9BQUFBLEtBQUE5WixLQUFBbXFCLFlBQ0EsSUFBQWdPLE1BQUFBLElBQUFuNEIsS0FBQW00QixLQUFBLFFBQ0EsSUFBQTNGLFVBQUFBLFFBQUF4eUIsS0FBQW9yRixtQkFFQSxJQUFBcHJGLEtBQUFtckYsYUFDQTNtRixTQUFBaWdDLE1BQUF6a0MsS0FBQWlxRixPQUFBeGxELE1BQUFBLEtBQ0FqZ0MsU0FBQXNWLE1BQUE5WixLQUFBaXFGLE9BQUFud0UsTUFBQUEsS0FDQXFlLEtBQUE4eUMsT0FBQSxFQUFBLEdBQ0F6NEMsWUFrQkEsU0FBQTY0RCxRQUFBcHBGLEdBQ0EsTUFBQSxHQUFBQSxFQUFBLElBR0EsSUFBQTJwRixXQUVBdmQsUUFBQTRhLFFBRUEzMUMsT0FDQWlNLFVBQUEvbkIsUUFHQXIzQixNQUNBby9DLFVBQUEsUUFDQTByQyxhQUFBLHVCQUNBekMsV0FBQUEsV0FDQTJDLGFBM3VCQSxTQUFBMW1ELEtBQUEzcUIsS0FBQXFlLElBQUE2cUMsS0FDQSxJQUFBempCLFVBQUF5akIsSUFBQXpqQixVQUNBcEQsT0FBQTZtQixJQUFBN21CLE9BR0EyQixRQUFBeUIsVUFBQXpCLFFBQ0E2cUMsVUFBQXBwQyxVQUFBb3BDLFVBQ0F0N0MsS0FBQWtTLFVBQUFsUyxVQUFBLElBQUFBLE9BQUFBLEtBQUFuYSxNQUNBLElBQUFvZ0IsTUFBQWpHLEtBQUFsVixLQUNBa1AsU0FBQSxJQUFBSCxTQUVBLE9BRUEvTyxJQUFBQSxJQUVBa1YsS0FBQSxTQUFBaHNCLFNBQUF5OEIsUUFBQU0sUUFDQSxJQUFBaWlCLE9BQUFyZ0UsVUFDQSxJQUFBODlDLFVBQUFBLFFBQUEsR0FHQSxJQUFBc3BCLE9BQUFocEIsT0FBQSxTQUFBakMsT0FnQkEsT0FmQTk2QixVQUFBaGlCLEtBQUFnakIsTUFBQWhCLFNBQUFtK0MsTUFBQTFoQixTQUFBLEVBQUEsSUFFQTk5QyxLQUFBMm9GLFVBQUE3cUMsU0FFQWtyQyxjQUFBbHZFLEtBQUEsVUFBQWdrQyxRQUFBQSxRQUFBejhCLFNBQUFBLFNBQUErbEQsT0FBQUEsT0FBQWp2QyxJQUFBQSxNQUNBNndELGNBQUF2a0QsS0FBQSxXQUFBcVosUUFBQSxFQUFBQSxRQUFBejhCLFNBQUFBLFNBQUErbEQsT0FBQUEsT0FBQWp2QyxJQUFBQSxNQUVBNHJDLFVBQUF6NUIsS0FDQWs5QixXQUFBaHJFLE1BQUFzZCxLQUFBdzVCLE1BQUEsR0FBQWp5QixTQUFBK2xELFFBQ0FJLFdBQUFockUsTUFBQWlvQyxLQUFBNk8sTUFBQSxHQUFBanlCLFNBQUErbEQsVUFDQW5oQyxLQUFBLFdBQ0FvNkIsT0FBQS8vQixRQUNBK0csU0FBQXhCLFdBQ0EzUyxNQUVBbVUsU0FBQXJCLFNBR0FucUMsS0FBQSxXQUNBLE9BQUEyckUsV0FBQTNyRSxNQUFBaWUsS0FBQTJxQixRQUdBZ2pDLE9BQUEsV0FDQUQsV0FBQUMsUUFBQTN0RCxLQUFBMnFCLFFBR0FuRSxNQUFBLFdBQ0EsSUFBQSxJQUFBcDRCLFFBQUFvckMsTUFBQSxHQUNBbEgsS0FBQXR5QixLQUFBMnFCLE1BQUF2OEIsS0FBQSxLQUlBODFCLFFBQUEsU0FBQTNjLFNBQUF5OEIsU0FJQSxZQUhBLElBQUFBLFVBQUFBLFFBQUE5OUMsS0FBQTg5QyxXQUVBMHBCLFdBQUFDLFFBQUEzdEQsS0FBQTJxQixPQUNBemtDLEtBQUFxdEMsS0FBQWhzQixTQUFBeThCLFNBQUEsSUFJQTZxQyxVQUFBLFNBQUE3cUMsU0FFQTk5QyxLQUFBc2dDLFFBRUEsSUFBQWdULE1BQUFxMUMsVUFBQTdxQyxRQUFBM2xCLEtBQ0FpVSxJQUFBdHlCLEtBQUF3NUIsTUFBQSxJQUNBbEgsSUFBQTNILEtBQUE2TyxNQUFBLElBQ0EwMUMsY0FBQWx2RSxLQUFBLG1CQUFBZ2tDLFFBQUFBLFFBQUEzbEIsSUFBQUEsTUFDQTZ3RCxjQUFBdmtELEtBQUEsb0JBQUFxWixRQUFBLEVBQUFBLFFBQUEzbEIsSUFBQUEsT0FJQTJsQixRQUFBLFdBQ0EsT0FBQUEsUUFBQXJaLE1BQUEzcUIsS0FBQUEsS0FBQXFlLE1BR0F3eEQsWUFBQSxXQUNBLE9BQUFsbEQsS0FBQTBWLGdCQWdxQkF0QixVQUVBMEcsVUFBQSxTQUFBeWpCLEtBQ0EsSUFBQXpqQixVQUFBeWpCLElBQUF6akIsVUFDQXNzQyxjQUFBN29CLElBQUF3bEIsV0FFQSxPQUFBbnBCLE9BQUE5ZixhQUFBc3NDLGNBQUFBLGNBQUF0c0MsV0FBQXNzQyxjQUFBcEQsT0FBQXY5RSxLQUFBcTBDLGFBR0E2ckMsa0JBQUEsV0FDQSxPQUFBN3JDLFVBQUF2L0MsS0FBQXUvQyxhQUtBOU8sUUFFQXE3Qyx5Q0FBQSxTQUFBOW9CLEtBQ0EsSUFBQXJ3QyxPQUFBcXdDLElBQUFyd0MsT0FFQTN5QixLQUFBdzFFLFFBQUE3aUQsU0FHQW81RCxTQUFBLFdBQ0F2bkYsU0FBQXhFLEtBQUE2cEYsWUFBQS9kLFFBQUFTLFNBR0F5ZixlQUFBLFNBQUFocEIsS0FHQW5mLFNBRkFtZixJQUFBcndDLE9BRUEzeUIsS0FBQTZrRixZQUdBMEcsVUFBQSxTQUFBdm9CLEtBR0FuZixTQUZBbWYsSUFBQXJ3QyxPQUVBM3lCLEtBQUFpckYsZUFHQWdCLFdBQUEsU0FBQWpwQixLQUdBcmxFLFlBRkFxbEUsSUFBQXJ3QyxPQUVBM3lCLEtBQUE2a0YsVUFBQTdrRixLQUFBaXJGLGlCQU9BaUIsZUFFQTdkLFFBQUErUyxVQUFBQyxNQUFBdEwsVUFBQTZWLFdBRUFqWCxZQUFBLEVBRUFyaEMsT0FDQTY0QyxjQUFBdHRCLE9BQ0FnYSxRQUFBaGEsT0FDQXV0QixjQUFBbHRCLFFBQ0FtdEIsU0FBQTcwRCxRQUdBcjNCLEtBQUEsV0FBQSxPQUNBMDRFLFFBQUEsRUFDQXVULGVBQUEsRUFDQUQsY0FBQSxJQUNBNXZCLFNBQ0FxSixJQUFBLFVBQ0FrYyxRQUFBLG1CQUNBd0osUUFBQSxxQkFDQTFGLFNBQUEsbUJBQ0F6TixTQUFBLGtCQUNBZ1IsY0FBQSxFQUNBK0IsU0FBQSxFQUNBMUMsV0FBQU0sYUFDQXVELFNBQUEsc3VCQUdBNWUsUUFBQSxXQUNBLElBQUFwTixPQUFBcmdFLEtBR0FBLEtBQUFpMEUsT0FBQXY4QixPQUFBMTNDLEtBQUF1NUMsVUFBQXY1QyxLQUFBcXNGLFdBRUFyc0YsS0FBQXl1QyxRQUFBcHVDLEVBQUEsdUJBQUFMLEtBQUFpekUsS0FFQWp6RSxLQUFBdThELE1BQUFyNkQsUUFBQSxXQUFBLE9BQUF3MUMsT0FBQTJvQixPQUFBN3FDLEtBQUEsZ0JBSUFpYixTQUlBdmxDLEtBQUF3Z0UsWUFBQSxJQUFBRCxZQUFBLFdBRUFoeUMsUUFBQSxpQkFNQXZ1QixLQUFBLFFBRUErNEIsTUFBQSxFQUVBa3NCLFNBQUEsV0FDQSxPQUFBbndELEtBQUF3cEYsZ0JBR0EvdkQsUUFBQSxTQUFBLzVCLEdBQ0FBLEVBQUEweUMsaUJBQ0FweUMsS0FBQXN0QyxVQU9BcGlDLEtBQUEsUUFFQSs0QixNQUFBLEVBRUF4SyxRQUFBLGlCQUtBdnVCLEtBQUEsT0FFQSs0QixNQUFBLEVBRUF4SyxRQUFBLFdBRUF6NUIsS0FBQXNzRixlQUVBM3VGLFlBQUFxQyxLQUFBaXFGLE9BQUFqcUYsS0FBQTZrRixXQUNBcmQsV0FBQTNyRSxLQUFBbUUsS0FBQWlxRixXQU9BLytFLEtBQUEsUUFFQW91QixHQUFBcitCLFNBRUF3K0IsUUFBQSxTQUFBLzVCLEdBRUEsR0FBQU0sS0FBQTYyRSxVQUFBNzJFLEtBQUFpekUsS0FJQSxPQUFBdnpFLEVBQUFpMUMsU0FDQSxLQUFBLEdBQ0EzMEMsS0FBQXF0QyxLQUFBLFlBQ0EsTUFDQSxLQUFBLEdBQ0FydEMsS0FBQXF0QyxLQUFBLFlBUUFuaUMsS0FBQSxpQkFFQXV1QixRQUFBLFNBQUEvNUIsR0FFQU0sS0FBQTYyRSxjQUlBNzJFLEtBQUF1cEYsY0FBQSxFQUVBN3BGLEVBQUEweUMsaUJBRUFweUMsS0FBQWczRSxVQUFBaDNFLEtBQUFpekUsS0FBQSxHQUVBanpFLEtBQUF1L0MsVUFBQXVwQyxhQUFBLE1BQ0FuckYsWUFBQStCLEVBQUFpekIsT0FBQTN5QixLQUFBNmtGLFdBQ0E3a0YsS0FBQThLLE1BQUF5bkIsT0FBQSxFQUFBLEVBQUF2eUIsS0FBQW1xQixXQVFBamYsS0FBQSxXQUVBdXVCLFFBQUEsU0FBQXVwQyxLQUNBLElBSUFuK0QsRUFBQXNsQixNQUhBNjRDLElBQUFyd0MsUUFLQThiLFFBREF6dUMsS0FBQXVzRixRQUFBMW5GLEdBQ0E0cEMsUUFFQXJDLElBQUFwc0MsS0FBQXl1QyxRQUFBLFVBQUFBLFFBQUEsR0FBQSxRQUNBdUksS0FBQWgzQyxLQUFBeXVDLFFBQUFBLFNBRUEsSUFBQSxJQUFBNTBCLEVBQUEsRUFBQUEsR0FBQTdaLEtBQUE2NEUsUUFBQWgvRCxJQVhBN1osS0FZQXdzRixTQVpBeHNGLEtBWUFnbEUsU0FBQW5nRSxFQUFBZ1YsSUFaQTdaLEtBYUF3c0YsU0FiQXhzRixLQWFBZ2xFLFNBQUFuZ0UsRUFBQWdWLE9BU0EzTyxLQUFBLFlBRUF1dUIsUUFBQSxXQUNBejVCLEtBQUF1cEYsY0FBQSxLQU9BcitFLEtBQUEsV0FFQXV1QixRQUFBLFNBQUFyQyxFQUFBdTFDLE1BQ0EsSUFhQWlULFdBYkF2ZixPQUFBcmdFLEtBR0FvckIsT0FBQXVoRCxLQUFBdmhELE9BQ0FydUIsS0FBQTR2RSxLQUFBNXZFLEtBQ0EwdkYsSUFBQTlmLEtBQUE4ZixJQUlBLEdBRkF6c0YsS0FBQTBzRixRQUFBL2YsS0FBQSw0QkFFQXZoRCxPQU9BLEdBQUEsVUFBQXJ1QixNQUFBcXVCLE9BQUF0cEIsTUFBQSxrQ0FFQTRpRSxTQUFBdDVDLFFBQUE2YSxLQUNBLFNBQUFtOEIsS0FBQSxPQUFBL0IsT0FBQXFzQixRQUFBL2YsS0FBQSxlQUFBdkssSUFBQSxNQUFBLGFBQUFBLElBQUEsT0FBQSxVQUFBaDNDLE9BQUEsV0FBQXFoRSxLQUFBLElBQUEsT0FDQSxXQUFBLE9BQUFwc0IsT0FBQXNzQixTQUFBaGdCLGFBSUEsR0FBQSxVQUFBNXZFLE1BQUFxdUIsT0FBQXRwQixNQUFBLDJCQUFBLENBRUEsSUFBQThxRixNQUFBdnNGLEVBQUEsK0JBQUFzc0UsS0FBQWtnQixPQUFBLFlBQUFsZ0IsS0FBQSxPQUFBLElBQUEsSUFBQSxjQUFBM3NFLEtBQUEsY0FBQSxjQUNBcThCLEtBQUF1d0QsTUFBQSxNQUFBeGhFLFFBRUE2a0IsR0FBQTI4QyxNQUFBLFFBQUEsV0FBQSxPQUFBdnNCLE9BQUFzc0IsU0FBQWhnQixRQUNBMThCLEdBQUEyOEMsTUFBQSxpQkFBQSxXQUNBdndELEtBQUF1d0QsT0FBQTl6QyxNQUFBOHpDLE1BQUFFLFdBQUF6dEMsT0FBQXV0QyxNQUFBRyxjQUNBMXNCLE9BQUFxc0IsUUFBQS9mLEtBQUFpZ0IsY0FJQSxHQUFBLFdBQUE3dkYsTUFBQXF1QixPQUFBdHBCLE1BQUEsdUJBRUE5QixLQUFBMHNGLFFBQUEvZixLQUFBLDJDQUFBdmhELE9BQUEsb0RBR0EsR0FBQXcwRCxXQUFBeDBELE9BQUF0cEIsTUFBQSwyREFBQXNwQixPQUFBdHBCLE1BQUEscUJBQUEsQ0FFQSxJQUFBWixHQUFBMCtFLFdBQUEsR0FDQW9OLFVBQUEsU0FBQS9ULFNBQUFELFdBSUEsWUFIQSxJQUFBQyxXQUFBQSxTQUFBLFVBQ0EsSUFBQUQsWUFBQUEsVUFBQSxLQUVBM1ksT0FBQXFzQixRQUFBL2YsS0FBQXNnQixVQUFBLHVCQUFBck4sV0FBQSxJQUFBLElBQUEsY0FBQTErRSxHQUFBKzNFLFNBQUFELFVBQUEzWSxPQUFBK3JCLGlCQUdBMW5CLFNBQUEsOEJBQUF4akUsR0FBQSxzQkFBQStrQyxLQUNBLFNBQUErOEIsS0FDQSxJQUFBaVcsU0FBQWpXLElBQUFscUIsTUFDQWtnQyxVQUFBaFcsSUFBQTNqQixPQUdBLE1BQUE0NUIsVUFBQSxLQUFBRCxVQUNBdFUsU0FBQSw4QkFBQXhqRSxHQUFBLFVBQUEra0MsS0FDQSxTQUFBKzhCLEtBQ0EsSUFBQWlXLFNBQUFqVyxJQUFBbHFCLE1BQ0FrZ0MsVUFBQWhXLElBQUEzakIsT0FFQSxPQUFBMnRDLFVBQUEvVCxTQUFBRCxZQUVBZ1UsV0FHQUEsVUFBQS9ULFNBQUFELFlBR0FnVSxnQkFJQXBOLFdBQUF4MEQsT0FBQXRwQixNQUFBLHlDQUVBeEIsS0FBQSx1REFBQTRzRixVQUFBOWhFLFNBQUFnaUMsYUFBQSxPQUFBKy9CLGlCQUFBLElBQ0FsbkQsS0FDQSxTQUFBKzhCLEtBQ0EsSUFBQW9xQixhQUFBcHFCLElBQUEvWCxTQUNBK3RCLFVBQUFvVSxhQUFBL3RDLE9BQ0E0NUIsU0FBQW1VLGFBQUF0MEMsTUFFQSxPQUFBdW5CLE9BQUFxc0IsUUFBQS9mLEtBQUFzZ0IsVUFBQSxrQ0FBQXJOLFdBQUEsR0FBQTNHLFNBQUFELFVBQUEzWSxPQUFBK3JCLGlCQUVBLFdBQUEsT0FBQS9yQixPQUFBc3NCLFNBQUFoZ0IsV0FXQXFCLFNBRUF3ZSxTQUFBLFNBQUE3WSxlQUNBLElBQUFBLFdBQUFBLFNBQUEzekUsS0FBQW1xQixPQUdBLElBQUF3aUQsS0FBQTNzRSxLQUFBdXNGLFFBQUE1WSxVQUVBaEgsS0FBQXRuQyxTQUlBNE4sUUFBQWp6QyxLQUFBaXpFLElBQUEsWUFBQXRHLFFBR0E0ZixRQUFBLFNBQUE1WSxVQUdBLFlBRkEsSUFBQUEsV0FBQUEsU0FBQTN6RSxLQUFBbXFCLE9BRUFucUIsS0FBQXU4RCxNQUFBb1gsZUFHQStZLFFBQUEsU0FBQS9mLEtBQUF0bkMsU0FDQWc2QixPQUFBc04sTUFBQXRuQyxRQUFBQSxVQUNBLElBQUEvTCxHQUFBMGQsS0FBQWgzQyxLQUFBaXFGLE9BQUFqcUYsS0FBQXU4RCxNQUFBL3FELFFBQUFtN0QsT0FBQXRuQyxTQUNBNE4sUUFBQWp6QyxLQUFBaXpFLElBQUEsY0FBQWp6RSxLQUFBczVCLEtBQ0F0NUIsS0FBQXcxRSxRQUFBbDhDLEtBR0FxekQsU0FBQSxTQUFBaGdCLE1BQ0Ezc0UsS0FBQTBzRixRQUFBL2YsS0FBQSxpREFHQTBnQixhQUFBLFdBRUE1cUMsYUFBQXppRCxLQUFBc3RGLGVBQ0F0dEYsS0FBQXN0RixjQUFBemtELFdBQUE3b0MsS0FBQXNzRixhQUFBdHNGLEtBQUFtc0YsZUFFQXRvQyxTQUFBN2pELEtBQUFpekUsSUFBQSxZQUFBLHlCQUlBcVosYUFBQSxXQUNBM3VGLFlBQUFxQyxLQUFBaXpFLElBQUEsWUFBQSwyQkFPQSxTQUFBZ2EsVUFBQWp3RixJQUFBaThFLFNBQUFELFVBQUFMLFVBQ0EsTUFBQSxnQkFBQTM3RSxJQUFBLFlBQUFpOEUsU0FBQSxhQUFBRCxVQUFBLDBHQUFBTCxTQUFBLDRCQUdBLElBK0hBMXZFLElBL0hBcXFDLE1BQUF2aEIsTUFBQW02RCxjQUFBLFNBQ0E5eEUsU0FBQTJYLE1BQUFtNkQsY0FBQSxRQUVBcUIsVUFFQXhZLFFBb0hBLFNBQUF4MkUsT0FDQUEsTUFBQWl2RixlQUNBanZGLE1BQUEreUUsVUFBQSxnQkFBQTRhLGdCQXBIQTF5RCxPQUFBLEVBRUE4WixNQUFBK3JCLFFBQUE5eEIsT0FBQS9WLFFBQUE4YixPQUVBbnpDLEtBQUFrL0QsUUFBQTl4QixPQUFBLEtBQUFycEMsT0FBQTZHLEtBQUF1b0MsT0FBQWl3QixPQUFBLFNBQUFnTSxRQUFBN2tFLEtBRUEsT0FEQTZrRSxRQUFBN2tFLEtBQUEwUCxTQUFBMVAsS0FDQTZrRSxjQUdBMTJCLFVBRUE2ckMsUUFBQSxTQUFBMWhCLElBQUFpUSxLQUdBLE9BQUFoTCxHQUZBakYsSUFBQXoxQixPQUVBMGxDLE9BS0FwRixhQUFBLFdBQ0E3dEUsS0FBQXl0RixZQUdBaDlDLFNBSUF2bEMsS0FBQSxRQUVBaWxELFNBQUEsV0FDQSxPQUFBbndELEtBQUEsT0FBQSxzQkFHQXk1QixRQUFBLFNBQUEvNUIsR0FDQUEsRUFBQTB5QyxpQkFDQTF5QyxFQUFBOHJELFFBQUF0WSxPQUNBbHpDLEtBQUFxdEMsS0FBQWxqQixNQUFBbnFCLEtBQUEwa0YsUUFBQWhsRixFQUFBOHJELGFBT0F1aUIsT0FBQSxTQUFBd0IsU0E0REEsSUFBQStZLE1BQUFDLE9BMURBaFosUUFBQW1WLFFBQUFuVixRQUFBbVYsU0FBQTFrRixLQUFBMGtGLFFBRUExa0YsS0FBQTBoRixPQUFBMWhGLEtBQUF1L0MsWUFDQXYvQyxLQUFBMGhGLE1BQUExTyxPQUFBenpCLFVBQUF2L0MsS0FBQXUvQyxVQUNBdi9DLEtBQUEwaEYsTUFBQXJNLFNBR0FyMUUsS0FBQTBoRixRQW1EQTRHLE1BbkRBL1ksUUFBQW1WLFFBbURBNkQsTUFuREF2b0YsS0FBQTBrRixRQW9EQTRELE1BQUF2akYsU0FBQXdqRixNQUFBeGpGLFNBQ0F1akYsTUFBQTlVLE1BQUEsU0FBQWw2QyxHQUFBejBCLEdBQUEsT0FBQXkwQixLQUFBaXZELE1BQUExakYsU0FqREEwcUUsUUFBQW1WLFFBQUExa0YsS0FBQTBrRixRQUNBMWtGLEtBQUF5dEYsV0FDQXp0RixLQUFBNHdFLFVBSUE1QyxTQUVBNEMsTUFBQSxXQUNBLE9BQUE1d0UsS0FBQTBoRixNQUFBMWhGLEtBQUEwaEYsT0FBQTFoRixLQUFBdTFFLFFBQUEsZ0JBQUFsVyxVQUFBci9ELEtBQUFnekUsUUFDQXpXLE1BQUF2OEQsS0FBQTBrRixRQUFBbmhCLE9BQUEsU0FBQWhILE1BQUFqakMsSUFLQSxPQUpBaWpDLE1BQUF2M0QsTUFBQSxPQUFBLFVBQUEsT0FBQSxTQUFBLE9BQUF1K0QsT0FBQSxTQUFBdDZELElBQUF1K0UsU0FFQSxPQURBditFLElBQUEsU0FBQXUrRSxRQUFBLFNBQUFBLFNBQUFybkYsS0FBQW01QixHQUFBa3VELFNBQ0F2K0UsVUFFQXN6RCxlQUtBa3hCLFNBQUEsV0FDQXp0RixLQUFBMGhGLFFBQ0ExaEYsS0FBQTBoRixNQUFBNU0sVUFBQSxHQUNBOTBFLEtBQUEwaEYsTUFBQSxPQUlBcjBDLEtBQUEsU0FBQXNtQyxVQU1BLE9BSkEzekUsS0FBQTBoRixPQUNBMWhGLEtBQUE0d0UsUUFHQTV3RSxLQUFBMGhGLE1BQUFyMEMsS0FBQXNtQyxXQUlBcm1DLEtBQUEsV0FFQSxPQUFBdHRDLEtBQUEwaEYsT0FBQTFoRixLQUFBMGhGLE1BQUFwMEMsVUFhQSxTQUFBdmIsTUFBQVMsUUFBQXRxQixNQUNBLE9BQUFtM0QsT0FBQXg3RCxXQUNBLE9BQUFxc0IsT0FBQXNDLFFBQUE2N0MsT0FBQTc3QyxRQUFBNjdDLE9BQUEzcEUsSUFBQSxTQUFBMnNFLE9BQUEsT0FBQXQvQyxNQUFBcy9DLE1BQUFucEUsWUFDQWlELFdBQUFxbkIsUUFBQXRxQixPQUFBc3FCLFFBQUF0cUIsUUFBQXNxQixRQUFBdHFCLFNBV0EsSUFBQXdsRixjQUVBQyxjQUVBaFosWUFBQSxFQUVBbHFFLE1BQUEsVUFBQSxVQUVBdEssTUFDQTFCLFFBQUEsR0FDQTJyRCxPQUFBLEdBQ0F6ckQsUUFBQSxJQUNBbXBGLE1BQUEsS0FDQXBwRixJQUFBLGFBQ0FrdkYsU0FBQSx3QkFDQUMsT0FBQSwyQkFHQTlZLFFBdUZBLFNBQUF4MkUsT0FDQUEsTUFBQUMsYUFBQXN2RixTQUFBLFNBQUFoRyxNQUFBaUcsV0FDQWxxRixNQUFBNUksU0FBQWt5QyxLQUFBLFNBQUE3VCxJQUNBLElBQUE5NkIsYUFBQUQsTUFBQXMyRSxhQUFBdjdDLEdBQUEsaUJBQ0E5NkIsY0FBQXNwRixPQUFBQSxRQUFBdHBGLGFBQUFzcEYsT0FDQXRwRixhQUFBMDVFLE1BQUE2VixlQTFGQXRnQixRQUFBLFdBRUFpZ0IsV0FBQTF0RixLQUFBdEIsT0FDQWd2RixXQUFBMXRGLEtBQUF0QixLQUFBZzVDLE9BQUExM0MsS0FBQTIxRSxXQUFBLCtDQUFBMzFFLEtBQUEsSUFBQSxhQUdBLElBQUF1NUMsVUFBQW5OLElBQUFzaEQsV0FBQTF0RixLQUFBdEIsS0FBQSxVQUFBLFNBRUFzQixLQUFBaTBFLE9BQUF2OEIsT0FBQTZCLFVBQ0EsZUFBQXY1QyxLQUFBLFFBQUFBLEtBQUFvcUQsT0FBQSxJQUFBcHFELEtBQUEsT0FBQSxJQUFBQSxLQUFBLE9BQUEsSUFBQSx5QkFBQUEsS0FBQSxTQUFBLDZCQUFBQSxLQUFBLFFBQUEsbUJBS0Fva0MsTUFBQSxXQUNBLElBQUFpOEIsT0FBQXJnRSxLQUdBcTJFLGFBQUF2WCxRQUFBMXlCLElBQUFwc0MsS0FBQWl6RSxJQUFBLGlCQUNBekwsV0FBQWhyRSxNQUNBNHZDLElBQUFwc0MsS0FBQWl6RSxLQUFBNTJCLFFBQUEsRUFBQSs1QixXQUFBcDJFLEtBQUFpekUsSUFBQTdtQixhQUFBaXFCLGFBQUEsS0FDQWg2QixRQUFBLEVBQUErNUIsVUFBQSxFQUFBQyxhQUFBQSxlQUNBcHdDLEtBQUEsV0FDQW82QixPQUFBMWhFLFVBQ0EwaEUsT0FBQTdmLE1BQUEzWCxXQUFBdzNCLE9BQUE2WCxNQUFBN1gsT0FBQTFoRSxhQU1BOHhDLFFBQUF4bkMsS0FFQWtxQyxNQUFBLFNBQUF6ekMsR0FDQWtsQyxRQUFBbGxDLEVBQUFpekIsT0FBQSxnQkFDQWp6QixFQUFBMHlDLGlCQUVBcHlDLEtBQUFrNEUsVUFHQWp2RSxJQUFBMmlFLGNBQUEsV0FDQTVyRSxLQUFBd2dELE9BQ0FpQyxhQUFBemlELEtBQUF3Z0QsUUFFQXYzQyxJQUFBNGlFLGNBQUEsV0FDQTdyRSxLQUFBckIsVUFDQXFCLEtBQUF3Z0QsTUFBQTNYLFdBQUE3b0MsS0FBQWs0RSxNQUFBbDRFLEtBQUFyQixXQUVBc0ssS0FFQStrRSxTQUVBa0ssTUFBQSxTQUFBNlYsV0FDQSxJQUFBMXRCLE9BQUFyZ0UsS0FHQWd1RixTQUFBLFdBRUEvNkMsUUFBQW90QixPQUFBNFMsSUFBQSxTQUFBNVMsU0FDQXA5RCxPQUFBbzlELE9BQUE0UyxLQUVBeWEsV0FBQXJ0QixPQUFBM2hFLEtBQUE2bEMsU0FBQXgvQixRQUNBcW5DLElBQUFzaEQsV0FBQXJ0QixPQUFBM2hFLEtBQUEsVUFBQSxTQUtBc0IsS0FBQXdnRCxPQUNBaUMsYUFBQXppRCxLQUFBd2dELE9BR0F1dEMsVUFDQUMsV0FFQXhtQixXQUFBaHJFLE1BQUF3RCxLQUFBaXpFLEtBQ0E1MkIsUUFBQSxFQUNBKzVCLFdBQUFwMkUsS0FBQWl6RSxJQUFBN21CLGFBQ0FpcUIsYUFBQSxJQUNBcHdDLEtBQUErbkQsYUFtQkEsSUFBQUMsU0FBQSxJQUFBLElBQUEsTUFBQSxNQUFBLFNBQUEsUUFBQSxRQUFBLGtCQUFBLGNBQUEsVUFBQSxPQUFBLE1BQUEsWUFBQSxTQUFBLFdBQUEsUUFBQSxZQUVBQyxVQUVBNTZDLE1BQUEyNkMsUUFBQTFxQixPQUFBLFNBQUFqd0IsTUFBQXByQyxNQUVBLE9BREFvckMsTUFBQXByQyxNQUFBLE9BQ0FvckMsUUFFQXl0QyxNQUFBLFVBR0E1Z0YsS0FBQTh0RixRQUFBMXFCLE9BQUEsU0FBQWdNLFFBQUFybkUsTUFFQSxPQURBcW5FLFFBQUFybkUsV0FBQWhMLEVBQ0FxeUUsVUFFQXdSLE9BQUEsSUFHQWxvQyxVQUVBdkYsTUFBQSxTQUFBb00sV0FBQXV6QixLQUNBLElBQUE1UyxPQUFBcmdFLEtBR0EsT0FBQWl1RixRQUFBMXFCLE9BQUEsU0FBQWp3QixNQUFBcHJDLE1BRUEsR0FBQTNELFlBQUFtN0MsV0FBQXgzQyxPQUNBLE9BQUFvckMsTUFHQSxJQUdBNTBDLElBQUF5dkYsTUFBQWxyRSxLQUhBbXJFLFFBQUFsbUYsS0FBQXBHLE1BQUEsVUFDQXVzRixVQUFBRCxTQUFBLFlBQUFsbUYsS0FHQW9tRixNQUFBNXVDLFdBQUF4M0MsTUFBQXlDLE1BQUEsR0FFQTBqRixXQUNBamlELElBQUE2bUMsSUFBQS9xRSxLQUFBLElBR0FvbUYsTUFBQXZwRixPQUFBLEdBQ0F1cEYsTUFBQXB5RCxTQUFBLFVBQUFoMEIsS0FDQSxFQUNBbW1GLFVBQ0FqaUQsSUFBQTZtQyxJQUFBL3FFLE1BQ0EsSUFBQSxHQUdBLElBQUEwRCxLQUFBb3lELFNBQUFzd0IsTUFBQTFqRixLQUFBLElBQUEsS0FBQSxJQUFBLEtBRUEsR0FBQXdqRixRQUFBLENBRUEsSUFDQXpPLE1BREExTSxJQUFBL21DLE1BQ0F5ekMsTUFDQTJPLE1BQUFBLE1BQUE1cEYsSUFBQSxTQUFBczVDLE1BQUEsT0FtUUE1UixJQUFBQSxJQW5RQTZtQyxJQW1RQSxRQW5RQWoxQixNQW1RQSxTQUFBdnJDLE1BQUEsVUFBQTlILE1BQUEsR0FBQSxHQUFBdWxCLE9BQUEsR0FBQXZsQixNQUFBLEVBQUEsR0FBQWpHLElBQUEsU0FBQWsvQixHQUFBLE9BQUFrN0IsUUFBQWw3QixPQWxRQXF2QyxJQUFBL21DLE1BQUF5ekMsTUFBQUEsV0FJQTJPLE1BQUFBLE1BQUE1cEYsSUFBQW82RCxTQUlBLEdBQUE1MkQsS0FBQXBHLE1BQUEsT0FLQSxHQUhBc3FDLElBQUE2bUMsSUFBQSx1QkFBQS9xRSxLQUFBLEdBQUEsSUFDQWltRixNQUFBL2hELElBQUE2bUMsSUFBQSxzQkFBQXhnRSxNQUFBLEtBQUEsTUFBQXZLLEtBQUEsR0FBQSxFQUFBLEdBRUFtNEQsT0FBQWt1QixPQUFBLENBRUEsSUFBQTFrRixJQUFBeEssS0FBQXdLLElBQUFoRyxNQUFBeEUsS0FBQWl2RixPQUNBdmhGLElBQUExTixLQUFBME4sSUFBQWxKLE1BQUF4RSxLQUFBaXZGLE9BQ0FFLEtBQUFGLE1BQUE5OEUsUUFBQTNILEtBQUF5a0YsTUFBQTk4RSxRQUFBekUsS0FFQWtXLEtBQUFsVyxJQUFBbEQsSUFFQXlrRixNQUFBQSxNQUFBNXBGLElBQUEsU0FBQXM1QyxNQUFBLE9BQUFBLE1BQUF3d0MsS0FBQTNrRixJQUFBa0QsT0FDQXJPLEtBQUE4dkYsTUFBQXZyRSxLQUFBLEdBQUEsVUFJQXZrQixJQUFBeXZGLE1BT0EsT0FGQTc2QyxNQUFBcHJDLE9BQUFvbUYsTUFBQUEsTUFBQTFpRixLQUFBQSxLQUFBbE4sSUFBQUEsSUFBQXl2RixNQUFBQSxNQUFBbHJFLEtBQUFBLE1BRUFxd0IsWUFNQW03QyxRQUFBLFdBQ0EsSUFBQXB1QixPQUFBcmdFLEtBRUEsT0FBQSxNQUFBLE9BQUFnQyxPQUFBLFNBQUEwc0YsSUFBQSxPQUFBQSxNQUFBcnVCLE9BQUEvc0IsU0FHQWk3QyxPQUFBLFNBQUFuM0QsRUFBQTY3QyxLQUNBLE9BNE9BLFNBQUEzNUMsSUFDQSxJQUNBcTFELGVBREFyMUQsR0FBQTRTLE1BQ0F5aUQsZUFDQUosT0FBQSxVQUFBbmlELElBQUFBLElBQUE5UyxHQUFBLGlCQUFBLElBQUEsa0JBRUEsT0FEQUEsR0FBQTRTLE1BQUF5aUQsZUFBQUEsZUFDQUosT0FqUEFBLENBQUF0YixPQUtBcEYsYUFBQSxrQkFDQTd0RSxLQUFBNHVGLFFBR0E3Z0IsU0FJQTlCLEtBQUEsU0FBQXNELFNBQ0EsSUFBQWxQLE9BQUFyZ0UsS0FZQSxHQVRBdXZFLFFBQUExbkIsUUFBQTduRCxLQUFBK2dGLE9BQUE1a0YsT0FBQTJqRixXQUFBOS9FLEtBQUErZ0YsT0FBQWwrRCxRQUVBMHNELFFBQUFudkMsUUFDQW12QyxRQUFBbnZDLE1BQUF5dUQsT0FDQS8xQyxNQUFBOTRDLEtBQUFpekUsSUFBQTk0QixZQUNBa0YsT0FBQXIvQyxLQUFBaXpFLElBQUE3bUIsaUJBSUEsVUFBQW1qQixVQUFBdnZFLEtBQUF1dUYsUUFBQXZ1RixLQUFBeXVGLFFBQUExcEYsT0FBQSxDQUlBLElBQUEvSCxJQUFBb3ZDLElBQUFwc0MsS0FBQWl6RSxJQUFBLG1CQUFBbDFFLFFBQUEsZ0NBQUEsTUFFQWYsTUFJQXV5RSxRQUFBbnZDLE9BQUEsRUFFQXNrQyxTQUFBMW5FLEtBQUFpcEMsS0FBQSxTQUFBbThCLEtBQ0FtTixRQUFBbnZDLE9BQ0EwWSxNQUFBc3BCLElBQUEwc0IsYUFDQXp2QyxPQUFBK2lCLElBQUEyc0IsZUFHQTF1QixPQUFBZ1YsYUFLQWpKLE1BQUEsU0FBQXBKLEtBQ0EsSUFBQTNDLE9BQUFyZ0UsS0FDQW9nQyxNQUFBNGlDLElBQUE1aUMsTUFDQXluQixPQUFBbWIsSUFBQW5iLE9BR0EsR0FBQXpuQixNQUlBLEdBQUF5bkIsT0FBQSxDQUtBLElBQUFnbkMsTUFBQXp1RCxNQUFBeXVELE1BRUFqbUIsSUFBQTdJLFdBQUFPLE1BQUFsZ0MsTUFBQXl1RCxPQUVBN3VGLEtBQUF5dUYsUUFBQXZzRixRQUFBLFNBQUFnRyxNQUVBLElBQUE4NkQsSUFBQTNDLE9BQUEvc0IsTUFBQXByQyxNQUNBK2EsS0FBQSsvQyxJQUFBLy9DLEtBQ0FrckUsTUFBQW5yQixJQUFBbXJCLE1BQ0FHLE1BQUF0ckIsSUFBQXNyQixNQUNBOUcsUUFBQSxRQUFBdC9FLEtBQUEsU0FBQSxRQUNBOG1GLEtBQUFwbUIsSUFBQTRlLFNBQUFxSCxNQUFBckgsU0FFQSxHQUFBMkcsTUFBQXJzRixNQUFBLFVBQUEsQ0FJQSxHQUFBa3RGLEtBQUEvckUsS0FDQTRyRSxNQUFBckgsU0FBQTVlLElBQUE0ZSxTQUFBdmtFLEtBQUErckUsVUFDQSxHQUFBQSxLQUFBL3JFLEtBQUEsQ0FFQSxJQUFBZ3NFLFdBQUFydEUsV0FBQXVzRSxPQUVBYyxhQUNBNXVCLE9BQUEvc0IsTUFBQXByQyxNQUFBb21GLE1BQUFBLE1BQUE1cEYsSUFBQSxTQUFBczVDLE1BQUEsT0FBQUEsTUFBQWd4QyxLQUFBL3JFLE9BQUEsSUFBQWdzRSxlQUlBcm1CLElBQUE3SSxXQUFBTyxNQUFBbGdDLE1BQUF5dUQsVUFHQXppRCxJQUFBcHNDLEtBQUFpekUsS0FDQTBiLGVBQUEvbEIsSUFBQSxNQUFBLE1BQUFBLElBQUEsT0FBQSxLQUNBc21CLGlCQUFBLG1CQXJDQTlpRCxJQUFBcHNDLEtBQUFpekUsS0FBQTBiLGVBQUEsR0FBQU8saUJBQUEsTUEwQ0F6K0MsUUFBQSxPQUFBLFlBTUF1OUIsU0FFQTF0QyxNQUFBLFdBQ0EsSUFBQSsvQixPQUFBcmdFLEtBRUFpeUIsS0FBQWp5QixLQUFBbXZGLE9BQUEsR0FBQSxTQUFBLzNELEVBQUFsdkIsTUFBQSxPQUFBa2tDLElBQUFpMEIsT0FBQTRTLElBQUEvcUUsS0FBQSxPQUdBaW5GLE9BQUEsU0FBQXJ4QyxTQUVBLElBQ0F4SyxNQURBdHpDLEtBQ0FzekMsTUFDQXMxQyxZQUFBLEVBRUEsT0FBQTFrRixPQUFBNkcsS0FBQXVvQyxPQUFBaXdCLE9BQUEsU0FBQTZyQixPQUFBbG5GLE1BRUEsSUFBQTg2RCxJQUFBMXZCLE1BQUFwckMsTUFDQW9tRixNQUFBdHJCLElBQUFzckIsTUFDQTFpRixLQUFBbzNELElBQUFwM0QsS0FDQWxOLElBQUFza0UsSUFBQXRrRSxJQUNBNkssTUFBQThsRixTQUFBZixNQUFBeHdDLFNBRUEsT0FBQTUxQyxNQUdBLElBQUEsSUFDQSxJQUFBLElBRUEsR0FBQTBnRixXQUNBLE1BR0EsSUFBQWxWLE9BQUEsSUFBQSxLQUFBaHZFLElBQUEsU0FBQXl6QixLQUFBLE9BQUFqd0IsT0FBQWl3QixJQUNBNXVCLE1BQUFxQyxLQUNBMG5DLE1BQUFuYixLQUNBazNELFNBQUEvN0MsTUFBQW5iLEtBQUFtMkQsTUFBQXh3QyxTQUFBeEssTUFBQW5iLEtBQUF2c0IsS0FDQSxJQUVBM0osRUFBQXl4RSxNQUFBLEdBQ0FyaUUsRUFBQXFpRSxNQUFBLEdBRUFrVixXQUFBd0csT0FBQTFHLFdBQUEsZ0JBQUF6bUYsRUFBQSxLQUFBb1AsRUFBQSxPQUNBLE1BQ0EsSUFBQSxTQUNBKzlFLE9BQUExRyxXQUFBLFdBQUFuL0UsTUFBQSxPQUNBLE1BQ0EsSUFBQSxRQUNBNmxGLE9BQUExRyxXQUFBLFVBQUFuL0UsTUFBQSxJQUNBLE1BR0EsSUFBQSxNQUNBLElBQUEsTUFDQTZsRixPQUFBLHVCQUFBbG5GLEtBQUEsSUFBQSxRQUFBeEosSUFBQSxPQUFBNkssTUFBQXFDLE1BQUEsSUFDQSxNQUdBLElBQUEsUUFDQSxJQUFBLGtCQUNBLElBQUEsY0FFQSxJQUFBMGpGLE1BQUFDLFFBQUFqQixNQUFBeHdDLFNBQ0F0aEQsTUFBQTh5RixNQUFBLEdBQ0FoOUQsSUFBQWc5RCxNQUFBLEdBQ0FqeEMsRUFBQWl4QyxNQUFBLEdBRUFGLE9BQUFsbkYsTUFBQSxRQUFBMUwsTUFBQWtJLElBQUEsU0FBQTZFLE1BQUExRSxHQUVBLE9BREEwRSxPQUFBODBDLEdBQUEvckIsSUFBQXp0QixHQUFBMEUsT0FDQSxJQUFBMUUsRUFBQWk2RCxRQUFBdjFELE9BQUFnSSxTQUFBaEksTUFBQSxNQUNBcUIsS0FBQSxLQUFBLElBQ0EsTUFHQSxJQUFBLE9BQ0F3a0YsT0FBQXB0RixRQUFBLFNBQUF1SCxNQUFBLE1BQ0EsTUFDQSxJQUFBLE1BQ0E2bEYsT0FBQXB0RixRQUFBLGVBQUF1SCxNQUFBLE9BQ0EsTUFDQSxJQUFBLFdBQ0E2bEYsT0FBQXB0RixRQUFBLFlBQUF1SCxNQUFBLEtBQ0EsTUFDQSxJQUFBLFlBQ0EsSUFBQSxTQUNBLElBQUEsV0FDQSxJQUFBLFFBQ0E2bEYsT0FBQXB0RixRQUFBLElBQUFrRyxLQUFBLElBQUFxQixNQUFBLEtBQ0EsTUFFQSxRQUNBNmxGLE9BQUFsbkYsTUFBQXFCLE1BR0EsT0FBQTZsRixTQUVBMUcsVUFBQSxHQUFBMW1GLE9BQUEsUUFZQSxTQUFBdXRGLFFBQUFqQixNQUFBeHdDLFNBQ0EsSUFBQWpTLE1BQUF5aUQsTUFBQXZwRixPQUFBLEVBQ0E0dUUsU0FBQXQwRSxLQUFBd0ssSUFBQXhLLEtBQUFDLE1BQUF1c0MsTUFBQWlTLFNBQUFqUyxNQUFBLEdBQ0FtUyxLQUFBc3dDLE1BQUEzakYsTUFBQWdwRSxTQUFBQSxTQUFBLEdBSUEsT0FGQTMxQixLQUFBaDVDLEtBQUEsSUFBQTg0QyxRQUFBLEVBQUFBLFNBQUEsRUFBQWpTLE9BQUFBLE9BRUFtUyxLQUdBLFNBQUFxeEMsU0FBQWYsTUFBQXh3QyxTQUNBLElBQUFrbEIsSUFBQXVzQixRQUFBakIsTUFBQXh3QyxTQUNBdGhELE1BQUF3bUUsSUFBQSxHQUNBMXdDLElBQUEwd0MsSUFBQSxHQUNBM2tCLEVBQUEya0IsSUFBQSxHQUNBLE9BQUF4K0QsU0FBQWhJLE9BQ0FBLE1BQUE2QyxLQUFBMEssSUFBQXZOLE1BQUE4MUIsS0FBQStyQixHQUFBN2hELE1BQUE4MUIsSUFBQSxHQUFBLElBQ0FBLEtBQ0FuRSxRQUFBLEdBV0EsSUFBQXFoRSxZQUVBbmhCLFFBQUE2ZixVQUVBNTZDLE9BQ0EzZ0IsT0FBQTZFLE9BQ0Era0QsU0FBQTFkLE9BQ0ExaUIsT0FBQTBpQixRQUdBMStELE1BQ0F3eUIsUUFBQSxFQUNBNHBELFNBQUEsRUFDQXBnQyxPQUFBLEdBR0F0RCxVQUVBbG1CLE9BQUEsU0FBQXF3QyxJQUFBaVEsS0FDQSxJQUFBdGdELE9BQUFxd0MsSUFBQXJ3QyxPQUVBLE9BQUFBLFFBQUFpdUMsTUFBQWp1QyxPQUFBc2dELE1BQUFBLE1BS0FsRixTQUlBOUIsS0FBQSxTQUFBakosS0FHQSxPQUNBditCLEtBSEF1K0IsSUFBQWxsQixRQUlBQSxRQWlDQSxTQUFBQSxRQUFBM0IsUUFDQSxPQUFBcWpCLE1BQUExaEIsU0FBQSxHQUFBM0IsT0FBQUEsT0FBQTJCLFdBbENBMnhDLENBQUFobEIsYUFBQXpxRSxLQUFBMnlCLFNBQUEzeUIsS0FBQXU4RSxVQUFBLEdBQUF2OEUsS0FBQW04QyxVQUlBaXdCLE1BQUEsU0FBQXBKLElBQUEwUSxPQUNBLElBQUFqdkMsS0FBQXUrQixJQUFBditCLEtBQ0FxWixRQUFBa2xCLElBQUFsbEIsUUFDQStKLE9BQUFtYixJQUFBbmIsT0FJQSxXQUhBNnJCLE1BQUEzMkUsT0FJQTBuQyxNQUFBLEdBR0FvakIsT0FLQXBqQixPQUFBcVosU0FDQTFSLElBQUFwc0MsS0FBQWl6RSxJQUFBanpFLEtBQUFtdkYsT0FBQXJ4QyxVQUxBOTlDLEtBQUFzZ0MsU0FVQW1RLFFBQUEsU0FBQSxPQUFBLGFBV0EsSUFBQWkvQyxnQkFFQTNoQixTQUlBM0IsTUFBQSxXQUVBLElBQUFwc0UsS0FBQThLLE1BQUEvRixTQUFBL0UsS0FBQTRwRixTQUFBLENBSUEsSUFBQWpXLFNBQUEzekUsS0FBQWdyRix1QkFDQWhyRixLQUFBbXFCLE1BQ0F4c0IsWUFBQXFDLEtBQUFpcUYsT0FBQWpxRixLQUFBNmtGLFVBQUE3a0YsS0FBQWlyRixjQUNBanJGLEtBQUFxdEMsS0FBQXNtQyxZQUlBbGpDLFFBQUEsT0FBQSxhQXlJQSxTQUFBay9DLFFBQUFyMkQsR0FBQTlELEtBQUFvNkQsUUFFQSxJQUFBdHlDLEtBQUF1eUMsVUFBQXYyRCxHQUFBOUQsTUFFQSxPQUFBbzZELE9BQ0F0eUMsS0FpQkEsU0FBQWhrQixHQUFBOUQsTUFDQSxPQUFBQSxLQUFBMmtCLFlBQUEsRUFBQTdnQixHQUFBNmdCLFlBQUEsRUFsQkEyMUMsQ0FBQXgyRCxHQUFBOUQsTUFDQW4yQixLQUFBd0ssSUFBQXl6QyxLQUFBeXlDLE9BQUF2NkQsT0FJQSxTQUFBdTZELE9BQUF2NkQsTUFDQSxPQUFBbjJCLEtBQUEwTixJQUFBLEVBQUFpakYsU0FBQXg2RCxNQUFBQSxLQUFBMmtCLGFBR0EsU0FBQTYxQyxTQUFBeDZELE1BQ0EsT0FBQXkwRCxPQUFBejBELE1BQUErdEMsT0FBQSxTQUFBenBCLE1BQUF4Z0IsSUFBQSxPQUFBQSxHQUFBNmdCLFlBQUFMLE9BQUEsR0FXQSxTQUFBKzFDLFVBQUF2MkQsR0FBQTlELE1BQ0EsT0FBQThELEdBQUEweEMsWUFBQUMsTUFBQTN4QyxHQUFBNmdCLFlBQUEza0IsS0FBQTJrQixZQUFBLEtBQUE4d0IsT0FBQSxFQUFBLEdBR0EsU0FBQWdsQixnQkFBQTMyRCxHQUFBdjhCLEtBQUF3eUUsU0FDQXQ4QixRQUFBM1osR0FBQW9xQyxZQUFBM21FLE1BQUEsR0FBQSxFQUFBd3lFLFVBR0EsU0FBQTBhLE9BQUF6MEQsTUFDQSxPQUFBeXBDLFFBQUF6cEMsS0FBQStPLFVBR0EsSUFBQTJyRCxVQUVBN2hCLFFBQUF5SCxNQUFBbVQsT0FBQXlHLGdCQUVBcDhDLE9BQ0FzOEMsT0FBQTF3QixRQUNBaXhCLEtBQUFqeEIsU0FHQS8rRCxNQUNBeXZGLFFBQUEsRUFDQU8sTUFBQSxFQUNBdkssU0FBQSxpQkFDQTBGLFFBQUEsbUJBQ0FaLE9BQUEsaUJBQ0FsSCxhQUFBLHNCQUNBMkgsYUF2TEEsU0FBQTFtRCxLQUFBM3FCLEtBQUFxZSxJQUFBNnFDLEtBQ0EsSUFBQTRzQixPQUFBNXNCLElBQUE0c0IsT0FDQXp6QyxPQUFBNm1CLElBQUE3bUIsT0FDQTNtQixLQUFBd3RDLElBQUF4dEMsS0FHQTZSLFNBQUEsSUFBQUgsU0FFQWovQixLQUFBdzhCLEtBQ0FrckQsUUFBQWxyRCxLQUFBalAsS0FBQW82RCxRQUNBRCxRQUFBNzFFLEtBQUEwYixLQUFBbzZELFFBQUE5MUUsS0FBQXFnQyxZQUFBaGlCLElBQ0Fud0IsR0FBQThSLEtBQ0E2MUUsUUFBQTcxRSxLQUFBMGIsS0FBQW82RCxRQUNBM25GLEtBQUF3OEIsS0FBQTBWLFlBQUFoaUIsS0FBQTh5QyxPQUFBLEVBQUEsR0FFQSxPQUVBOXlDLElBQUFBLElBRUFrVixLQUFBLFNBQUFoc0IsU0FBQXk4QixRQUFBTSxhQUNBLElBQUFOLFVBQUFBLFFBQUEsR0FHQSxJQUFBc3BCLE9BQUFocEIsT0FBQSxTQUFBakMsT0FjQSxPQWJBOTZCLFVBQUFoaUIsS0FBQWdqQixNQUFBaEIsU0FBQW0rQyxNQUFBMWhCLFNBQUEsRUFBQSxJQUVBOTlDLEtBQUEyb0YsVUFBQTdxQyxTQUVBclosTUFBQXprQyxLQUFBb3dGLG1CQUNBdHlDLFFBQUFyWixLQUFBcVosUUFBQTBoQixNQUFBMWhCLFFBQUEsRUFBQSxHQUNBbXlDLGdCQUFBandGLEtBQUFxd0YsWUFBQSxVQUFBdnlDLFFBQUFBLFFBQUF6OEIsU0FBQUEsU0FBQStsRCxPQUFBQSxPQUFBanZDLElBQUFBLE1BQ0FzTSxNQUFBd3JELGdCQUFBandGLEtBQUFxd0YsV0FBQSxHQUFBLFdBQUF2eUMsUUFBQSxFQUFBQSxRQUFBejhCLFNBQUFBLFNBQUErbEQsT0FBQUEsT0FBQWp2QyxJQUFBQSxNQUVBcXZDLFdBQ0FockUsTUFBQWc1QixNQUFBa3pELFVBQUFDLFdBQUEzZ0YsSUFBQWlqRSxPQUFBLEVBQUEsR0FBQSxPQUFBNXBELFNBQUErbEQsUUFDQW5oQyxLQUFBb0IsU0FBQXhCLFFBQUEzUyxNQUVBbVUsU0FBQXJCLFNBSUFucUMsS0FBQSxXQUNBLE9BQUEyckUsV0FBQTNyRSxLQUFBMjVCLE9BR0FpeUMsT0FBQSxXQUNBRCxXQUFBQyxPQUFBanlDLE9BR0E4SyxNQUFBLFdBQ0E4TCxJQUFBNVcsS0FBQSxZQUFBLEtBR0F3SSxRQUFBLFNBQUEzYyxTQUFBeThCLFNBSUEsWUFIQSxJQUFBQSxVQUFBQSxRQUFBOTlDLEtBQUE4OUMsV0FFQTBwQixXQUFBQyxPQUFBanlDLE1BQ0F4MUIsS0FBQXF0QyxLQUFBaHNCLFNBQUF5OEIsU0FBQSxJQUdBNnFDLFVBQUEsU0FBQTdxQyxTQUVBLElBQUFrc0MsU0FBQWhxRixLQUFBMnBGLGNBQUF4eEQsS0FBQTh5QyxPQUFBLEVBQUEsR0FFQTcrQixJQUFBNVcsS0FBQSxZQUFBbXpELFVBQUFucEIsTUFDQXdxQixTQUFBQSxTQUFBbHNDLFFBQUE5MUMsSUFDQWdvRixTQUFBeDZELE1BQ0FBLEtBQUEya0IsY0FDQTh3QixPQUFBLEVBQUEsR0FBQSxPQUVBanJFLEtBQUFvd0YsbUJBRUEzckQsT0FDQXFaLFFBQUEwaEIsTUFBQTFoQixTQUFBLEVBQUEsR0FDQW15QyxnQkFBQWp3RixLQUFBcXdGLFlBQUEsbUJBQUF2eUMsUUFBQUEsUUFBQTNsQixJQUFBQSxNQUNBODNELGdCQUFBandGLEtBQUFxd0YsV0FBQSxHQUFBLG9CQUFBdnlDLFFBQUEsRUFBQUEsUUFBQTNsQixJQUFBQSxRQUtBMmxCLFFBQUEsV0FDQSxPQUFBeitDLEtBQUEwSyxLQUFBcWlDLElBQUE1VyxLQUFBLGFBQUEvaUIsTUFBQSxLQUFBLElBQUF3NEQsT0FBQSxFQUFBLEdBQUFoakUsT0FBQUQsR0FBQUMsUUFHQTBoRixZQUFBLFdBQ0EsT0FBQXRxRixLQUFBMEssSUFBQS9CLEdBQUFDLE9BR0Fvb0YsVUFBQSxTQUFBOWxFLFVBQ0EsSUFBQUEsTUFBQUEsS0FBQSxHQUdBLElBQUE0OEQsUUFBQW5uRixLQUFBc3dGLGFBQ0FobUQsSUFBQWkxQixPQUFBMHFCLE9BQUF6MEQsTUFBQSxjQUNBM3dCLEVBQUFzbEIsTUFBQW1nQixJQUFBNjhDLFFBQUFodkQsS0FBQTVOLEtBQUEsRUFBQSxHQUFBLEVBQUE0OEQsUUFBQXBpRixPQUFBLEVBQUEsSUFFQSxPQUFBRixHQUFBeWxDLElBQUF6bEMsR0FBQTQvQixPQUFBbGEsSUFBQTROLElBQUEsS0FJQW00RCxXQUFBLFdBRUEsSUFBQWh6QyxLQUFBcXlDLFFBQUFsckQsTUFBQTNxQixLQUFBMGIsS0FBQW82RCxRQUVBLE9BQUFyd0IsT0FBQTBxQixPQUFBejBELE1BQUF4ekIsT0FBQSxTQUFBeW1GLE9BQ0EsSUFBQThILFVBQUFWLFVBQUFwSCxNQUFBanpELE1BQ0EsT0FBQSs2RCxXQUFBanpDLE1BQUFpekMsVUFBQTlILE1BQUF0dUMsYUFBQTNrQixLQUFBMmtCLFlBQUFtRCxPQUNBLGVBSUE4eUMsaUJBQUEsV0FFQSxJQUFBakosUUFBQW5uRixLQUFBc3dGLGFBRUFyRyxPQUFBejBELE1BQUF0ekIsUUFBQSxTQUFBdW1GLE9BQ0EsSUFBQXRPLFNBQUFuYyxTQUFBbXBCLFFBQUFzQixPQUVBd0gsZ0JBQUF4SCxNQUFBLGlCQUFBdE8sU0FBQSxLQUFBLFFBQ0FyOEIsUUFBQXE4QixTQUFBLEVBQUEsRUFDQWhpRCxJQUFBc3dELE1BQUF6ZCxZQUFBbHhELEtBQUFreEQsV0FBQSxHQUFBLFVBa0VBbnlCLFVBRUEyM0MsU0FBQSxXQUNBLE9BQUFSLFNBQUFod0YsS0FBQXcxQixNQUFBeDFCLEtBQUErRSxRQUdBa2dFLE9BQUEsU0FBQWpDLEtBR0EsT0FGQUEsSUFBQWlDLFFBRUErcUIsU0FBQWh3RixLQUFBdzFCLE1BQUF4MUIsS0FBQXcxQixLQUFBMmtCLFlBL0NBOHZDLE9BK0NBanFGLEtBQUF3MUIsTUEvQ0ErdEMsT0FBQSxTQUFBenBCLE1BQUF4Z0IsSUFBQSxPQUFBajZCLEtBQUEwTixJQUFBK3NDLE1BQUF4Z0IsR0FBQTZnQixjQUFBLEdBK0NBbjZDLEtBQUE0dkYsUUFHQTlFLFNBQUEsV0FJQSxJQUFBOXFGLEtBQUFpbEUsUUFBQWpsRSxLQUFBNHZGLFNBQUE1dkYsS0FBQW13RixLQUNBLE9BQUFud0YsS0FBQStFLE9BQUEsRUFHQSxHQUFBL0UsS0FBQTR2RixPQUNBLE9BQUE1dkYsS0FBQW13RixLQUFBbndGLEtBQUFtd0YsS0FBQXByRixPQUFBLEdBR0FxbkMsSUFBQXBzQyxLQUFBaXFGLE9BQUEsUUFBQSxJQUtBLElBSEEsSUFBQWw5RSxJQUFBZ2pGLE9BQUEvdkYsS0FBQXcxQixNQUNBM3dCLEVBQUE3RSxLQUFBK0UsT0FFQUYsS0FDQSxHQUFBZ3JGLFVBakJBN3ZGLEtBaUJBdzFCLEtBQUErTyxTQUFBMS9CLEdBakJBN0UsS0FpQkF3MUIsTUFBQXpvQixJQUNBLE9BQUExTixLQUFBd0ssSUFBQWhGLEVBQUEsRUFsQkE3RSxLQWtCQStFLE9BQUEsR0FJQSxPQUFBLEdBR0FvckYsS0FBQSxTQUFBbnRCLEtBQ0EsSUFBQTNDLE9BQUFyZ0UsS0FDQW13RixLQUFBbnRCLElBQUFtdEIsS0FHQWxYLFNBQUFqNUUsS0FBQXcxQixLQUFBMmtCLGFBQUFuNkMsS0FBQTR2RixPQUFBLEVBQUEsR0FFQXR5QyxLQUFBLEVBQ0FtekMsV0FBQXhYLFNBQ0FzWCxVQUFBLEVBa0NBLE9BaENBSixLQUFBQSxNQUFBbndGLEtBQUFpcUYsT0FBQTFtQixPQUFBLFNBQUE0c0IsS0FBQTFILE1BQUE1akYsR0FFQSxJQUNBNnJGLFdBREFwdUUsT0FBQW1tRSxPQUNBM3ZDLE1BR0EsR0FGQXkzQyxVQUFBRyxXQUVBcHpDLFFBRUEraUIsT0FBQXV2QixRQUFBL3FGLEVBQUF3N0QsT0FBQXlxQixXQUNBam1GLEVBQUF3N0QsT0FBQXlxQixXQUdBOXNCLFNBQUFteUIsS0FBQXRyRixJQUFBLENBRUEsSUFBQTA1RSxJQUFBbGUsT0FBQTRwQixPQUFBcGxGLEVBQUEsR0FDQXc3RCxPQUFBdXZCLFFBQUFyUixLQUFBbVMsV0FBQUQsV0FBQW51RSxPQUFBaThELEtBQUF6bEMsTUFBQSxFQUNBMjNDLFlBQUFDLFlBRUFELFdBQUF4WCxTQUNBa1gsS0FBQW5yRixLQUFBSCxHQUNBeTRDLEtBQUFpekMsVUFBQXRYLFVBQUE1WSxPQUFBdXZCLE9BQUFjLFdBQUEsRUFBQSxJQVFBLE9BRkFILFdBQUFHLFdBRUFQLFlBSUFBLEtBQUFwckYsUUFBQW9yRixNQUlBL0Usa0JBQUEsV0FDQSxPQUNBd0UsT0FBQTV2RixLQUFBNHZGLE9BQ0FwNkQsS0FBQXgxQixLQUFBdzFCLFFBTUFtNEMsVUFBQSxXQUNBenBCLFlBQUFsa0QsS0FBQWl6RSxJQUFBanpFLEtBQUF3akYsY0FBQW5qRixFQUFBLElBQUFMLEtBQUEsYUFBQUEsS0FBQWl6RSxPQUdBbEYsUUFFQTNCLE1BQUEsV0FDQSxJQUFBL0wsT0FBQXJnRSxLQUdBaW9FLEdBQUEsSUFBQWpvRSxLQUFBLFNBQUEsV0FBQUEsS0FBQSxTQUFBLElBQUFBLEtBQUFpekUsS0FBQS93RSxRQUFBLFNBQUFvM0IsSUFDQSxJQUFBcTZDLFNBQUF4ekUsS0FBQW01QixHQUFBK21DLE9BQUF1bEIsVUFDQXZsQixPQUFBeXFCLFVBQUE1bUMsWUFBQTVxQixHQUFBLFlBQUFtM0IsVUFBQWtqQixZQUFBdFQsT0FBQTh2QixPQUFBbnlCLFNBQUFxQyxPQUFBOHZCLEtBQUFyeEIsUUFBQTZVLFlBQUFBLFNBQUF0VCxPQUFBeXFCLGNBS0FyNkMsUUFBQSxPQUFBLFdBSUFBLFFBRUF1N0MsZUFBQSxTQUFBdHNGLElBSUFNLEtBQUE0cEYsVUFBQTVwRixLQUFBbXdGLE1BQUFud0YsS0FBQThLLE1BQUEvRixPQUFBLElBQUFpNUQsU0FBQWgrRCxLQUFBbXdGLEtBQUFud0YsS0FBQW1xQixTQUNBbnFCLEtBQUFtcUIsTUFBQW5xQixLQUFBZ3JGLGlCQUdBLElBQUEvbkUsS0FBQTVqQixLQUFBMEssSUFDQS9KLEtBQUFtcUIsTUFDQW5xQixLQUFBNnBGLFdBQ0E3cEYsS0FBQW00QixJQUFBLEdBQUFuNEIsS0FBQW1xQixNQUFBbnFCLEtBQUE2cEYsV0FBQTdwRixLQUFBbTRCLElBQUEsR0FBQW40QixLQUFBbXFCLE1BQUFucUIsS0FBQTZwRixXQUFBN3BGLEtBQUE4cUYsU0FBQSxHQUFBOXFGLEtBQUFtNEIsSUFBQSxJQUdBLElBQUFuNEIsS0FBQTRwRixVQUFBM21FLEtBQUEsRUFBQSxDQUVBLElBQUEsSUFBQXBlLEVBQUEsRUFBQUEsRUFBQW9lLEtBQUFwZSxJQWZBN0UsS0FnQkE4SyxNQUFBeW5CLE9BQUEsRUFBQSxFQWhCQXZ5QixLQWdCQW00QixJQUFBLEVBQUEsT0FBQSxZQUdBejRCLEVBQUEweUMsc0JBSUFweUMsS0FBQXFoQixTQUFBZ3FFLFFBQUFyckYsS0FBQXd3RixTQUFBeHdGLEtBQUFrckYsWUFFQWxyRixLQUFBbTRCLElBQUEsSUFBQW40QixLQUFBaXFGLE9BQUFqcUYsS0FBQTZwRixXQUNBN3BGLEtBQUFpcUYsT0FBQWpxRixLQUFBbXFCLE9BQ0FucUIsS0FBQWlxRixPQUFBanFGLEtBQUE2cEYsWUFDQTF2QyxZQUFBbjZDLEtBQUF3d0YsVUFFQXh3RixLQUFBMndGLFdBSUE1RSxTQUFBLFlBQ0F4bkYsWUFBQXZFLEtBQUE2cEYsWUFBQWhtQyxTQUFBN2pELEtBQUEwckYsbUJBQUEyRSxZQUFBcndGLEtBQUE2a0YsWUFHQTBHLFVBQUEsV0FDQSxJQUFBbHJCLE9BQUFyZ0UsS0FFQW1uRixRQUFBbm5GLEtBQUEwckYsaUJBQUExckYsS0FBQW1xQixPQUFBbW1FLGFBQ0F0d0YsS0FBQWlxRixPQUFBL25GLFFBQUEsU0FBQXVtRixPQUFBLE9BQUF2a0MsWUFBQXVrQyxNQUFBcG9CLE9BQUF3a0IsVUFBQTdtQixTQUFBbXBCLFFBQUFzQixZQUNBem9GLEtBQUFtd0YsTUFBQW55QixTQUFBaCtELEtBQUFtd0YsS0FBQXJ4QixRQUFBOStELEtBQUFtcUIsVUFBQW5xQixLQUFBaXFGLE9BQUEvbkYsUUFBQSxTQUFBdW1GLE9BQUEsT0FBQXZrQyxZQUFBdWtDLE1BQUFwb0IsT0FBQTRxQixhQUFBanRCLFNBQUFtcEIsUUFBQXNCLFlBS0F6YSxTQUVBMmlCLFFBQUEsV0FDQSxJQUFBdHdCLE9BQUFyZ0UsS0FLQSxHQUZBb3NDLElBQUFwc0MsS0FBQWlxRixPQUFBLFFBQUEsS0FFQWpxRixLQUFBaWxFLE9BQUEsQ0FJQSxJQUFBME8sU0FBQTN6RSxLQUFBbTRCLElBQUEsR0FBQW40QixLQUFBaXFGLE9BQUFqcUYsS0FBQTZwRixXQUFBN3BGLEtBQUE2cEYsVUFBQTdwRixLQUFBbXFCLE1BVUEsR0FSQW5xQixLQUFBaXFGLE9BQUEvbkYsUUFBQSxTQUFBdW1GLE1BQUE1akYsR0FBQSxPQUFBdW5DLElBQUFxOEMsTUFBQSxRQUFBcG9CLE9BQUFsb0MsSUFBQSxHQUFBdHpCLEVBQUE4dUUsU0FDQSxFQUNBdFQsT0FBQWxvQyxJQUFBLEdBQUF0ekIsR0FBQXc3RCxPQUFBbDJDLE9BQ0EsRUFDQSxNQUlBbnFCLEtBQUE0dkYsT0FRQSxJQUpBLElBQUE5MUUsS0FBQTlaLEtBQUFpcUYsT0FBQXRXLFVBQ0FzRixTQUFBajVFLEtBQUF3MUIsS0FBQTJrQixZQUFBLEVBQUFyZ0MsS0FBQXFnQyxZQUFBLEVBQ0F0Z0MsRUFBQSxFQUVBby9ELFNBQUEsR0FBQSxDQUNBLElBQUEyWCxXQUFBdndCLE9BQUEyRSxXQUFBbnJELEVBQUE4NUQsU0FBQUEsVUFDQThVLE1BQUFwb0IsT0FBQTRwQixPQUFBMkcsWUFFQXhrRCxJQUFBcThDLE1BQUEsUUFBQW1JLFdBQUFqZCxVQUFBLEdBQUEsR0FDQXNGLFVBQUF3UCxNQUFBdHVDLGVBS0E2d0MsY0FBQSxTQUFBclgsU0FBQWtXLFdBQ0EsSUFXQXBsRCxLQUpBLFFBTkEsSUFBQWt2QyxXQUFBQSxTQUFBM3pFLEtBQUFtcUIsWUFDQSxJQUFBMC9ELFlBQUFBLFVBQUE3cEYsS0FBQTZwRixXQUdBbFcsU0FBQTN6RSxLQUFBZ2xFLFNBQUEyTyxTQUFBa1csWUFFQTdwRixLQUFBbXdGLEtBQ0EsT0FBQXhjLFNBS0EsRUFBQSxDQUVBLEdBQUEzVixTQWZBaCtELEtBZUFtd0YsS0FBQXhjLFVBQ0EsT0FBQUEsU0FHQWx2QyxLQUFBa3ZDLFNBQ0FBLFNBcEJBM3pFLEtBb0JBZ2xFLFNBQUEyTyxTQXBCQTN6RSxLQW9CQW00QixJQUFBMHhELGlCQUVBbFcsV0FBQWx2QyxNQUVBLE9BQUFrdkMsWUFPQWtkLGdCQUVBeGlCLFFBQUE2ZixVQUVBL3RGLE1BQ0Eyd0YsUUFBQSxPQUdBajRDLFVBRUE4ekIsS0FBQSxTQUFBM0osSUFBQWlRLEtBR0EsT0FBQXJTLE1BRkFvQyxJQUFBOHRCLFFBRUE3ZCxPQUtBeGlDLFNBSUF2bEMsS0FBQSxZQUVBKzRCLE1BQUEsRUFFQTNLLEdBQUEsV0FDQSxPQUFBdDVCLEtBQUEyc0UsTUFHQWx6QyxRQUFBLFdBQ0EyUyxJQUFBcHNDLEtBQUFpekUsSUFBQWp6RSxLQUFBbXZGLE9BQUEsUUFNQWprRixLQUFBLGlCQUVBKzRCLE1BQUEsRUFFQTNLLEdBQUEsV0FDQSxPQUFBdDVCLEtBQUEyc0UsTUFHQWx6QyxRQUFBLFNBQUF1cEMsS0FDQSxJQUFBam1FLEtBQUFpbUUsSUFBQWptRSxLQUNBZzBGLFdBQUEvdEIsSUFBQTl1QixPQUNBNEosUUFBQWl6QyxXQUFBanpDLFFBQ0F6OEIsU0FBQTB2RSxXQUFBMXZFLFNBQ0ErbEQsT0FBQTJwQixXQUFBM3BCLE9BQ0FqdkMsSUFBQTQ0RCxXQUFBNTRELElBR0FxdkMsV0FBQUMsT0FBQXpuRSxLQUFBaXpFLEtBQ0E3bUMsSUFBQXBzQyxLQUFBaXpFLElBQUFqekUsS0FBQW12RixPQUFBNkIsV0FBQWowRixLQUFBbzdCLElBQUEybEIsV0FFQTBwQixXQUFBaHJFLE1BQUF3RCxLQUFBaXpFLElBQUFqekUsS0FBQW12RixPQUFBOEIsS0FBQWwwRixNQUNBLEdBQ0FvN0IsSUFBQSxFQUNBLEVBQ0EsR0FDQTlXLFNBQUErbEQsUUFBQTkvQixNQUFBcFUsU0FNQWhvQixLQUFBLG1DQUVBKzRCLE1BQUEsRUFFQTNLLEdBQUEsV0FDQSxPQUFBdDVCLEtBQUEyc0UsTUFHQWx6QyxRQUFBLFdBQ0ErdEMsV0FBQUMsT0FBQXpuRSxLQUFBaXpFLFFBTUEvbkUsS0FBQSxtQ0FFQSs0QixNQUFBLEVBRUEzSyxHQUFBLFdBQ0EsT0FBQXQ1QixLQUFBMnNFLE1BR0FsekMsUUFBQSxTQUFBdXBDLEtBQ0EsSUFBQWptRSxLQUFBaW1FLElBQUFqbUUsS0FDQWcwRixXQUFBL3RCLElBQUE5dUIsT0FDQTRKLFFBQUFpekMsV0FBQWp6QyxRQUNBM2xCLElBQUE0NEQsV0FBQTU0RCxJQUVBcXZDLFdBQUFDLE9BQUF6bkUsS0FBQWl6RSxLQUNBN21DLElBQUFwc0MsS0FBQWl6RSxJQUFBanpFLEtBQUFtdkYsT0FBQTZCLFdBQUFqMEYsS0FBQW83QixJQUFBMmxCLGVBUUEsU0FBQW16QyxLQUFBbDBGLE1BQ0EsT0FBQThnRSxTQUFBOWdFLEtBQUEsTUFHQSxTQUFBaTBGLFdBQUFqMEYsS0FBQW83QixJQUFBMmxCLFNBSUEsT0FGQUEsU0FBQSxFQUVBbXpDLEtBQUFsMEYsTUFJQW83QixJQUFBLEVBQ0EsRUFBQTJsQixRQUNBQSxRQUxBM2xCLElBQUEsRUFDQTJsQixRQUNBLEVBQUFBLFFBTUEsSUFxS0FvekMsTUFtU0FDLE1BeGNBQyxhQUFBL3hCLFVBQUFtcEIsWUFFQU8sTUFFQTE3QyxLQUFBLFdBQ0EsUUFDQWdQLFFBQUEsRUFBQVUsT0FBQSxJQUNBQSxRQUFBLEtBSUFlLFFBQUEsU0FBQTBOLFNBQ0EsT0FBQSxFQUFBcGYsSUFBQW9mLFFBQUEsWUFHQW05QixVQUFBLFNBQUE3cUMsU0FDQSxRQUNBekIsUUFBQSxFQUFBeUIsUUFBQWYsT0FBQSxJQUNBQSxRQUFBLE1BTUFwUSxPQUVBVSxLQUFBLFdBQ0EsUUFDQWdQLFFBQUEsRUFBQXFzQyxVQUFBRyxRQUFBLEtBQUE5ckMsT0FBQSxJQUNBQSxRQUFBLEtBSUFlLFFBQUEsU0FBQTBOLFNBQ0EsT0FBQSxFQUFBcGYsSUFBQW9mLFFBQUEsWUFHQW05QixVQUFBLFNBQUE3cUMsU0FDQSxRQUNBekIsUUFBQSxFQUFBeUIsUUFBQTRxQyxVQUFBRyxRQUFBLEVBQUEsR0FBQS9xQyxTQUFBZixPQUFBLElBQ0FBLFFBQUEsTUFNQXMwQyxNQUVBaGtELEtBQUEsU0FBQWxWLEtBQ0EsT0FBQUEsSUFBQSxJQUVBdXdELFVBQUFDLFVBQUEsSUFBQTVyQyxRQUFBLElBQ0EyckMsVUFBQUMsWUFBQTVyQyxPQUFBLE1BRUEyckMsVUFBQUMsV0FBQSxLQUFBNXJDLE9BQUEsSUFDQTJyQyxVQUFBQyxZQUFBNXJDLFFBQUEsS0FJQWUsUUFBQSxTQUFBME4sUUFBQTF4QyxLQUFBcWUsS0FDQSxPQUFBQSxJQUFBLEVBQ0EsRUFBQXl3RCxXQUFBOXVFLE1BQ0E4dUUsV0FBQXA5QixVQUdBbTlCLFVBQUEsU0FBQTdxQyxRQUFBM2xCLEtBQ0EsT0FBQUEsSUFBQSxJQUVBdXdELFVBQUFDLFVBQUEsR0FBQTdxQyxTQUFBZixRQUFBLElBQ0EyckMsVUFBQUMsV0FBQSxLQUFBLEVBQUE3cUMsVUFBQWYsT0FBQSxNQUVBMnJDLFVBQUFDLFVBQUEsS0FBQTdxQyxTQUFBZixPQUFBLElBQ0EyckMsVUFBQUMsVUFBQSxJQUFBLEVBQUE3cUMsVUFBQWYsUUFBQSxNQU1BLzNDLE1BRUFxb0MsS0FBQSxTQUFBbFYsS0FDQSxPQUFBQSxJQUFBLElBRUF1d0QsVUFBQUMsVUFBQSxLQUFBNXJDLE9BQUEsSUFDQTJyQyxVQUFBQyxZQUFBNXJDLFFBQUEsTUFFQTJyQyxVQUFBQyxXQUFBLElBQUE1ckMsUUFBQSxJQUNBMnJDLFVBQUFDLFlBQUE1ckMsT0FBQSxLQUlBZSxRQUFBLFNBQUEwTixRQUFBMXhDLEtBQUFxZSxLQUNBLE9BQUFBLElBQUEsRUFDQSxFQUFBeXdELFdBQUE5dUUsTUFDQTh1RSxXQUFBcDlCLFVBR0FtOUIsVUFBQSxTQUFBN3FDLFFBQUEzbEIsS0FDQSxPQUFBQSxJQUFBLElBRUF1d0QsVUFBQUMsVUFBQSxJQUFBN3FDLFNBQUFmLE9BQUEsSUFDQTJyQyxVQUFBQyxXQUFBLElBQUEsRUFBQTdxQyxVQUFBZixRQUFBLE1BRUEyckMsVUFBQUMsV0FBQSxHQUFBN3FDLFNBQUFmLFFBQUEsSUFDQTJyQyxVQUFBQyxVQUFBLEtBQUEsRUFBQTdxQyxVQUFBZixPQUFBLFFBUUF1MEMsYUFFQWpqQixRQUFBeUgsTUFBQThWLFVBQUE4RCxnQkFFQXA4QyxPQUNBMHNCLE1BQUF4b0MsT0FDQTBrRCxVQUFBaGQsUUFDQXF5QixVQUFBcnlCLFNBR0EvK0QsTUFDQTYvRCxNQUFBLE9BQ0FrYyxXQUFBLEVBQ0FxVixXQUFBLEVBQ0FqRyxRQUFBLHNCQUNBMUYsU0FBQSxvQkFDQThFLE9BQUEsb0JBQ0FsQyxXQUFBNEksY0FHQXJqQixRQUVBOUIsS0FBQSxXQUVBLElBQUFqSixJQUFBaGpFLEtBQUFnZ0UsTUFBQXZ0RCxNQUFBLEtBQUEvTixJQUFBbTZELFFBQ0FvYSxTQUFBalcsSUFBQSxHQUNBZ1csVUFBQWhXLElBQUEsR0FZQSxPQVZBZ1csVUFBQUEsVUFBQWg1RSxLQUFBaXpFLElBQUE5NEIsWUFBQTgrQixTQUVBajVFLEtBQUFrOEUsWUFDQWxELFVBQUEzNUUsS0FBQTBOLElBQUEvTSxLQUFBazhFLFVBQUFsRCxZQUdBaDVFLEtBQUF1eEYsWUFDQXZZLFVBQUEzNUUsS0FBQXdLLElBQUE3SixLQUFBdXhGLFVBQUF2WSxhQUdBMzVCLE9BQUEyNUIsWUFHQTVNLE1BQUEsU0FBQXBKLEtBQ0EsSUFBQXd1QixJQUFBeHVCLElBQUEzakIsT0FFQUEsT0FBQXIvQyxLQUFBdzFCLEtBQUFuMkIsS0FBQUMsTUFBQWt5RixPQUdBL2dELFFBQUEsT0FBQSxZQVFBZ2hELFVBRUFwakIsUUFBQXlILE1BQUEyUSxTQUVBbnpDLE9BQ0F3MEMsTUFBQXR3RCxPQUNBbkksVUFBQXd2QyxPQUNBNnlCLFFBQUFsNkQsT0FDQW02RCxlQUFBbjZELE9BQ0FvNkQsUUFBQXA2RCxPQUNBcTZELGFBQUFyNkQsT0FDQXM2RCxRQUFBdDZELE9BQ0F1NkQsVUFBQXY2RCxPQUNBdzZELFNBQUF4NkQsT0FDQXk2RCxVQUFBejZELE9BQ0F1WixPQUFBdlosUUFHQXIzQixNQUNBMm5GLE9BQUEsRUFDQXo0RCxVQUFBLEVBQ0FxaUUsUUFBQSxtQkFDQUMsZUFBQSwwQkFDQUMsUUFBQSxtQkFDQUMsYUFBQSxVQUNBQyxRQUFBLGNBQ0FDLFVBQUEscUJBQ0FDLFNBQUEsb0JBQ0FDLFVBQUEsR0FDQWxoRCxRQUFBLEdBR0F4ZixLQUFBLFdBQ0EsSUFBQTh1QyxPQUFBcmdFLE1BRUEsT0FBQSxRQUFBLE9BQUEsT0FBQWtDLFFBQUEsU0FBQXdJLEtBQ0EsSUFBQTlGLEdBQUF5N0QsT0FBQTMxRCxLQUNBMjFELE9BQUEzMUQsS0FBQSxTQUFBaEwsR0FDQTJnRSxPQUFBbWxCLFFBQUFycEYsT0FBQWt6RCxZQUNBLElBQUEyVCxJQUFBbU4sU0FBQXp3RSxHQUNBdUMsRUFBQStnRSxJQUFBL2dFLEVBQ0FvUCxFQUFBMnhELElBQUEzeEQsRUFDQWd2RCxPQUFBM2hFLEtBQUF1RCxFQUFBQSxFQUFBb1AsRUFBQUEsR0FFQXpNLEdBQUFsRixPQUtBK3dDLFFBQUF5Z0QsU0FBQUEsTUFBQXpsQixhQUFBLE9BQUF5bEIsT0FFQW5qQixRQUVBM0IsTUFBQSxXQU1BLEdBSkFwc0UsS0FBQWd5RixVQUNBOXRDLFlBQUFsa0QsS0FBQWl6RSxJQUFBanpFLEtBQUFneUYsVUFBQWh5RixLQUFBaXpFLElBQUExdUMsU0FBQXgvQixRQUdBL0UsS0FBQXlwRixLQUFBLENBSUFubkUsT0FBQXRpQixLQUFBeXBGLE1BQUEvdUQsSUFBQTE2QixLQUFBdEIsSUFBQTJTLEVBQUFyUixLQUFBNG5FLE9BQUFsdEMsSUFBQTRpQixLQUFBdDlDLEtBQUF0QixJQUFBdUQsRUFBQWpDLEtBQUE0bkUsT0FBQXRxQixPQUVBLElBR0F5NUIsT0FGQXI4QyxJQURBcFksT0FBQXRpQixLQUFBeXBGLE1BQ0EvdUQsSUFDQWtsQyxPQUFBbGxDLElBQUExNkIsS0FBQXlwRixLQUFBcjlCLGFBR0ExeEIsSUFBQSxHQUFBQSxJQUFBMTZCLEtBQUF3bEYsUUFDQXpPLE9BQUEvMkUsS0FBQXdsRixRQUFBLEVBQ0E1bEIsT0FBQXZnQixPQUFBcGtELFdBQUEya0UsT0FBQXZnQixPQUFBbGpELFFBQUE2RCxLQUFBd2xGLFVBQ0F6TyxPQUFBLzJFLEtBQUF3bEYsUUFBQSxHQUdBek8sUUFBQWx1QyxXQUFBLFdBQUEsT0FBQTFzQyxPQUFBNDZFLE9BQUE1NkUsT0FBQW16RCxZQUFBeW5CLFNBQUEsTUFLQS9JLFNBRUF6OEMsS0FBQSxTQUFBN3hCLEdBRUEsSUFBQWl6QixPQUFBanpCLEVBQUFpekIsT0FDQXh3QixPQUFBekMsRUFBQXlDLE9BQ0FxeEMsaUJBQUE5ekMsRUFBQTh6QyxpQkFFQTR4QyxZQURBbm1CLFFBQUFqL0QsS0FBQWl6RSxJQUFBMXVDLFVBQUF2aUMsT0FBQSxTQUFBczNCLElBQUEsT0FBQXlwQyxPQUFBcHdDLE9BQUEyRyxNQUNBLElBRUE4ckQsYUFDQXRpQixRQUFBcGpFLEVBQUFpekIsU0FDQTN5QixLQUFBK3dDLFNBQUFneUIsT0FBQXB3QyxPQUFBM3lCLEtBQUErd0MsU0FDQTV1QyxPQUFBLEdBQ0E0Z0UsT0FBQXB3QyxPQUFBLElBQUEzeUIsS0FBQSxZQUNBd3pDLG1CQUtBOXpDLEVBQUEweUMsaUJBRUFweUMsS0FBQWt5RixTQUFBbHlGLE1BQ0FBLEtBQUFvbEYsWUFBQUEsWUFDQXBsRixLQUFBNG5FLE9BQUF2SSxRQUFBMXNDLE9BQUFBLE9BQUF4SSxNQUFBQSxNQUFBaTdELGNBQUFwbEYsS0FBQXRCLEtBRUF1eEMsR0FBQWgxQyxTQUFBeXdFLFlBQUExckUsS0FBQStwRixNQUNBOTVDLEdBQUFoMUMsU0FBQTB3RSxVQUFBM3JFLEtBQUFzeUIsS0FDQTJkLEdBQUE5ekMsT0FBQSxTQUFBNkQsS0FBQSsyRSxRQUVBLzJFLEtBQUFxdkIsV0FDQXJ2QixLQUFBeEQsTUFBQWtELEtBS0FsRCxNQUFBLFNBQUFrRCxHQUVBTSxLQUFBeXBGLEtBQUEveEMsT0FBQTEzQyxLQUFBMjFFLFdBQUEzMUUsS0FBQW9sRixZQUFBK00sVUFBQXAwRixRQUFBLFFBQUEsUUFBQUEsUUFBQSxRQUFBLFNBRUFxdUMsSUFBQXBzQyxLQUFBeXBGLEtBQUFwcUIsUUFDQThjLFVBQUEsYUFDQXJqQyxNQUFBOTRDLEtBQUFvbEYsWUFBQWpyQyxZQUNBa0YsT0FBQXIvQyxLQUFBb2xGLFlBQUFoNUIsY0FDQWhnQixJQUFBcHNDLEtBQUFvbEYsYUFBQSxjQUFBLGVBQUEsYUFBQSxvQkFDQS9vRCxLQUFBcjhCLEtBQUF5cEYsS0FBQSxhQUFBLElBQ0E1bEMsU0FBQTdqRCxLQUFBeXBGLEtBQUF6cEYsS0FBQTR4RixRQUFBNXhGLEtBQUFpeUYsV0FFQTV5QyxPQUFBci9DLEtBQUF5cEYsS0FBQTE5QixrQkFBQTFNLE9BQUFyL0MsS0FBQW9sRixZQUFBcjVCLG9CQUVBLElBQUFpWCxJQUFBMWdELE9BQUF0aUIsS0FBQW9sRixhQUNBOW5DLEtBQUEwbEIsSUFBQTFsQixLQUNBNWlCLElBQUFzb0MsSUFBQXRvQyxJQUNBMmtDLE9BQUFyL0QsS0FBQTRuRSxRQUFBdHFCLEtBQUFBLEtBQUF0OUMsS0FBQXRCLElBQUF1RCxFQUFBeTRCLElBQUFBLElBQUExNkIsS0FBQXRCLElBQUEyUyxJQUVBd3lDLFNBQUE3akQsS0FBQW9sRixZQUFBcGxGLEtBQUEyeEYsZ0JBQ0E5dEMsU0FBQTdqRCxLQUFBaXpFLElBQUExdUMsU0FBQXZrQyxLQUFBMHhGLFNBQ0E3dEMsU0FBQTVvRCxTQUFBcS9CLGdCQUFBdDZCLEtBQUE2eEYsY0FFQTUrQyxRQUFBanpDLEtBQUFpekUsSUFBQSxTQUFBanpFLEtBQUFBLEtBQUFvbEYsY0FFQXBsRixLQUFBK3BGLEtBQUFycUYsSUFHQXFxRixLQUFBLFNBQUFycUYsR0FFQSxHQUFBTSxLQUFBeXBGLEtBQUEsQ0FTQXpwRixLQUFBcTFFLFFBRUEsSUFBQTFpRCxPQUFBLGNBQUFqekIsRUFBQTNDLEtBQUEyQyxFQUFBaXpCLE9BQUExM0IsU0FBQW0zRixpQkFBQXB5RixLQUFBdEIsSUFBQXVELEVBQUFoSCxTQUFBa3lDLEtBQUFnUixXQUFBbitDLEtBQUF0QixJQUFBMlMsRUFBQXBXLFNBQUFreUMsS0FBQStRLFdBRUFtMEMsU0FBQXJ5RixLQUFBc3lGLFlBQUEzL0QsUUFDQTQvRCxTQUFBdnlGLEtBQUFzeUYsWUFBQXR5RixLQUFBb2xGLGFBQ0EyRSxLQUFBc0ksV0FBQUUsU0FFQSxHQUFBRixXQUFBdHZCLE9BQUFwd0MsT0FBQTN5QixLQUFBb2xGLGdCQUFBMkUsTUFBQXNJLFNBQUF2SyxPQUFBdUssU0FBQXZLLFFBQUF5SyxTQUFBekssT0FBQSxDQU1BLEdBRkFuMUQsT0FBQTAvRCxTQUFBcGYsTUFBQXRnRCxPQUFBekIsWUFBQXlCLFFBQUFzc0MsUUFBQW96QixTQUFBcGYsSUFBQTF1QyxVQUFBdmlDLE9BQUEsU0FBQXBFLFNBQUEsT0FBQW1sRSxPQUFBcHdDLE9BQUEvMEIsV0FBQSxHQUVBbXNGLEtBQ0F3SSxTQUFBdHZGLE9BQUFqRCxLQUFBb2xGLGtCQUNBLElBQUF6eUQsT0FDQSxPQUdBMC9ELFNBQUEvNUMsT0FBQXQ0QyxLQUFBb2xGLFlBQUF6eUQsUUFFQXFyQyxTQUFBaCtELEtBQUFreUYsUUFBQUcsV0FDQXJ5RixLQUFBa3lGLFFBQUFsdEYsS0FBQXF0RixnQkE5QkFoekYsS0FBQTBLLElBQUEvSixLQUFBdEIsSUFBQXVELEVBQUFqQyxLQUFBNG5FLE9BQUEzbEUsR0FBQWpDLEtBQUFxdkIsV0FBQWh3QixLQUFBMEssSUFBQS9KLEtBQUF0QixJQUFBMlMsRUFBQXJSLEtBQUE0bkUsT0FBQXYyRCxHQUFBclIsS0FBQXF2QixZQUNBcnZCLEtBQUF4RCxNQUFBa0QsSUFrQ0FxM0UsT0FBQSxXQUNBLElBQUFBLE9BQUE1NkUsT0FBQWt6RCxZQUNBMG5CLFNBQUEvMkUsS0FBQXdsRixVQUNBeGxGLEtBQUF0QixJQUFBMlMsR0FBQTBsRSxPQUFBLzJFLEtBQUF3bEYsUUFDQXhsRixLQUFBd2xGLFFBQUF6TyxPQUNBLzJFLEtBQUFxMUUsVUFJQS9pRCxJQUFBLFNBQUE1eUIsR0FNQSxHQUpBNHdDLElBQUFyMUMsU0FBQXl3RSxZQUFBMXJFLEtBQUErcEYsTUFDQXo1QyxJQUFBcjFDLFNBQUEwd0UsVUFBQTNyRSxLQUFBc3lCLEtBQ0FnZSxJQUFBbjBDLE9BQUEsU0FBQTZELEtBQUErMkUsUUFFQS8yRSxLQUFBeXBGLEtBQUEsQ0FTQTNsQixlQUVBLElBQUF1dUIsU0FBQXJ5RixLQUFBc3lGLFlBQUF0eUYsS0FBQW9sRixhQUVBcGxGLE9BQUFxeUYsU0FDQXJ5RixLQUFBNG5FLE9BQUF6OUMsUUFBQUEsTUFBQW5xQixLQUFBb2xGLGNBQ0FueUMsUUFBQWp6QyxLQUFBaXpFLElBQUEsU0FBQWp6RSxLQUFBQSxLQUFBb2xGLGVBR0FueUMsUUFBQW8vQyxTQUFBcGYsSUFBQSxTQUFBb2YsU0FBQXJ5RixLQUFBb2xGLGNBQ0FueUMsUUFBQWp6QyxLQUFBaXpFLElBQUEsV0FBQWp6RSxLQUFBQSxLQUFBb2xGLGVBR0FueUMsUUFBQWp6QyxLQUFBaXpFLElBQUEsUUFBQWp6RSxLQUFBQSxLQUFBb2xGLGNBRUFuaUYsT0FBQWpELEtBQUF5cEYsTUFDQXpwRixLQUFBeXBGLEtBQUEsS0FFQSxJQUFBM2xDLFFBQUE5akQsS0FBQWt5RixRQUFBeHRGLElBQUEsU0FBQTJ0RixVQUFBLE9BQUFBLFNBQUEsZUFBQSxJQUFBQSxTQUFBLFVBQUF6bkYsS0FBQSxLQUNBNUssS0FBQWt5RixRQUFBaHdGLFFBQUEsU0FBQW13RixVQUFBLE9BQUExMEYsWUFBQTAwRixTQUFBcGYsSUFBQTF1QyxTQUFBdWYsV0FFQW5tRCxZQUFBMUMsU0FBQXEvQixnQkFBQXQ2QixLQUFBNnhGLGtCQTVCQSxZQUFBbnlGLEVBQUEzQyxNQUFBZ21FLE9BQUFyakUsRUFBQWl6QixPQUFBLGFBQ0F6ekIsU0FBQXlELEtBQUFpaUMsUUFBQWxsQyxFQUFBaXpCLE9BQUEsV0FBQWh3QixPQStCQTIxQyxPQUFBLFNBQUExNkMsUUFBQSswQixRQUNBLElBQUEwdEMsT0FBQXJnRSxLQUdBNmpELFNBQUE3akQsS0FBQWl6RSxJQUFBMXVDLFNBQUF2a0MsS0FBQTB4RixTQUVBLElBQUFwNUMsT0FBQSxXQUVBM2xCLFFBRUFvd0MsT0FBQW5sRSxRQUFBeWlFLE9BQUE0UyxNQTBDQSxTQUFBcjFFLFFBQUErMEIsUUFDQSxPQUFBLzBCLFFBQUFzekIsYUFBQXlCLE9BQUF6QixZQUFBL0csTUFBQXZzQixTQUFBdXNCLE1BQUF3SSxRQTNDQTYvRCxDQUFBNTBGLFFBQUErMEIsUUFDQWtsQixPQUFBbGxCLE9BQUEvMEIsU0FFQWs2QyxNQUFBbmxCLE9BQUEvMEIsU0FJQTg1QyxPQUFBMm9CLE9BQUE0UyxJQUFBcjFFLFVBS0FvQyxLQUFBdS9DLFVBQ0F2L0MsS0FBQXloRCxRQUFBbkosUUFFQUEsVUFLQXIxQyxPQUFBLFNBQUFyRixTQUVBbWxFLE9BQUFubEUsUUFBQW9DLEtBQUFpekUsT0FJQWp6RSxLQUFBdS9DLFVBQ0F2L0MsS0FBQXloRCxRQUFBLFdBQUEsT0FBQXgrQyxPQUFBckYsV0FFQXFGLE9BQUFyRixXQUtBMDBGLFlBQUEsU0FBQTEwRixTQUNBLE9BQUFBLFVBQUFvQyxLQUFBeTFFLGNBQUE3M0UsUUFBQSxhQUFBb0MsS0FBQXN5RixZQUFBMTBGLFFBQUFzekIsZ0JBYUEsSUFBQWkyRCxXQUVBc0wsU0FFQWo1RCxPQUFBLEVBRUEvdUIsS0FBQSxRQUVBNGpFLFFBQUErUyxVQUFBckwsVUFBQXNELFVBRUEvbEMsT0FDQWtQLE1BQUFxYyxPQUNBNnpCLE1BQUFsN0QsUUFHQXIzQixNQUNBekIsSUFBQSxNQUNBZzBGLE1BQUEsR0FDQWx3QyxNQUFBLEVBQ0FqRCxXQUFBLHlCQUNBbCtCLFNBQUEsSUFDQXVrRCxJQUFBLFlBQ0EwVCxPQUFBLGNBR0E1TCxjQUFBLFdBQ0ExdEUsS0FBQTJ5RixVQUFBcHlCLFFBQUF2Z0UsS0FBQWl6RSxJQUFBLFNBQ0E1MkMsS0FBQXI4QixLQUFBaXpFLEtBQUF5ZixNQUFBLEdBQUFFLGlCQUFBLEtBR0Eva0IsYUFBQSxXQUNBN3RFLEtBQUFzdEMsT0FDQWpSLEtBQUFyOEIsS0FBQWl6RSxLQUFBeWYsTUFBQTF5RixLQUFBMnlGLFVBQUEzeUYsS0FBQTB5RixNQUFBLEtBQUFFLGdCQUFBLFFBR0E1a0IsU0FFQTNnQyxLQUFBLFdBQ0EsSUFBQWd6QixPQUFBcmdFLEtBR0FnK0QsU0FBQW1wQixRQUFBbm5GLFFBSUFtbkYsUUFBQWpsRixRQUFBLFNBQUEybEQsUUFBQSxPQUFBQSxPQUFBdmEsU0FDQTY1QyxRQUFBbmlGLEtBQUFoRixNQUVBQSxLQUFBNnlGLFFBQUE1aUQsR0FBQWgxQyxTQUFBLFFBQUEsU0FBQXlFLEdBQUEsT0FBQXFqRSxPQUFBcmpFLEVBQUFpekIsT0FBQTB0QyxPQUFBNFMsTUFBQTVTLE9BQUEveUIsU0FFQW1WLGFBQUF6aUQsS0FBQXM2RSxXQUVBdDZFLEtBQUE4eUYsUUFBQXA3QyxPQUFBMTNDLEtBQUF1NUMsVUFBQSxlQUFBdjVDLEtBQUEsT0FBQSw2QkFBQUEsS0FBQSxPQUFBLFdBQUFBLEtBQUEsTUFBQSxnQkFFQXE4QixLQUFBcjhCLEtBQUFpekUsSUFBQSxpQkFBQSxHQUVBanpFLEtBQUFtb0UsV0FBQW5vRSxLQUFBOHlGLFFBQUE5eUYsS0FBQWl6RSxLQUVBanpFLEtBQUE0bkUsT0FBQSxNQUFBNW5FLEtBQUF5NUUsVUFBQXhQLGFBQUFqcUUsS0FBQW00QixLQUFBLElBQUFuNEIsS0FBQSxNQUFBQSxLQUFBLE1BQUEsSUFBQWlxRSxhQUFBanFFLEtBQUFtNEIsS0FFQW40QixLQUFBczZFLFVBQUF6eEMsV0FBQSxXQUVBdzNCLE9BQUFvVyxjQUFBcFcsT0FBQXl5QixTQUFBLEdBRUF6eUIsT0FBQW1hLFVBQUF6N0UsWUFBQSxXQUVBNmpFLFVBQUF2QyxPQUFBNFMsTUFDQTVTLE9BQUEveUIsUUFHQSxNQUVBdHRDLEtBQUF3aUQsU0FHQWxWLEtBQUEsV0FFQSxJQUFBcW1DLFNBQUF3VCxRQUFBMzFFLFFBQUF4UixRQUVBMnpFLFVBQUE5d0QsUUFBQTdpQixLQUFBaXpFLElBQUEsVUFBQWp6RSxLQUFBaXpFLE1BQUFoNEUsU0FBQW9rQyxnQkFJQThuRCxRQUFBNTBELE9BQUFvaEQsU0FBQSxHQUVBbHhCLGFBQUF6aUQsS0FBQXM2RSxXQUNBcjdFLGNBQUFlLEtBQUF3NkUsV0FDQW4rQyxLQUFBcjhCLEtBQUFpekUsSUFBQSxpQkFBQSxHQUNBanpFLEtBQUF5MkUsY0FBQXoyRSxLQUFBOHlGLFNBQUEsR0FDQTl5RixLQUFBOHlGLFNBQUE3dkYsT0FBQWpELEtBQUE4eUYsU0FDQTl5RixLQUFBOHlGLFNBQUEsRUFDQTl5RixLQUFBNnlGLGFBTUFwaUQsUUFBQTBnRCxTQUFBQSxNQUFBLFNBQUF2bEIsYUFBQSxJQUFBSCxhQUFBLFNBQUEvckUsR0FDQUEsRUFBQTNDLE9BQUEwdUUsYUFBQWlGLFFBQUFoeEUsSUFDQU0sS0FBQXF0QyxRQUVBOGpELE1BQUFqK0MsS0FBQSxPQUFBaStDLE1BQUF0bEIsY0FBQSxTQUFBbnNFLEdBQ0FneEUsUUFBQWh4RSxJQUNBTSxLQUFBc3RDLFFBRUE2akQsUUFJQTRCLFFBRUF6L0MsT0FDQTAvQyxNQUFBeDdELE9BQ0F5N0QsWUFBQXo3RCxPQUNBMDdELFdBQUFyMEIsT0FDQXMwQixRQUFBdDBCLE9BQ0EzK0QsT0FBQXMzQixPQUNBNDdELEtBQUE1N0QsT0FDQTY3RCxlQUFBNzdELE9BQ0E4N0QsZUFBQTk3RCxPQUNBKzdELGVBQUEvN0QsT0FDQXFnRCxTQUFBM1ksUUFDQWgwRCxLQUFBc3NCLE9BQ0FnM0IsT0FBQXRxRCxPQUNBbkgsS0FBQXk2QixPQUNBOTZCLElBQUE4NkIsUUFHQXIzQixNQUNBNnlGLE9BQUEsRUFDQUMsWUFBQSxjQUNBQyxXQUFBLEVBQ0FDLFFBQUEsRUFDQWp6RixPQUFBLE9BQ0FrekYsTUFBQSxFQUNBQyxlQUFBLHdCQUNBQyxlQUFBLHdCQUNBQyxlQUFBLHNDQUNBMWIsVUFBQSxFQUNBM3NFLEtBQUEsVUFDQXNqRCxVQUNBenhELEtBQUEsR0FDQUwsSUFBQSxHQUNBMnRELE1BQUFuM0IsS0FDQXNnRSxVQUFBdGdFLEtBQ0EwM0IsV0FBQTEzQixLQUNBcXRCLFNBQUFydEIsS0FDQXVnRSxZQUFBdmdFLEtBQ0FELE1BQUFDLEtBQ0F2eUIsS0FBQXV5QixLQUNBNmYsS0FBQTdmLEtBQ0F3Z0UsUUFBQXhnRSxLQUNBeWdFLFVBQUF6Z0UsS0FDQTBVLFNBQUExVSxNQUdBdWQsUUFFQXNqQixPQUFBLFNBQUFyMEQsR0FFQW1qQixRQUFBbmpCLEVBQUFpekIsT0FBQSx3QkFJQWp6QixFQUFBMHlDLGlCQUVBMXlDLEVBQUFpekIsT0FBQW1vRCxPQUNBOTZFLEtBQUE0ekYsT0FBQWwwRixFQUFBaXpCLE9BQUFtb0QsT0FHQXA3RSxFQUFBaXpCLE9BQUFwcEIsTUFBQSxLQUdBbXhFLEtBQUEsU0FBQWg3RSxHQUNBN0QsS0FBQTZELEdBRUEsSUFBQW0wRixTQUFBbjBGLEVBQUFvMEYsYUFFQUQsVUFBQUEsU0FBQS9ZLFFBSUFuOUUsWUFBQXFDLEtBQUFpekUsSUFBQWp6RSxLQUFBaXpGLGFBRUFqekYsS0FBQTR6RixPQUFBQyxTQUFBL1ksU0FHQWlaLFVBQUEsU0FBQXIwRixHQUNBN0QsS0FBQTZELElBR0FzMEYsU0FBQSxTQUFBdDBGLEdBQ0E3RCxLQUFBNkQsR0FDQW1rRCxTQUFBN2pELEtBQUFpekUsSUFBQWp6RSxLQUFBaXpGLGNBR0FnQixVQUFBLFNBQUF2MEYsR0FDQTdELEtBQUE2RCxHQUNBL0IsWUFBQXFDLEtBQUFpekUsSUFBQWp6RSxLQUFBaXpGLGVBS0FqbEIsU0FFQTRsQixPQUFBLFNBQUE5WSxPQUNBLElBQUF6YSxPQUFBcmdFLEtBR0EsR0FBQTg2RSxNQUFBLzFFLE9BQUEsQ0FJQWt1QyxRQUFBanpDLEtBQUFpekUsSUFBQSxVQUFBNkgsUUFFQSxJQUFBLElBQUFqMkUsRUFBQSxFQUFBQSxFQUFBaTJFLE1BQUEvMUUsT0FBQUYsSUFBQSxDQUVBLEdBQUF3N0QsT0FBQTh5QixTQUFBLElBQUE5eUIsT0FBQTh5QixRQUFBclksTUFBQWoyRSxHQUFBazdFLEtBRUEsWUFEQTFmLE9BQUExL0QsS0FBQTAvRCxPQUFBa3pCLGVBQUF4MUYsUUFBQSxLQUFBc2lFLE9BQUE4eUIsVUFJQSxHQUFBOXlCLE9BQUEyeUIsUUFBQWx4RixNQUFBdStELE9BQUEyeUIsTUFBQWxZLE1BQUFqMkUsR0FBQXFHLE1BRUEsWUFEQW0xRCxPQUFBMS9ELEtBQUEwL0QsT0FBQWl6QixlQUFBdjFGLFFBQUEsS0FBQXNpRSxPQUFBMnlCLFFBSUEsR0FBQTN5QixPQUFBK3lCLE9BQUF0eEYsTUFBQXUrRCxPQUFBK3lCLEtBQUF0WSxNQUFBajJFLEdBQUE5SCxNQUVBLFlBREFzakUsT0FBQTEvRCxLQUFBMC9ELE9BQUFnekIsZUFBQXQxRixRQUFBLEtBQUFzaUUsT0FBQSt5QixPQU1BcHpGLEtBQUE2M0UsV0FDQWlELE9BQUFBLE1BQUEsS0FHQTk2RSxLQUFBd3pGLFVBQUF4ekYsS0FBQTg2RSxPQUVBLElBQUFvWixPQXNEQSxTQUFBcFosTUFBQWlGLE1BRUEsSUFEQSxJQUFBbVUsVUFDQXJ2RixFQUFBLEVBQUFBLEVBQUFpMkUsTUFBQS8xRSxPQUFBRixHQUFBazdFLEtBQUEsQ0FFQSxJQURBLElBQUFvVSxTQUNBdDZFLEVBQUEsRUFBQUEsRUFBQWttRSxLQUFBbG1FLElBQ0FzNkUsTUFBQW52RixLQUFBODFFLE1BQUFqMkUsRUFBQWdWLElBRUFxNkUsT0FBQWx2RixLQUFBbXZGLE9BRUEsT0FBQUQsT0EvREFDLENBQUFyWixNQUFBOTZFLEtBQUFrekYsWUFDQVUsT0FBQSxTQUFBOVksT0FFQSxJQUFBdkwsUUFBQSxJQUFBNmtCLFNBSUEsSUFBQSxJQUFBMXBGLE9BRkFvd0UsTUFBQTU0RSxRQUFBLFNBQUFnK0IsTUFBQSxPQUFBcXZDLFFBQUE3M0IsT0FBQTJvQixPQUFBbjFELEtBQUFnMUIsUUFFQW1nQyxPQUFBN1IsT0FDQStnQixRQUFBNzNCLE9BQUFodEMsSUFBQTIxRCxPQUFBN1IsT0FBQTlqRCxNQUdBcEssS0FBQSsvRCxPQUFBM2pFLEtBQ0F5RCxLQUFBb3ZFLFFBQ0FydkUsT0FBQW1nRSxPQUFBbmdFLE9BQ0FrdEQsYUFBQWlULE9BQUF0akUsS0FDQTZ0RCxXQUFBLFNBQUE2WixLQUVBLElBQUFwWSxJQUFBb1ksSUFBQXBZLElBQ0FBLElBQUF1bkMsUUFBQTNqRCxHQUFBb2MsSUFBQXVuQyxPQUFBLFdBQUF2ekIsT0FBQXo0QixXQUNBLFlBQUEsT0FBQSxVQUFBLFNBQUExbEMsUUFBQSxTQUFBbkYsTUFBQSxPQUFBa3pDLEdBQUFvYyxJQUFBdHZELEtBQUFnUCxjQUFBczBELE9BQUF0akUsU0FHQXNqRSxPQUFBelYsV0FBQTZaLFFBR0F4K0IsS0FDQSxTQUFBb21CLEtBRUFnVSxPQUFBOWYsU0FBQThMLEtBRUE2bkMsT0FBQW52RixPQUNBNnVGLE9BQUFNLE9BQUF4cEUsU0FFQTIxQyxPQUFBb3pCLFlBQUFwbkMsTUFJQSxTQUFBM3NELEdBQUEsT0FBQTJnRSxPQUFBcHRDLE1BQUF2ekIsRUFBQWpCLFlBS0FtMUYsT0FBQU0sT0FBQXhwRSxhQVFBLFNBQUE1b0IsTUFBQTY3QixRQUFBOHpDLE1BQ0EsT0FBQUEsS0FBQTN2RSxNQUFBLElBQUFoRSxPQUFBLElBQUE2L0IsUUFBQTUvQixRQUFBLE1BQUEsT0FBQUEsUUFBQSxRQUFBLGlCQUFBQSxRQUFBLE1BQUEsV0FBQUEsUUFBQSxjQUFBLE9BQUEsSUFBQSxNQWVBLFNBQUFsQyxLQUFBNkQsR0FDQUEsRUFBQTB5QyxpQkFDQTF5QyxFQUFBMnlDLGtCQXFCQSxPQWxCQTl6QyxNQUFBK3lFLFVBQUEsWUFBQTZVLFdBQ0E1bkYsTUFBQSt5RSxVQUFBLFNBQUEyVixRQUNBMW9GLE1BQUEreUUsVUFBQSxXQUFBaWMsVUFDQWh2RixNQUFBK3lFLFVBQUEsZ0JBQUE0YSxlQUNBM3RGLE1BQUEreUUsVUFBQSxlQUFBcWMsY0FDQXB2RixNQUFBK3lFLFVBQUEsV0FBQWtlLFlBQ0FqeEYsTUFBQSt5RSxVQUFBLFNBQUE0ZSxVQUNBM3hGLE1BQUEreUUsVUFBQSxpQkFBQXVmLGdCQUNBdHlGLE1BQUEreUUsVUFBQSxZQUFBZ2dCLGFBQ0EveUYsTUFBQSt5RSxVQUFBLG9CQUFBdWYsZ0JBQ0F0eUYsTUFBQSt5RSxVQUFBLFdBQUFtZ0IsVUFDQWx6RixNQUFBK3lFLFVBQUEsVUFBQW1oQixTQUNBbDBGLE1BQUEreUUsVUFBQSxTQUFBeWhCLFFBanhSQSxTQUFBeDBGLE9BRUEsSUFBQTIyRSxRQUFBMzJFLE1BQUEyMkUsUUFDQTdDLFdBQUE5ekUsTUFBQTh6RSxXQXVCQSxTQUFBOWdELE9BRUF5MkQsU0FBQS9zRixTQUFBa3lDLEtBQUErbkMsU0FFQXBKLFFBQUFTLFFBRUEsSUFBQTZILGlCQUFBLFNBQUFpZ0IsV0FBQSxPQUFBQSxVQUFBbnlGLFFBQUFveUYsaUJBQUFoZ0IsUUFBQXI1RSxVQUNBczVGLFdBQUEsRUFDQUMsU0FBQSxFQUNBQyxlQUFBLEVBQ0E3K0QsWUFBQSxJQUdBcjNCLE1BQUF5MkUsY0FBQSxFQUdBLFNBQUFzZixjQUFBSSxVQUVBLElBQUEvaEUsT0FBQStoRSxTQUFBL2hFLFFBR0EsZUFGQStoRSxTQUFBMzNGLEtBdUNBLFNBQUFpbUUsS0FLQSxJQUpBLElBQUEyeEIsV0FBQTN4QixJQUFBMnhCLFdBQ0FDLGFBQUE1eEIsSUFBQTR4QixhQUdBL3ZGLEVBQUEsRUFBQUEsRUFBQTh2RixXQUFBNXZGLE9BQUFGLElBQ0FtakYsU0FBQTJNLFdBQUE5dkYsR0FBQXF3RSxTQUdBLElBQUEsSUFBQTJmLElBQUEsRUFBQUEsSUFBQUQsYUFBQTd2RixPQUFBOHZGLE1BQ0E3TSxTQUFBNE0sYUFBQUMsS0FBQXhpQixZQUdBLE9BQUEsRUFqREF5aUIsQ0FBQUosVUFPQSxTQUFBMXhCLEtBQ0EsSUFBQXJ3QyxPQUFBcXdDLElBQUFyd0MsT0FDQW9pRSxjQUFBL3hCLElBQUEreEIsY0FHQSxHQUFBLFNBQUFBLGNBQ0EsT0FBQSxFQUdBLElBQUE3cEYsS0FBQXlsRSxpQkFBQW9rQixlQUVBLEdBQUE3cEYsTUFBQUEsUUFBQTNNLE1BQUEsQ0FJQSxHQUFBZ2lFLFFBQUE1dEMsT0FBQW9pRSxlQUVBLE9BREF4MkYsTUFBQTJNLE1BQUF5bkIsU0FDQSxFQUdBLElBQUEyK0MsVUFBQS95RSxNQUFBczJFLGFBQUFsaUQsT0FBQXpuQixNQUVBLE9BQUFvbUUsV0FDQUEsVUFBQXdELFlBQ0EsUUFGQSxHQTVCQWtnQixDQUFBTixZQUVBbjJGLE1BQUF3dkUsT0FBQXA3QyxRQWlEQSxTQUFBcTFELFNBQUFqM0QsS0FBQW5zQixJQUVBLEdBQUEsSUFBQW1zQixLQUFBUCxXQUFBK3ZDLFFBQUF4dkMsS0FBQSxjQU1BLElBRkFuc0IsR0FBQW1zQixNQUNBQSxLQUFBQSxLQUFBZzdCLGtCQUNBaDdCLE1BQUEsQ0FDQSxJQUFBalgsS0FBQWlYLEtBQUEwMEMsbUJBQ0F1aUIsU0FBQWozRCxLQUFBbnNCLElBQ0Ftc0IsS0FBQWpYLE1BMUdBLHFCQUFBM2QsU0FJQWxCLFNBQUFreUMsS0FFQTViLE9BSUEsSUFBQTZpRCxpQkFBQSxXQUVBbjVFLFNBQUFreUMsT0FDQW50QyxLQUFBcXlFLGFBQ0E5Z0QsVUFHQStpRCxRQUFBcjVFLFVBQUFzNUYsV0FBQSxFQUFBQyxTQUFBLEtBOHZSQVMsQ0FBQTEyRixPQUdBQSIsImZpbGUiOiJzY3JpcHQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuKGZ1bmN0aW9uKCl7IC8vIFVzZSBhIGNsb3N1cmUgdG8gYXZvaWQgcG9sbHV0aW5nIGdsb2JhbCBzY29wZVxuICAgIC8vIFRPRE86IFRoaXMgbmVlZHMgdG8gYmUgYnVpbHQgaW50byB0aGUgamFtcyBzeXN0ZW1cbiAgICBjb25zdCBzdGFydGphbSA9IG5ldyBEYXRlKERhdGUuVVRDKDIwMTgsIDIsIDIzKSk7XG4gICAgY29uc3QgZW5kamFtID0gbmV3IERhdGUoRGF0ZS5VVEMoMjAxOCwgMiwgMjYpKTtcblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgbGV0IGdvYWw7XG5cbiAgICBpZiAobm93ICsgMTAwMCA8IGVuZGphbS5nZXRUaW1lKCkpIHsgLy8gT25seSBkbyBhbnl0aGluZyBpZiB0aGUgamFtIGhhc24ndCBlbmRlZFxuICAgICAgICBVSWtpdC5ub3RpZmljYXRpb24oIC8vIFNwYXduIHRoZSBub3RpZmljYXRpb25cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBcIm1lc3NhZ2VcIjogXCJcIlxuICAgICAgICAgICAgICAgICAgKyBcIjxkaXYgY2xhc3M9J3VrLXRleHQtY2VudGVyJz5cIlxuICAgICAgICAgICAgICAgICAgKyBcIiAgICA8c3BhbiBpZD1cXFwiY291bnRkb3duLXRpdGxlXFxcIiBjbGFzcz1cXFwidWstdGV4dC1jZW50ZXJcXFwiPlwiXG4gICAgICAgICAgICAgICAgICArIFwiICAgICAgICA8YSBocmVmPVxcXCIvaW5mby9qYW1zXFxcIj5Db2RlIEphbTwvYT4gQ291bnRkb3duXCJcbiAgICAgICAgICAgICAgICAgICsgXCIgICAgPC9zcGFuPlwiXG4gICAgICAgICAgICAgICAgICArIFwiICAgIDxwIGNsYXNzPSd1ay10ZXh0LWxhcmdlJyBpZD1cXFwiY291bnRkb3duLXJlbWFpbmluZ1xcXCI+Li4uPC9wPlwiXG4gICAgICAgICAgICAgICAgICArIFwiPHNtYWxsIHN0eWxlPSdmb250LXNpemU6IDAuNmVtOyc+KFRhcC9jbGljayB0byBkaXNtaXNzKTwvc21hbGw+XCJcbiAgICAgICAgICAgICAgICAgICsgXCI8L2Rpdj5cIixcbiAgICAgICAgICAgICAgICBcInBvc1wiOiBcImJvdHRvbS1yaWdodFwiLFxuICAgICAgICAgICAgICAgIFwidGltZW91dFwiOiBlbmRqYW0gLSBub3dcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBoZWFkaW5nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb3VudGRvd24tdGl0bGVcIik7XG5cbiAgICAgICAgaWYgKG5vdyA+IHN0YXJ0amFtLmdldFRpbWUoKSkgeyAvLyBKYW0ncyBhbHJlYWR5IHN0YXJ0ZWRcbiAgICAgICAgICAgIGhlYWRpbmcuaW5uZXJIVE1MID0gXCJDdXJyZW50IDxhIGhyZWY9XFxcIi9pbmZvL2phbXNcXFwiPmNvZGUgamFtPC9hPiBlbmRzIGluLi4uXCI7XG4gICAgICAgICAgICBnb2FsID0gZW5kamFtLmdldFRpbWUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhlYWRpbmcuaW5uZXJIVE1MID0gXCJOZXh0IDxhIGhyZWY9XFxcIi9pbmZvL2phbXNcXFwiPmNvZGUgamFtPC9hPiBzdGFydHMgaW4uLi5cIjtcbiAgICAgICAgICAgIGdvYWwgPSBzdGFydGphbS5nZXRUaW1lKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZWZyZXNoQ291bnRkb3duID0gc2V0SW50ZXJ2YWwoKCkgPT4geyAvLyBDcmVhdGUgYSByZXBlYXRpbmcgdGFza1xuICAgICAgICAgICAgbGV0IGRlbHRhID0gZ29hbCAtIERhdGUubm93KCk7IC8vIFRpbWUgdW50aWwgdGhlIGdvYWwgaXMgbWV0XG5cbiAgICAgICAgICAgIGlmIChkZWx0YSA8PSAxMDAwKSB7IC8vIEdvYWwgaGFzIGJlZW4gbWV0LCBiZXN0IHJlbG9hZFxuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwocmVmcmVzaENvdW50ZG93bik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgZGF5cyA9IE1hdGguZmxvb3IoZGVsdGEgLyAoMjQgKiA2MCAqIDYwICogMTAwMCkpO1xuICAgICAgICAgICAgZGVsdGEgLT0gZGF5cyAqICgyNCAqIDYwICogNjAgKiAxMDAwKTtcblxuICAgICAgICAgICAgbGV0IGhvdXJzID0gTWF0aC5mbG9vcihkZWx0YSAvICg2MCAqIDYwICogMTAwMCkpO1xuICAgICAgICAgICAgZGVsdGEgLT0gaG91cnMgKiAoNjAgKiA2MCAqIDEwMDApO1xuXG4gICAgICAgICAgICBsZXQgbWludXRlcyA9IE1hdGguZmxvb3IoZGVsdGEgLyAoNjAgKiAxMDAwKSk7XG4gICAgICAgICAgICBkZWx0YSAtPSBtaW51dGVzICogKDYwICogMTAwMCk7XG5cbiAgICAgICAgICAgIGxldCBzZWNvbmRzID0gTWF0aC5mbG9vcihkZWx0YSAvIDEwMDApO1xuXG4gICAgICAgICAgICBpZiAoZGF5cyA8IDEwKSB7XG4gICAgICAgICAgICAgICAgZGF5cyA9IGAwJHtkYXlzfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChob3VycyA8IDEwKSB7XG4gICAgICAgICAgICAgICAgaG91cnMgPSBgMCR7aG91cnN9YDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG1pbnV0ZXMgPCAxMCkge1xuICAgICAgICAgICAgICAgIG1pbnV0ZXMgPSBgMCR7bWludXRlc31gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2Vjb25kcyA8IDEwKSB7XG4gICAgICAgICAgICAgICAgc2Vjb25kcyA9IGAwJHtzZWNvbmRzfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb3VudGRvd24tcmVtYWluaW5nXCIpLmlubmVySFRNTCA9IGAke2RheXN9OiR7aG91cnN9OiR7bWludXRlc306JHtzZWNvbmRzfWA7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7IC8vIE5vdGlmaWNhdGlvbiB3YXMgcHJvYmFibHkgY2xvc2VkLCBzbyB3ZSBjYW4gc3RvcCBjb3VudGluZ1xuICAgICAgICAgICAgICAgIHJldHVybiBjbGVhckludGVydmFsKHJlZnJlc2hDb3VudGRvd24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCA1MDApO1xuICAgIH1cbn0pKCk7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLyogZXhwb3J0ZWQgZXJyb3JfdHlwZXdyaXRlciAqL1xuXG5mdW5jdGlvbiBlcnJvcl90eXBld3JpdGVyKCkge1xuICAgIGNvbnN0IGFwcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZXJyb3JcIik7XG5cbiAgICBjb25zdCB0eXBld3JpdGVyID0gbmV3IFR5cGV3cml0ZXIoYXBwLCB7XG4gICAgICAgIFwibG9vcFwiOiBmYWxzZSxcbiAgICAgICAgXCJkZWxldGVTcGVlZFwiOiA0MCxcbiAgICAgICAgXCJ0eXBpbmdTcGVlZFwiOiBcIm5hdHVyYWxcIixcbiAgICAgICAgXCJkZXZNb2RlXCI6IGZhbHNlXG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBjbG9zZVdpbmRvdygpIHtcbiAgICAgICAgY29uc3QgYXBwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ3aW5cIik7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRfY2xhc3MgPSBhcHAuZ2V0QXR0cmlidXRlKFwiY2xhc3NcIik7XG4gICAgICAgIGFwcC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCBgJHtjdXJyZW50X2NsYXNzIH0gdWstYW5pbWF0aW9uLXNjYWxlLXVwIHVrLWFuaW1hdGlvbi1yZXZlcnNlYCk7XG4gICAgICAgIHR5cGV3cml0ZXIuc3RvcCgpO1xuICAgIH1cblxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGVybWluYWwtY2xvc2VcIikub25jbGljayA9IGNsb3NlV2luZG93O1xuXG4gICAgdHlwZXdyaXRlci5hcHBlbmRUZXh0KFwiUHl0aG9uIDMuNi40IChkZWZhdWx0LCBKYW4gIDUgMjAxOCwgMDI6MzU6NDApXFxuXCIpXG4gICAgICAgIC5hcHBlbmRUZXh0KFwiW0dDQyA3LjIuMSAyMDE3MTIyNF0gb24gZGFyd2luXFxuXCIpXG4gICAgICAgIC5hcHBlbmRUZXh0KFwiVHlwZSBcXFwiaGVscFxcXCIsIFxcXCJjb3B5cmlnaHRcXFwiLCBcXFwiY3JlZGl0c1xcXCIgb3IgXFxcImxpY2Vuc2VcXFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxcblwiKVxuICAgICAgICAuYXBwZW5kVGV4dChcIj4+PiBcIilcbiAgICAgICAgLnBhdXNlRm9yKDEwMDApXG4gICAgICAgIC50eXBlU3RyaW5nKFwiaW1wb3IgcmVxdWVzdHNcIilcbiAgICAgICAgLmRlbGV0ZUNoYXJzKDkpXG4gICAgICAgIC50eXBlU3RyaW5nKFwidCByZXF1ZXN0c1xcblwiKVxuICAgICAgICAuYXBwZW5kVGV4dChcIj4+PiBcIilcbiAgICAgICAgLnBhdXNlRm9yKDc1MClcbiAgICAgICAgLmNoYW5nZVNldHRpbmdzKHtcInR5cGluZ1NwZWVkXCI6IFwibmF0dXJhbFwifSlcbiAgICAgICAgLnR5cGVTdHJpbmcoYHJlc3BvbnNlID0gcmVxdWVzdHMuJHsgd2luZG93Ll9SZXF1ZXN0TWV0aG9kIH0oJ2h0dHBzOi8vcHl0aGltYClcbiAgICAgICAgLmRlbGV0ZUNoYXJzKDIpXG4gICAgICAgIC50eXBlU3RyaW5nKFwib25kaXNjb3JkLmNvbi9cIilcbiAgICAgICAgLmRlbGV0ZUNoYXJzKDIpXG4gICAgICAgIC50eXBlU3RyaW5nKGBtJHsgd2luZG93Ll9QYXRoIH0nKVxcbmApXG4gICAgICAgIC5wYXVzZUZvcigxMDAwKVxuICAgICAgICAuYXBwZW5kVGV4dChgJmx0O1Jlc3BvbnNlIFskeyB3aW5kb3cuX0NvZGUgfV0mZ3Q7XFxuPj4+IGApXG4gICAgICAgIC50eXBlU3RyaW5nKFwiIyBobW1tbVwiKVxuICAgICAgICAucGF1c2VGb3IoMTAwMClcbiAgICAgICAgLmRlbGV0ZUNoYXJzKDcpXG4gICAgICAgIC5wYXVzZUZvcigxMDAwKVxuICAgICAgICAudHlwZVN0cmluZyhcInJlc3BvbnNlLnRleHRcXG5cIilcbiAgICAgICAgLmFwcGVuZFRleHQoYCR7IHdpbmRvdy5fRXJyb3JNc2cgfVxcbj4+PiBgKVxuICAgICAgICAuc3RhcnQoKTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBnZXRTY3JpcHQodXJsLCBpbnRlZ3JpdHksIGNyb3NzX29yaWdpbikge1xuICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XG4gICAgc2NyaXB0LnR5cGUgPSBcInRleHQvamF2YXNjcmlwdFwiO1xuICAgIHNjcmlwdC5zcmMgPSB1cmw7XG4gICAgc2NyaXB0LmRlZmVyID0gdHJ1ZTtcblxuICAgIGlmIChpbnRlZ3JpdHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzY3JpcHQuaW50ZWdyaXR5ID0gaW50ZWdyaXR5O1xuICAgIH1cblxuICAgIGlmIChjcm9zc19vcmlnaW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzY3JpcHQuY3Jvc3NPcmlnaW4gPSBjcm9zc19vcmlnaW47XG4gICAgfVxuXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdLmFwcGVuZENoaWxkKHNjcmlwdCk7XG59XG5cbmZ1bmN0aW9uIHNldENsYXNzKHNlbGVjdG9yLCBteV9jbGFzcykge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTtcbiAgICAvLyBjb25zb2xlLmxvZyhlbGVtZW50KTtcbiAgICBlbGVtZW50LmNsYXNzTmFtZSA9IG15X2NsYXNzO1xufVxuXG5mdW5jdGlvbiByZW1vdmVDbGFzcyhzZWxlY3RvciwgbXlfY2xhc3MpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG4gICAgY29uc3QgcmVnID0gbmV3IFJlZ0V4cChgKF58ICkke215X2NsYXNzfSgkfCApYCwgXCJnXCIpO1xuICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gZWxlbWVudC5jbGFzc05hbWUucmVwbGFjZShyZWcsIFwiIFwiKTtcbn1cblxuLy8gaGlkZSB0aGUgaHRtbCB3aGVuIHRoZSBwYWdlIGxvYWRzLCBidXQgb25seSBpZiBqcyBpcyB0dXJuZWQgb24uXG5zZXRDbGFzcyhcImh0bWxcIiwgXCJwcmV2ZW50LWZvdWNcIik7XG5cbi8vIHdoZW4gdGhlIERPTSBoYXMgZmluaXNoZWQgbG9hZGluZywgdW5oaWRlIHRoZSBodG1sXG5kb2N1bWVudC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09IFwiaW50ZXJhY3RpdmVcIikge1xuICAgICAgICByZW1vdmVDbGFzcyhcImh0bWxcIiwgXCJwcmV2ZW50LWZvdWNcIik7XG4gICAgICAgIGdldFNjcmlwdChcbiAgICAgICAgICAgIFwiaHR0cHM6Ly9wcm8uZm9udGF3ZXNvbWUuY29tL3JlbGVhc2VzL3Y1LjAuMTMvanMvYWxsLmpzXCIsIC8vIFVSTFxuICAgICAgICAgICAgXCJzaGEzODQtZDg0TEdnMnBtOUtoUjRtQ0FzM04yOUdRNE9ZTnkrSytGQkhYOFdoaW1IcFBtODZjODM5KytNREFCZWdyWjNnblwiLCAvLyBJbnRlZ3JpdHlcbiAgICAgICAgICAgIFwiYW5vbnltb3VzXCIgLy8gQ3Jvc3Mtb3JpZ2luXG4gICAgICAgICk7XG4gICAgICAgIGdldFNjcmlwdChcbiAgICAgICAgICAgIFwiaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvYWNlLzEuMy4zL2FjZS5qc1wiXG4gICAgICAgICk7XG4gICAgICAgIGdldFNjcmlwdChcbiAgICAgICAgICAgIFwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9mbGF0cGlja3JcIlxuICAgICAgICApO1xuICAgIH1cbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLyogZXhwb3J0ZWQgSmFtQWN0aW9ucyAqL1xuXG5jbGFzcyBKYW1BY3Rpb25zIHtcbiAgICBjb25zdHJ1Y3Rvcih1cmwsIGNzcmZfdG9rZW4pIHtcbiAgICAgICAgdGhpcy51cmwgPSB1cmw7XG4gICAgICAgIHRoaXMuY3NyZl90b2tlbiA9IGNzcmZfdG9rZW47XG4gICAgfVxuXG4gICAgc2VuZChhY3Rpb24sIG1ldGhvZCwgZGF0YSwgY2FsbGJhY2spIHtcbiAgICAgICAgZGF0YVtcImFjdGlvblwiXSA9IGFjdGlvbjtcblxuICAgICAgICAkLmFqYXgodGhpcy51cmwsIHtcbiAgICAgICAgICAgIFwiZGF0YVwiOiBkYXRhLFxuICAgICAgICAgICAgXCJkYXRhVHlwZVwiOiBcImpzb25cIixcbiAgICAgICAgICAgIFwiaGVhZGVyc1wiOiB7XCJYLUNTUkZUb2tlblwiOiB0aGlzLmNzcmZfdG9rZW59LFxuICAgICAgICAgICAgXCJtZXRob2RcIjogbWV0aG9kLFxuICAgICAgICB9KS5kb25lKGRhdGEgPT4ge1xuICAgICAgICAgICAgaWYgKFwiZXJyb3JfY29kZVwiIGluIGRhdGEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZmFsc2UsIGRhdGEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sodHJ1ZSwgZGF0YSk7XG4gICAgICAgIH0pLmZhaWwoKCkgPT4gY2FsbGJhY2soZmFsc2UpKTtcbiAgICB9XG5cbiAgICBzZW5kX2pzb24oYWN0aW9uLCBtZXRob2QsIGRhdGEsIGNhbGxiYWNrKSB7XG4gICAgICAgIGRhdGFbXCJhY3Rpb25cIl0gPSBhY3Rpb247XG5cbiAgICAgICAgJC5hamF4KHRoaXMudXJsLCB7XG4gICAgICAgICAgICBcImRhdGFcIjogSlNPTi5zdHJpbmdpZnkoZGF0YSksXG4gICAgICAgICAgICBcImRhdGFUeXBlXCI6IFwianNvblwiLFxuICAgICAgICAgICAgXCJoZWFkZXJzXCI6IHtcIlgtQ1NSRlRva2VuXCI6IHRoaXMuY3NyZl90b2tlbn0sXG4gICAgICAgICAgICBcIm1ldGhvZFwiOiBtZXRob2RcbiAgICAgICAgfSkuZG9uZShkYXRhID0+IHtcbiAgICAgICAgICAgIGlmIChcImVycm9yX2NvZGVcIiBpbiBkYXRhKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGZhbHNlLCBkYXRhKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKHRydWUsIGRhdGEpO1xuICAgICAgICB9KS5mYWlsKCgpID0+IGNhbGxiYWNrKGZhbHNlKSk7XG4gICAgfVxuXG4gICAgc2V0X3N0YXRlKGphbSwgc3RhdGUsIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwic3RhdGVcIixcbiAgICAgICAgICAgIFwiUE9TVFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiamFtXCI6IGphbSxcbiAgICAgICAgICAgICAgICBcInN0YXRlXCI6IHN0YXRlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRfcXVlc3Rpb25zKGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwicXVlc3Rpb25zXCIsXG4gICAgICAgICAgICBcIkdFVFwiLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGNyZWF0ZV9xdWVzdGlvbihkYXRhLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmRfanNvbihcbiAgICAgICAgICAgIFwicXVlc3Rpb25zXCIsXG4gICAgICAgICAgICBcIlBPU1RcIixcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGRlbGV0ZV9xdWVzdGlvbihpZCwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJxdWVzdGlvblwiLFxuICAgICAgICAgICAgXCJERUxFVEVcIixcbiAgICAgICAgICAgIHtcImlkXCI6IGlkfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYXNzb2NpYXRlX3F1ZXN0aW9uKGZvcm0sIHF1ZXN0aW9uLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmQoXG4gICAgICAgICAgICBcImFzc29jaWF0ZV9xdWVzdGlvblwiLFxuICAgICAgICAgICAgXCJQT1NUXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJmb3JtXCI6IGZvcm0sXG4gICAgICAgICAgICAgICAgXCJxdWVzdGlvblwiOiBxdWVzdGlvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGRpc2Fzc29jaWF0ZV9xdWVzdGlvbihmb3JtLCBxdWVzdGlvbiwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJkaXNhc3NvY2lhdGVfcXVlc3Rpb25cIixcbiAgICAgICAgICAgIFwiUE9TVFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiZm9ybVwiOiBmb3JtLFxuICAgICAgICAgICAgICAgIFwicXVlc3Rpb25cIjogcXVlc3Rpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjcmVhdGVfaW5mcmFjdGlvbihpZCwgcmVhc29uLCBudW1iZXIsIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwiaW5mcmFjdGlvblwiLFxuICAgICAgICAgICAgXCJQT1NUXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJwYXJ0aWNpcGFudFwiOiBpZCxcbiAgICAgICAgICAgICAgICBcInJlYXNvblwiOiByZWFzb24sXG4gICAgICAgICAgICAgICAgXCJudW1iZXJcIjogbnVtYmVyXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBkZWxldGVfaW5mcmFjdGlvbihpZCwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJpbmZyYWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRFTEVURVwiLFxuICAgICAgICAgICAge1wiaWRcIjogaWR9LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhcHByb3ZlX2FwcGxpY2F0aW9uKGlkLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmQoXG4gICAgICAgICAgICBcImFwcHJvdmVfYXBwbGljYXRpb25cIixcbiAgICAgICAgICAgIFwiUE9TVFwiLFxuICAgICAgICAgICAge1wiaWRcIjogaWR9LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB1bmFwcHJvdmVfYXBwbGljYXRpb24oaWQsIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwidW5hcHByb3ZlX2FwcGxpY2F0aW9uXCIsXG4gICAgICAgICAgICBcIlBPU1RcIixcbiAgICAgICAgICAgIHtcImlkXCI6IGlkfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGV4cG9ydGVkIHJldmlzaW9uX2RpZmYgKi9cblxuZnVuY3Rpb24gcmV2aXNpb25fZGlmZihyZXZpc2lvbnMpIHtcbiAgICBjb25zdCBidXR0b25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInRkIGlucHV0XCIpOyAvLyBGZXRjaCBhbGwgcmFkaW8gYnV0dG9uc1xuICAgIGNvbnN0IGlkX3JlZyA9IC9jb21wYXJlLShiZWZvcmV8YWZ0ZXIpLShbXFx3fC1dKykvOyAvLyBNYXRjaGVzIGNvbXBhcmUtYWZ0ZXIvYmVmb3JlLUlEXG5cblxuICAgIGZ1bmN0aW9uIGdldFJldmlzaW9uSWQoZWxlbWVudCl7XG4gICAgICAgIGNvbnN0IGUgPSBlbGVtZW50LmlkLm1hdGNoKGlkX3JlZyk7IC8vIE1hdGNoIElEIHdpdGggUmVnRXhwXG4gICAgICAgIHJldHVybiBbZVsxXSwgZVsyXV07IC8vIGUgaXMgaW4gZm9ybWF0IG9mIFtmdWxsIGlkLCBhZnRlci9iZWZvcmUsIElEXSB3ZSBvbmx5IHdhbnQgSUQgJiBtb2RlXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UmV2aXNpb24oaWQpIHtcbiAgICAgICAgY29uc3QgZSA9IHJldmlzaW9ucy5maWx0ZXIoKHgpID0+IHtcbiAgICAgICAgICAgIC8vIEZpbHRlciB0aHJvdWdoIGFsbCByZXZpc2lvbnMgdG8gZmluZCB0aGUgc2VsZWN0ZWQgb25lIChyZXZpc2lvbnMgaW4gZGVjbGFyZWQgaW4gdGhlIHRlbXBsYXRlKVxuICAgICAgICAgICAgcmV0dXJuIHguaWQgPT09IGlkO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGVbMF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmFkaW9CdXR0b25DaGVja2VkKGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgaWQgPSBnZXRSZXZpc2lvbklkKGVsZW1lbnQpO1xuICAgICAgICBjb25zdCByZXYgPSBnZXRSZXZpc2lvbihpZFsxXSk7XG4gICAgICAgIGlmIChpZFswXSA9PT0gXCJhZnRlclwiKXtcbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgKiBEZXNlbGVjdCB0aGUgb3Bwb3NpdGUgY2hlY2tib3ggdG8gdGhlIG9uZSB3aGljaCBoYXMgYmVlbiBjaGVja2VkXG4gICAgICAgICAgICAgKiBiZWNhdXNlIHdlIGRvbid0IHdhbnQgY2hlY2tpbmcgb2YgdGhlIHNhbWUgcmV2aXNpb25cbiAgICAgICAgICAgICAqL1xuXG4gICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjY29tcGFyZS1iZWZvcmUtJHtpZFsxXX1gKS5jaGVja2VkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGJ1dHRvbnMuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChnZXRSZXZpc2lvbklkKGUpWzBdID09PSBcImFmdGVyXCIgJiYgZS5pZCAhPT0gZWxlbWVudC5pZCkgeyAvLyBEZXNlbGVjdCBhbGwgY2hlY2tib3hlcyBpbiB0aGUgc2FtZSByb3dcbiAgICAgICAgICAgICAgICAgICAgZS5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7IC8vIFRoaXMgZWxzZSBkb2VzIHRoZSBzYW1lIGFzIGFib3ZlIGJ1dCBmb3IgdGhlIGJlZm9yZSBjb2x1bW5cbiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCNjb21wYXJlLWFmdGVyLSR7aWRbMV19YCkuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgYnV0dG9ucy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGdldFJldmlzaW9uSWQoZSlbMF0gPT09IFwiYmVmb3JlXCIgJiYgZS5pZCAhPT0gZWxlbWVudC5pZCkge1xuICAgICAgICAgICAgICAgICAgICBlLmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBUaGlzIG1ha2VzIHN1cmUgdGhhdCB5b3UgZG8gbm90IGNvbXBhcmUgYSBuZXcgcmV2aXNpb24gd2l0aCBhbiBvbGQgb25lXG4gICAgICAgICAgICAgICAgaWYgKGdldFJldmlzaW9uSWQoZSlbMF0gPT09IFwiYWZ0ZXJcIikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0bXByZXYgPSBnZXRSZXZpc2lvbihnZXRSZXZpc2lvbklkKGUpWzFdKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2codG1wcmV2KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRtcHJldi5kYXRlIDw9IHJldi5kYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtlLmlkfWApLnNldEF0dHJpYnV0ZShcImRpc2FibGVkXCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7ZS5pZH1gKS5yZW1vdmVBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGFmdCwgYmVmO1xuXG4gICAgICAgIGJ1dHRvbnMuZm9yRWFjaCgoYnV0dG9uKSA9PiB7IC8vIEZpbmQgdGhlIHNlbGVjdGVkIHBvc3RzXG4gICAgICAgICAgICBjb25zdCBpZCA9IGdldFJldmlzaW9uSWQoYnV0dG9uKTtcbiAgICAgICAgICAgIGlmIChidXR0b24uY2hlY2tlZCAmJiBpZFswXSA9PT0gXCJiZWZvcmVcIikge1xuICAgICAgICAgICAgICAgIGJlZiA9IGlkWzFdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYnV0dG9uLmNoZWNrZWQgJiYgaWRbMF0gPT09IFwiYWZ0ZXJcIikge1xuICAgICAgICAgICAgICAgIGFmdCA9IGlkWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTd2l0Y2ggdGhlIGJ1dHRvbnMgSFJFRiB0byBwb2ludCB0byB0aGUgY29ycmVjdCBjb21wYXJlIFVSTFxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvbXBhcmUtc3VibWl0XCIpLmhyZWYgPSBgL2hpc3RvcnkvY29tcGFyZS8ke2JlZn0vJHthZnR9YDtcblxuICAgIH1cblxuICAgIGJ1dHRvbnMuZm9yRWFjaCgoYnV0dG9uKSA9PiB7XG4gICAgICAgIGJ1dHRvbi5jaGVja2VkID0gZmFsc2U7IC8vIFNvbWUgYnJvd3NlcnMgcmVtZW1iZXIgaWYgYSBidXR0b24gaXMgY2hlY2tlZC5cbiAgICAgICAgYnV0dG9uLm9uY2hhbmdlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByYWRpb0J1dHRvbkNoZWNrZWQoYnV0dG9uKTtcbiAgICAgICAgfTtcbiAgICB9KTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBleHBvcnRlZCB3aWtpX3NpZGViYXIgKi9cblxuZnVuY3Rpb24gd2lraV9zaWRlYmFyKCl7XG4gICAgY29uc3QgdmlzaWJsZV9jbGFzcyA9IFwidWstdmlzaWJsZUBzXCI7XG4gICAgY29uc3Qgc2lkZWJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwid2lraS1zaWRlYmFyXCIpO1xuICAgIGNvbnN0IGRpc3BsYXlfYnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ3aWtpLXNpZGViYXItYnV0dG9uXCIpO1xuXG4gICAgZGlzcGxheV9idXR0b24ub25jbGljayA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAoc2lkZWJhci5jbGFzc0xpc3QuY29udGFpbnModmlzaWJsZV9jbGFzcykpIHtcbiAgICAgICAgICAgIHNpZGViYXIuY2xhc3NMaXN0LnJlbW92ZSh2aXNpYmxlX2NsYXNzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNpZGViYXIuY2xhc3NMaXN0LmFkZCh2aXNpYmxlX2NsYXNzKTtcbiAgICAgICAgfVxuICAgIH07XG59XG4iLCIvLyEgbW9tZW50LmpzXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpIDpcbiAgICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoZmFjdG9yeSkgOlxuICAgIGdsb2JhbC5tb21lbnQgPSBmYWN0b3J5KClcbn0odGhpcywgKGZ1bmN0aW9uICgpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgdmFyIGhvb2tDYWxsYmFjaztcblxuICAgIGZ1bmN0aW9uIGhvb2tzICgpIHtcbiAgICAgICAgcmV0dXJuIGhvb2tDYWxsYmFjay5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgaXMgZG9uZSB0byByZWdpc3RlciB0aGUgbWV0aG9kIGNhbGxlZCB3aXRoIG1vbWVudCgpXG4gICAgLy8gd2l0aG91dCBjcmVhdGluZyBjaXJjdWxhciBkZXBlbmRlbmNpZXMuXG4gICAgZnVuY3Rpb24gc2V0SG9va0NhbGxiYWNrIChjYWxsYmFjaykge1xuICAgICAgICBob29rQ2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0FycmF5KGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dCBpbnN0YW5jZW9mIEFycmF5IHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IEFycmF5XSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPYmplY3QoaW5wdXQpIHtcbiAgICAgICAgLy8gSUU4IHdpbGwgdHJlYXQgdW5kZWZpbmVkIGFuZCBudWxsIGFzIG9iamVjdCBpZiBpdCB3YXNuJ3QgZm9yXG4gICAgICAgIC8vIGlucHV0ICE9IG51bGxcbiAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgT2JqZWN0XSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPYmplY3RFbXB0eShvYmopIHtcbiAgICAgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKSB7XG4gICAgICAgICAgICByZXR1cm4gKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikubGVuZ3RoID09PSAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBrO1xuICAgICAgICAgICAgZm9yIChrIGluIG9iaikge1xuICAgICAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoaykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNVbmRlZmluZWQoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09PSB2b2lkIDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNOdW1iZXIoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgTnVtYmVyXSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEYXRlKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dCBpbnN0YW5jZW9mIERhdGUgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1hcChhcnIsIGZuKSB7XG4gICAgICAgIHZhciByZXMgPSBbXSwgaTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGFyci5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgcmVzLnB1c2goZm4oYXJyW2ldLCBpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYXNPd25Qcm9wKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLCBiKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBleHRlbmQoYSwgYikge1xuICAgICAgICBmb3IgKHZhciBpIGluIGIpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKGIsIGkpKSB7XG4gICAgICAgICAgICAgICAgYVtpXSA9IGJbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzT3duUHJvcChiLCAndG9TdHJpbmcnKSkge1xuICAgICAgICAgICAgYS50b1N0cmluZyA9IGIudG9TdHJpbmc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzT3duUHJvcChiLCAndmFsdWVPZicpKSB7XG4gICAgICAgICAgICBhLnZhbHVlT2YgPSBiLnZhbHVlT2Y7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVVVEMgKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0KSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2NhbE9yVVRDKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0LCB0cnVlKS51dGMoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWZhdWx0UGFyc2luZ0ZsYWdzKCkge1xuICAgICAgICAvLyBXZSBuZWVkIHRvIGRlZXAgY2xvbmUgdGhpcyBvYmplY3QuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbXB0eSAgICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgIHVudXNlZFRva2VucyAgICA6IFtdLFxuICAgICAgICAgICAgdW51c2VkSW5wdXQgICAgIDogW10sXG4gICAgICAgICAgICBvdmVyZmxvdyAgICAgICAgOiAtMixcbiAgICAgICAgICAgIGNoYXJzTGVmdE92ZXIgICA6IDAsXG4gICAgICAgICAgICBudWxsSW5wdXQgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgIGludmFsaWRNb250aCAgICA6IG51bGwsXG4gICAgICAgICAgICBpbnZhbGlkRm9ybWF0ICAgOiBmYWxzZSxcbiAgICAgICAgICAgIHVzZXJJbnZhbGlkYXRlZCA6IGZhbHNlLFxuICAgICAgICAgICAgaXNvICAgICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICBwYXJzZWREYXRlUGFydHMgOiBbXSxcbiAgICAgICAgICAgIG1lcmlkaWVtICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICByZmMyODIyICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgIHdlZWtkYXlNaXNtYXRjaCA6IGZhbHNlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UGFyc2luZ0ZsYWdzKG0pIHtcbiAgICAgICAgaWYgKG0uX3BmID09IG51bGwpIHtcbiAgICAgICAgICAgIG0uX3BmID0gZGVmYXVsdFBhcnNpbmdGbGFncygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtLl9wZjtcbiAgICB9XG5cbiAgICB2YXIgc29tZTtcbiAgICBpZiAoQXJyYXkucHJvdG90eXBlLnNvbWUpIHtcbiAgICAgICAgc29tZSA9IEFycmF5LnByb3RvdHlwZS5zb21lO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNvbWUgPSBmdW5jdGlvbiAoZnVuKSB7XG4gICAgICAgICAgICB2YXIgdCA9IE9iamVjdCh0aGlzKTtcbiAgICAgICAgICAgIHZhciBsZW4gPSB0Lmxlbmd0aCA+Pj4gMDtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChpIGluIHQgJiYgZnVuLmNhbGwodGhpcywgdFtpXSwgaSwgdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNWYWxpZChtKSB7XG4gICAgICAgIGlmIChtLl9pc1ZhbGlkID09IG51bGwpIHtcbiAgICAgICAgICAgIHZhciBmbGFncyA9IGdldFBhcnNpbmdGbGFncyhtKTtcbiAgICAgICAgICAgIHZhciBwYXJzZWRQYXJ0cyA9IHNvbWUuY2FsbChmbGFncy5wYXJzZWREYXRlUGFydHMsIGZ1bmN0aW9uIChpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGkgIT0gbnVsbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIGlzTm93VmFsaWQgPSAhaXNOYU4obS5fZC5nZXRUaW1lKCkpICYmXG4gICAgICAgICAgICAgICAgZmxhZ3Mub3ZlcmZsb3cgPCAwICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLmVtcHR5ICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLmludmFsaWRNb250aCAmJlxuICAgICAgICAgICAgICAgICFmbGFncy5pbnZhbGlkV2Vla2RheSAmJlxuICAgICAgICAgICAgICAgICFmbGFncy53ZWVrZGF5TWlzbWF0Y2ggJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3MubnVsbElucHV0ICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLmludmFsaWRGb3JtYXQgJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3MudXNlckludmFsaWRhdGVkICYmXG4gICAgICAgICAgICAgICAgKCFmbGFncy5tZXJpZGllbSB8fCAoZmxhZ3MubWVyaWRpZW0gJiYgcGFyc2VkUGFydHMpKTtcblxuICAgICAgICAgICAgaWYgKG0uX3N0cmljdCkge1xuICAgICAgICAgICAgICAgIGlzTm93VmFsaWQgPSBpc05vd1ZhbGlkICYmXG4gICAgICAgICAgICAgICAgICAgIGZsYWdzLmNoYXJzTGVmdE92ZXIgPT09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3MudW51c2VkVG9rZW5zLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgICAgICAgICBmbGFncy5iaWdIb3VyID09PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChPYmplY3QuaXNGcm96ZW4gPT0gbnVsbCB8fCAhT2JqZWN0LmlzRnJvemVuKG0pKSB7XG4gICAgICAgICAgICAgICAgbS5faXNWYWxpZCA9IGlzTm93VmFsaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNOb3dWYWxpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbS5faXNWYWxpZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVJbnZhbGlkIChmbGFncykge1xuICAgICAgICB2YXIgbSA9IGNyZWF0ZVVUQyhOYU4pO1xuICAgICAgICBpZiAoZmxhZ3MgIT0gbnVsbCkge1xuICAgICAgICAgICAgZXh0ZW5kKGdldFBhcnNpbmdGbGFncyhtKSwgZmxhZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKG0pLnVzZXJJbnZhbGlkYXRlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICAvLyBQbHVnaW5zIHRoYXQgYWRkIHByb3BlcnRpZXMgc2hvdWxkIGFsc28gYWRkIHRoZSBrZXkgaGVyZSAobnVsbCB2YWx1ZSksXG4gICAgLy8gc28gd2UgY2FuIHByb3Blcmx5IGNsb25lIG91cnNlbHZlcy5cbiAgICB2YXIgbW9tZW50UHJvcGVydGllcyA9IGhvb2tzLm1vbWVudFByb3BlcnRpZXMgPSBbXTtcblxuICAgIGZ1bmN0aW9uIGNvcHlDb25maWcodG8sIGZyb20pIHtcbiAgICAgICAgdmFyIGksIHByb3AsIHZhbDtcblxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2lzQU1vbWVudE9iamVjdCkpIHtcbiAgICAgICAgICAgIHRvLl9pc0FNb21lbnRPYmplY3QgPSBmcm9tLl9pc0FNb21lbnRPYmplY3Q7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9pKSkge1xuICAgICAgICAgICAgdG8uX2kgPSBmcm9tLl9pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fZikpIHtcbiAgICAgICAgICAgIHRvLl9mID0gZnJvbS5fZjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2wpKSB7XG4gICAgICAgICAgICB0by5fbCA9IGZyb20uX2w7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9zdHJpY3QpKSB7XG4gICAgICAgICAgICB0by5fc3RyaWN0ID0gZnJvbS5fc3RyaWN0O1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fdHptKSkge1xuICAgICAgICAgICAgdG8uX3R6bSA9IGZyb20uX3R6bTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2lzVVRDKSkge1xuICAgICAgICAgICAgdG8uX2lzVVRDID0gZnJvbS5faXNVVEM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9vZmZzZXQpKSB7XG4gICAgICAgICAgICB0by5fb2Zmc2V0ID0gZnJvbS5fb2Zmc2V0O1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fcGYpKSB7XG4gICAgICAgICAgICB0by5fcGYgPSBnZXRQYXJzaW5nRmxhZ3MoZnJvbSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9sb2NhbGUpKSB7XG4gICAgICAgICAgICB0by5fbG9jYWxlID0gZnJvbS5fbG9jYWxlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vbWVudFByb3BlcnRpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1vbWVudFByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBwcm9wID0gbW9tZW50UHJvcGVydGllc1tpXTtcbiAgICAgICAgICAgICAgICB2YWwgPSBmcm9tW3Byb3BdO1xuICAgICAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQodmFsKSkge1xuICAgICAgICAgICAgICAgICAgICB0b1twcm9wXSA9IHZhbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG87XG4gICAgfVxuXG4gICAgdmFyIHVwZGF0ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcblxuICAgIC8vIE1vbWVudCBwcm90b3R5cGUgb2JqZWN0XG4gICAgZnVuY3Rpb24gTW9tZW50KGNvbmZpZykge1xuICAgICAgICBjb3B5Q29uZmlnKHRoaXMsIGNvbmZpZyk7XG4gICAgICAgIHRoaXMuX2QgPSBuZXcgRGF0ZShjb25maWcuX2QgIT0gbnVsbCA/IGNvbmZpZy5fZC5nZXRUaW1lKCkgOiBOYU4pO1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICB0aGlzLl9kID0gbmV3IERhdGUoTmFOKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBQcmV2ZW50IGluZmluaXRlIGxvb3AgaW4gY2FzZSB1cGRhdGVPZmZzZXQgY3JlYXRlcyBuZXcgbW9tZW50XG4gICAgICAgIC8vIG9iamVjdHMuXG4gICAgICAgIGlmICh1cGRhdGVJblByb2dyZXNzID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdXBkYXRlSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcyk7XG4gICAgICAgICAgICB1cGRhdGVJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc01vbWVudCAob2JqKSB7XG4gICAgICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBNb21lbnQgfHwgKG9iaiAhPSBudWxsICYmIG9iai5faXNBTW9tZW50T2JqZWN0ICE9IG51bGwpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFic0Zsb29yIChudW1iZXIpIHtcbiAgICAgICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgICAgICAgIC8vIC0wIC0+IDBcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwobnVtYmVyKSB8fCAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvSW50KGFyZ3VtZW50Rm9yQ29lcmNpb24pIHtcbiAgICAgICAgdmFyIGNvZXJjZWROdW1iZXIgPSArYXJndW1lbnRGb3JDb2VyY2lvbixcbiAgICAgICAgICAgIHZhbHVlID0gMDtcblxuICAgICAgICBpZiAoY29lcmNlZE51bWJlciAhPT0gMCAmJiBpc0Zpbml0ZShjb2VyY2VkTnVtYmVyKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBhYnNGbG9vcihjb2VyY2VkTnVtYmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBjb21wYXJlIHR3byBhcnJheXMsIHJldHVybiB0aGUgbnVtYmVyIG9mIGRpZmZlcmVuY2VzXG4gICAgZnVuY3Rpb24gY29tcGFyZUFycmF5cyhhcnJheTEsIGFycmF5MiwgZG9udENvbnZlcnQpIHtcbiAgICAgICAgdmFyIGxlbiA9IE1hdGgubWluKGFycmF5MS5sZW5ndGgsIGFycmF5Mi5sZW5ndGgpLFxuICAgICAgICAgICAgbGVuZ3RoRGlmZiA9IE1hdGguYWJzKGFycmF5MS5sZW5ndGggLSBhcnJheTIubGVuZ3RoKSxcbiAgICAgICAgICAgIGRpZmZzID0gMCxcbiAgICAgICAgICAgIGk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgaWYgKChkb250Q29udmVydCAmJiBhcnJheTFbaV0gIT09IGFycmF5MltpXSkgfHxcbiAgICAgICAgICAgICAgICAoIWRvbnRDb252ZXJ0ICYmIHRvSW50KGFycmF5MVtpXSkgIT09IHRvSW50KGFycmF5MltpXSkpKSB7XG4gICAgICAgICAgICAgICAgZGlmZnMrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGlmZnMgKyBsZW5ndGhEaWZmO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdhcm4obXNnKSB7XG4gICAgICAgIGlmIChob29rcy5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MgPT09IGZhbHNlICYmXG4gICAgICAgICAgICAgICAgKHR5cGVvZiBjb25zb2xlICE9PSAgJ3VuZGVmaW5lZCcpICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdEZXByZWNhdGlvbiB3YXJuaW5nOiAnICsgbXNnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZShtc2csIGZuKSB7XG4gICAgICAgIHZhciBmaXJzdFRpbWUgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiBleHRlbmQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGhvb2tzLmRlcHJlY2F0aW9uSGFuZGxlciAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyKG51bGwsIG1zZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmlyc3RUaW1lKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgICAgICB2YXIgYXJnO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGFyZyA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFyZ3VtZW50c1tpXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyArPSAnXFxuWycgKyBpICsgJ10gJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBhcmd1bWVudHNbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcgKz0ga2V5ICsgJzogJyArIGFyZ3VtZW50c1swXVtrZXldICsgJywgJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IGFyZy5zbGljZSgwLCAtMik7IC8vIFJlbW92ZSB0cmFpbGluZyBjb21tYSBhbmQgc3BhY2VcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmdzLnB1c2goYXJnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2Fybihtc2cgKyAnXFxuQXJndW1lbnRzOiAnICsgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJncykuam9pbignJykgKyAnXFxuJyArIChuZXcgRXJyb3IoKSkuc3RhY2spO1xuICAgICAgICAgICAgICAgIGZpcnN0VGltZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0sIGZuKTtcbiAgICB9XG5cbiAgICB2YXIgZGVwcmVjYXRpb25zID0ge307XG5cbiAgICBmdW5jdGlvbiBkZXByZWNhdGVTaW1wbGUobmFtZSwgbXNnKSB7XG4gICAgICAgIGlmIChob29rcy5kZXByZWNhdGlvbkhhbmRsZXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyKG5hbWUsIG1zZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFkZXByZWNhdGlvbnNbbmFtZV0pIHtcbiAgICAgICAgICAgIHdhcm4obXNnKTtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uc1tuYW1lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBob29rcy5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MgPSBmYWxzZTtcbiAgICBob29rcy5kZXByZWNhdGlvbkhhbmRsZXIgPSBudWxsO1xuXG4gICAgZnVuY3Rpb24gaXNGdW5jdGlvbihpbnB1dCkge1xuICAgICAgICByZXR1cm4gaW5wdXQgaW5zdGFuY2VvZiBGdW5jdGlvbiB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldCAoY29uZmlnKSB7XG4gICAgICAgIHZhciBwcm9wLCBpO1xuICAgICAgICBmb3IgKGkgaW4gY29uZmlnKSB7XG4gICAgICAgICAgICBwcm9wID0gY29uZmlnW2ldO1xuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24ocHJvcCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzW2ldID0gcHJvcDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpc1snXycgKyBpXSA9IHByb3A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgICAgICAvLyBMZW5pZW50IG9yZGluYWwgcGFyc2luZyBhY2NlcHRzIGp1c3QgYSBudW1iZXIgaW4gYWRkaXRpb24gdG9cbiAgICAgICAgLy8gbnVtYmVyICsgKHBvc3NpYmx5KSBzdHVmZiBjb21pbmcgZnJvbSBfZGF5T2ZNb250aE9yZGluYWxQYXJzZS5cbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIFwib3JkaW5hbFBhcnNlXCIgZmFsbGJhY2sgaW4gbmV4dCBtYWpvciByZWxlYXNlLlxuICAgICAgICB0aGlzLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudCA9IG5ldyBSZWdFeHAoXG4gICAgICAgICAgICAodGhpcy5fZGF5T2ZNb250aE9yZGluYWxQYXJzZS5zb3VyY2UgfHwgdGhpcy5fb3JkaW5hbFBhcnNlLnNvdXJjZSkgK1xuICAgICAgICAgICAgICAgICd8JyArICgvXFxkezEsMn0vKS5zb3VyY2UpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1lcmdlQ29uZmlncyhwYXJlbnRDb25maWcsIGNoaWxkQ29uZmlnKSB7XG4gICAgICAgIHZhciByZXMgPSBleHRlbmQoe30sIHBhcmVudENvbmZpZyksIHByb3A7XG4gICAgICAgIGZvciAocHJvcCBpbiBjaGlsZENvbmZpZykge1xuICAgICAgICAgICAgaWYgKGhhc093blByb3AoY2hpbGRDb25maWcsIHByb3ApKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzT2JqZWN0KHBhcmVudENvbmZpZ1twcm9wXSkgJiYgaXNPYmplY3QoY2hpbGRDb25maWdbcHJvcF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc1twcm9wXSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBleHRlbmQocmVzW3Byb3BdLCBwYXJlbnRDb25maWdbcHJvcF0pO1xuICAgICAgICAgICAgICAgICAgICBleHRlbmQocmVzW3Byb3BdLCBjaGlsZENvbmZpZ1twcm9wXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaGlsZENvbmZpZ1twcm9wXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc1twcm9wXSA9IGNoaWxkQ29uZmlnW3Byb3BdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZXNbcHJvcF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAocHJvcCBpbiBwYXJlbnRDb25maWcpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKHBhcmVudENvbmZpZywgcHJvcCkgJiZcbiAgICAgICAgICAgICAgICAgICAgIWhhc093blByb3AoY2hpbGRDb25maWcsIHByb3ApICYmXG4gICAgICAgICAgICAgICAgICAgIGlzT2JqZWN0KHBhcmVudENvbmZpZ1twcm9wXSkpIHtcbiAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgY2hhbmdlcyB0byBwcm9wZXJ0aWVzIGRvbid0IG1vZGlmeSBwYXJlbnQgY29uZmlnXG4gICAgICAgICAgICAgICAgcmVzW3Byb3BdID0gZXh0ZW5kKHt9LCByZXNbcHJvcF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gTG9jYWxlKGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0KGNvbmZpZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIga2V5cztcblxuICAgIGlmIChPYmplY3Qua2V5cykge1xuICAgICAgICBrZXlzID0gT2JqZWN0LmtleXM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAga2V5cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgIHZhciBpLCByZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoaSBpbiBvYmopIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzT3duUHJvcChvYmosIGkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5wdXNoKGkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRDYWxlbmRhciA9IHtcbiAgICAgICAgc2FtZURheSA6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgbmV4dERheSA6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgbGFzdERheSA6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgIGxhc3RXZWVrIDogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBjYWxlbmRhciAoa2V5LCBtb20sIG5vdykge1xuICAgICAgICB2YXIgb3V0cHV0ID0gdGhpcy5fY2FsZW5kYXJba2V5XSB8fCB0aGlzLl9jYWxlbmRhclsnc2FtZUVsc2UnXTtcbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24ob3V0cHV0KSA/IG91dHB1dC5jYWxsKG1vbSwgbm93KSA6IG91dHB1dDtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvbmdEYXRlRm9ybWF0ID0ge1xuICAgICAgICBMVFMgIDogJ2g6bW06c3MgQScsXG4gICAgICAgIExUICAgOiAnaDptbSBBJyxcbiAgICAgICAgTCAgICA6ICdNTS9ERC9ZWVlZJyxcbiAgICAgICAgTEwgICA6ICdNTU1NIEQsIFlZWVknLFxuICAgICAgICBMTEwgIDogJ01NTU0gRCwgWVlZWSBoOm1tIEEnLFxuICAgICAgICBMTExMIDogJ2RkZGQsIE1NTU0gRCwgWVlZWSBoOm1tIEEnXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGxvbmdEYXRlRm9ybWF0IChrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV0sXG4gICAgICAgICAgICBmb3JtYXRVcHBlciA9IHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleS50b1VwcGVyQ2FzZSgpXTtcblxuICAgICAgICBpZiAoZm9ybWF0IHx8ICFmb3JtYXRVcHBlcikge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV0gPSBmb3JtYXRVcHBlci5yZXBsYWNlKC9NTU1NfE1NfEREfGRkZGQvZywgZnVuY3Rpb24gKHZhbCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbC5zbGljZSgxKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV07XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRJbnZhbGlkRGF0ZSA9ICdJbnZhbGlkIGRhdGUnO1xuXG4gICAgZnVuY3Rpb24gaW52YWxpZERhdGUgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52YWxpZERhdGU7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRPcmRpbmFsID0gJyVkJztcbiAgICB2YXIgZGVmYXVsdERheU9mTW9udGhPcmRpbmFsUGFyc2UgPSAvXFxkezEsMn0vO1xuXG4gICAgZnVuY3Rpb24gb3JkaW5hbCAobnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcmRpbmFsLnJlcGxhY2UoJyVkJywgbnVtYmVyKTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdFJlbGF0aXZlVGltZSA9IHtcbiAgICAgICAgZnV0dXJlIDogJ2luICVzJyxcbiAgICAgICAgcGFzdCAgIDogJyVzIGFnbycsXG4gICAgICAgIHMgIDogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICBzcyA6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgbSAgOiAnYSBtaW51dGUnLFxuICAgICAgICBtbSA6ICclZCBtaW51dGVzJyxcbiAgICAgICAgaCAgOiAnYW4gaG91cicsXG4gICAgICAgIGhoIDogJyVkIGhvdXJzJyxcbiAgICAgICAgZCAgOiAnYSBkYXknLFxuICAgICAgICBkZCA6ICclZCBkYXlzJyxcbiAgICAgICAgTSAgOiAnYSBtb250aCcsXG4gICAgICAgIE1NIDogJyVkIG1vbnRocycsXG4gICAgICAgIHkgIDogJ2EgeWVhcicsXG4gICAgICAgIHl5IDogJyVkIHllYXJzJ1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWUgKG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgb3V0cHV0ID0gdGhpcy5fcmVsYXRpdmVUaW1lW3N0cmluZ107XG4gICAgICAgIHJldHVybiAoaXNGdW5jdGlvbihvdXRwdXQpKSA/XG4gICAgICAgICAgICBvdXRwdXQobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSA6XG4gICAgICAgICAgICBvdXRwdXQucmVwbGFjZSgvJWQvaSwgbnVtYmVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXN0RnV0dXJlIChkaWZmLCBvdXRwdXQpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHRoaXMuX3JlbGF0aXZlVGltZVtkaWZmID4gMCA/ICdmdXR1cmUnIDogJ3Bhc3QnXTtcbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24oZm9ybWF0KSA/IGZvcm1hdChvdXRwdXQpIDogZm9ybWF0LnJlcGxhY2UoLyVzL2ksIG91dHB1dCk7XG4gICAgfVxuXG4gICAgdmFyIGFsaWFzZXMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFVuaXRBbGlhcyAodW5pdCwgc2hvcnRoYW5kKSB7XG4gICAgICAgIHZhciBsb3dlckNhc2UgPSB1bml0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGFsaWFzZXNbbG93ZXJDYXNlXSA9IGFsaWFzZXNbbG93ZXJDYXNlICsgJ3MnXSA9IGFsaWFzZXNbc2hvcnRoYW5kXSA9IHVuaXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplVW5pdHModW5pdHMpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB1bml0cyA9PT0gJ3N0cmluZycgPyBhbGlhc2VzW3VuaXRzXSB8fCBhbGlhc2VzW3VuaXRzLnRvTG93ZXJDYXNlKCldIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdFVuaXRzKGlucHV0T2JqZWN0KSB7XG4gICAgICAgIHZhciBub3JtYWxpemVkSW5wdXQgPSB7fSxcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRQcm9wLFxuICAgICAgICAgICAgcHJvcDtcblxuICAgICAgICBmb3IgKHByb3AgaW4gaW5wdXRPYmplY3QpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKGlucHV0T2JqZWN0LCBwcm9wKSkge1xuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRQcm9wID0gbm9ybWFsaXplVW5pdHMocHJvcCk7XG4gICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRQcm9wKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRJbnB1dFtub3JtYWxpemVkUHJvcF0gPSBpbnB1dE9iamVjdFtwcm9wXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9ybWFsaXplZElucHV0O1xuICAgIH1cblxuICAgIHZhciBwcmlvcml0aWVzID0ge307XG5cbiAgICBmdW5jdGlvbiBhZGRVbml0UHJpb3JpdHkodW5pdCwgcHJpb3JpdHkpIHtcbiAgICAgICAgcHJpb3JpdGllc1t1bml0XSA9IHByaW9yaXR5O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFByaW9yaXRpemVkVW5pdHModW5pdHNPYmopIHtcbiAgICAgICAgdmFyIHVuaXRzID0gW107XG4gICAgICAgIGZvciAodmFyIHUgaW4gdW5pdHNPYmopIHtcbiAgICAgICAgICAgIHVuaXRzLnB1c2goe3VuaXQ6IHUsIHByaW9yaXR5OiBwcmlvcml0aWVzW3VdfSk7XG4gICAgICAgIH1cbiAgICAgICAgdW5pdHMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgcmV0dXJuIGEucHJpb3JpdHkgLSBiLnByaW9yaXR5O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHVuaXRzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHplcm9GaWxsKG51bWJlciwgdGFyZ2V0TGVuZ3RoLCBmb3JjZVNpZ24pIHtcbiAgICAgICAgdmFyIGFic051bWJlciA9ICcnICsgTWF0aC5hYnMobnVtYmVyKSxcbiAgICAgICAgICAgIHplcm9zVG9GaWxsID0gdGFyZ2V0TGVuZ3RoIC0gYWJzTnVtYmVyLmxlbmd0aCxcbiAgICAgICAgICAgIHNpZ24gPSBudW1iZXIgPj0gMDtcbiAgICAgICAgcmV0dXJuIChzaWduID8gKGZvcmNlU2lnbiA/ICcrJyA6ICcnKSA6ICctJykgK1xuICAgICAgICAgICAgTWF0aC5wb3coMTAsIE1hdGgubWF4KDAsIHplcm9zVG9GaWxsKSkudG9TdHJpbmcoKS5zdWJzdHIoMSkgKyBhYnNOdW1iZXI7XG4gICAgfVxuXG4gICAgdmFyIGZvcm1hdHRpbmdUb2tlbnMgPSAvKFxcW1teXFxbXSpcXF0pfChcXFxcKT8oW0hoXW1tKHNzKT98TW98TU0/TT9NP3xEb3xERERvfEREP0Q/RD98ZGRkP2Q/fGRvP3x3W298d10/fFdbb3xXXT98UW8/fFlZWVlZWXxZWVlZWXxZWVlZfFlZfGdnKGdnZz8pP3xHRyhHR0c/KT98ZXxFfGF8QXxoaD98SEg/fGtrP3xtbT98c3M/fFN7MSw5fXx4fFh8eno/fFpaP3wuKS9nO1xuXG4gICAgdmFyIGxvY2FsRm9ybWF0dGluZ1Rva2VucyA9IC8oXFxbW15cXFtdKlxcXSl8KFxcXFwpPyhMVFN8TFR8TEw/TD9MP3xsezEsNH0pL2c7XG5cbiAgICB2YXIgZm9ybWF0RnVuY3Rpb25zID0ge307XG5cbiAgICB2YXIgZm9ybWF0VG9rZW5GdW5jdGlvbnMgPSB7fTtcblxuICAgIC8vIHRva2VuOiAgICAnTSdcbiAgICAvLyBwYWRkZWQ6ICAgWydNTScsIDJdXG4gICAgLy8gb3JkaW5hbDogICdNbydcbiAgICAvLyBjYWxsYmFjazogZnVuY3Rpb24gKCkgeyB0aGlzLm1vbnRoKCkgKyAxIH1cbiAgICBmdW5jdGlvbiBhZGRGb3JtYXRUb2tlbiAodG9rZW4sIHBhZGRlZCwgb3JkaW5hbCwgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIGZ1bmMgPSBjYWxsYmFjaztcbiAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGZ1bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGJhY2tdKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgZm9ybWF0VG9rZW5GdW5jdGlvbnNbdG9rZW5dID0gZnVuYztcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFkZGVkKSB7XG4gICAgICAgICAgICBmb3JtYXRUb2tlbkZ1bmN0aW9uc1twYWRkZWRbMF1dID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB6ZXJvRmlsbChmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHBhZGRlZFsxXSwgcGFkZGVkWzJdKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9yZGluYWwpIHtcbiAgICAgICAgICAgIGZvcm1hdFRva2VuRnVuY3Rpb25zW29yZGluYWxdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5vcmRpbmFsKGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgdG9rZW4pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZUZvcm1hdHRpbmdUb2tlbnMoaW5wdXQpIHtcbiAgICAgICAgaWYgKGlucHV0Lm1hdGNoKC9cXFtbXFxzXFxTXS8pKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQucmVwbGFjZSgvXlxcW3xcXF0kL2csICcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5wdXQucmVwbGFjZSgvXFxcXC9nLCAnJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUZvcm1hdEZ1bmN0aW9uKGZvcm1hdCkge1xuICAgICAgICB2YXIgYXJyYXkgPSBmb3JtYXQubWF0Y2goZm9ybWF0dGluZ1Rva2VucyksIGksIGxlbmd0aDtcblxuICAgICAgICBmb3IgKGkgPSAwLCBsZW5ndGggPSBhcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGZvcm1hdFRva2VuRnVuY3Rpb25zW2FycmF5W2ldXSkge1xuICAgICAgICAgICAgICAgIGFycmF5W2ldID0gZm9ybWF0VG9rZW5GdW5jdGlvbnNbYXJyYXlbaV1dO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHJlbW92ZUZvcm1hdHRpbmdUb2tlbnMoYXJyYXlbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChtb20pIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPSAnJywgaTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIG91dHB1dCArPSBpc0Z1bmN0aW9uKGFycmF5W2ldKSA/IGFycmF5W2ldLmNhbGwobW9tLCBmb3JtYXQpIDogYXJyYXlbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIGZvcm1hdCBkYXRlIHVzaW5nIG5hdGl2ZSBkYXRlIG9iamVjdFxuICAgIGZ1bmN0aW9uIGZvcm1hdE1vbWVudChtLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKCFtLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG0ubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3JtYXQgPSBleHBhbmRGb3JtYXQoZm9ybWF0LCBtLmxvY2FsZURhdGEoKSk7XG4gICAgICAgIGZvcm1hdEZ1bmN0aW9uc1tmb3JtYXRdID0gZm9ybWF0RnVuY3Rpb25zW2Zvcm1hdF0gfHwgbWFrZUZvcm1hdEZ1bmN0aW9uKGZvcm1hdCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdEZ1bmN0aW9uc1tmb3JtYXRdKG0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4cGFuZEZvcm1hdChmb3JtYXQsIGxvY2FsZSkge1xuICAgICAgICB2YXIgaSA9IDU7XG5cbiAgICAgICAgZnVuY3Rpb24gcmVwbGFjZUxvbmdEYXRlRm9ybWF0VG9rZW5zKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLmxvbmdEYXRlRm9ybWF0KGlucHV0KSB8fCBpbnB1dDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy5sYXN0SW5kZXggPSAwO1xuICAgICAgICB3aGlsZSAoaSA+PSAwICYmIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKGxvY2FsRm9ybWF0dGluZ1Rva2VucywgcmVwbGFjZUxvbmdEYXRlRm9ybWF0VG9rZW5zKTtcbiAgICAgICAgICAgIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgaSAtPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdDtcbiAgICB9XG5cbiAgICB2YXIgbWF0Y2gxICAgICAgICAgPSAvXFxkLzsgICAgICAgICAgICAvLyAgICAgICAwIC0gOVxuICAgIHZhciBtYXRjaDIgICAgICAgICA9IC9cXGRcXGQvOyAgICAgICAgICAvLyAgICAgIDAwIC0gOTlcbiAgICB2YXIgbWF0Y2gzICAgICAgICAgPSAvXFxkezN9LzsgICAgICAgICAvLyAgICAgMDAwIC0gOTk5XG4gICAgdmFyIG1hdGNoNCAgICAgICAgID0gL1xcZHs0fS87ICAgICAgICAgLy8gICAgMDAwMCAtIDk5OTlcbiAgICB2YXIgbWF0Y2g2ICAgICAgICAgPSAvWystXT9cXGR7Nn0vOyAgICAvLyAtOTk5OTk5IC0gOTk5OTk5XG4gICAgdmFyIG1hdGNoMXRvMiAgICAgID0gL1xcZFxcZD8vOyAgICAgICAgIC8vICAgICAgIDAgLSA5OVxuICAgIHZhciBtYXRjaDN0bzQgICAgICA9IC9cXGRcXGRcXGRcXGQ/LzsgICAgIC8vICAgICA5OTkgLSA5OTk5XG4gICAgdmFyIG1hdGNoNXRvNiAgICAgID0gL1xcZFxcZFxcZFxcZFxcZFxcZD8vOyAvLyAgIDk5OTk5IC0gOTk5OTk5XG4gICAgdmFyIG1hdGNoMXRvMyAgICAgID0gL1xcZHsxLDN9LzsgICAgICAgLy8gICAgICAgMCAtIDk5OVxuICAgIHZhciBtYXRjaDF0bzQgICAgICA9IC9cXGR7MSw0fS87ICAgICAgIC8vICAgICAgIDAgLSA5OTk5XG4gICAgdmFyIG1hdGNoMXRvNiAgICAgID0gL1srLV0/XFxkezEsNn0vOyAgLy8gLTk5OTk5OSAtIDk5OTk5OVxuXG4gICAgdmFyIG1hdGNoVW5zaWduZWQgID0gL1xcZCsvOyAgICAgICAgICAgLy8gICAgICAgMCAtIGluZlxuICAgIHZhciBtYXRjaFNpZ25lZCAgICA9IC9bKy1dP1xcZCsvOyAgICAgIC8vICAgIC1pbmYgLSBpbmZcblxuICAgIHZhciBtYXRjaE9mZnNldCAgICA9IC9afFsrLV1cXGRcXGQ6P1xcZFxcZC9naTsgLy8gKzAwOjAwIC0wMDowMCArMDAwMCAtMDAwMCBvciBaXG4gICAgdmFyIG1hdGNoU2hvcnRPZmZzZXQgPSAvWnxbKy1dXFxkXFxkKD86Oj9cXGRcXGQpPy9naTsgLy8gKzAwIC0wMCArMDA6MDAgLTAwOjAwICswMDAwIC0wMDAwIG9yIFpcblxuICAgIHZhciBtYXRjaFRpbWVzdGFtcCA9IC9bKy1dP1xcZCsoXFwuXFxkezEsM30pPy87IC8vIDEyMzQ1Njc4OSAxMjM0NTY3ODkuMTIzXG5cbiAgICAvLyBhbnkgd29yZCAob3IgdHdvKSBjaGFyYWN0ZXJzIG9yIG51bWJlcnMgaW5jbHVkaW5nIHR3by90aHJlZSB3b3JkIG1vbnRoIGluIGFyYWJpYy5cbiAgICAvLyBpbmNsdWRlcyBzY290dGlzaCBnYWVsaWMgdHdvIHdvcmQgYW5kIGh5cGhlbmF0ZWQgbW9udGhzXG4gICAgdmFyIG1hdGNoV29yZCA9IC9bMC05XXswLDI1Nn1bJ2EtelxcdTAwQTAtXFx1MDVGRlxcdTA3MDAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkYwN1xcdUZGMTAtXFx1RkZFRl17MSwyNTZ9fFtcXHUwNjAwLVxcdTA2RkZcXC9dezEsMjU2fShcXHMqP1tcXHUwNjAwLVxcdTA2RkZdezEsMjU2fSl7MSwyfS9pO1xuXG4gICAgdmFyIHJlZ2V4ZXMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFJlZ2V4VG9rZW4gKHRva2VuLCByZWdleCwgc3RyaWN0UmVnZXgpIHtcbiAgICAgICAgcmVnZXhlc1t0b2tlbl0gPSBpc0Z1bmN0aW9uKHJlZ2V4KSA/IHJlZ2V4IDogZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGVEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gKGlzU3RyaWN0ICYmIHN0cmljdFJlZ2V4KSA/IHN0cmljdFJlZ2V4IDogcmVnZXg7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UGFyc2VSZWdleEZvclRva2VuICh0b2tlbiwgY29uZmlnKSB7XG4gICAgICAgIGlmICghaGFzT3duUHJvcChyZWdleGVzLCB0b2tlbikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHVuZXNjYXBlRm9ybWF0KHRva2VuKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVnZXhlc1t0b2tlbl0oY29uZmlnLl9zdHJpY3QsIGNvbmZpZy5fbG9jYWxlKTtcbiAgICB9XG5cbiAgICAvLyBDb2RlIGZyb20gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNTYxNDkzL2lzLXRoZXJlLWEtcmVnZXhwLWVzY2FwZS1mdW5jdGlvbi1pbi1qYXZhc2NyaXB0XG4gICAgZnVuY3Rpb24gdW5lc2NhcGVGb3JtYXQocykge1xuICAgICAgICByZXR1cm4gcmVnZXhFc2NhcGUocy5yZXBsYWNlKCdcXFxcJywgJycpLnJlcGxhY2UoL1xcXFwoXFxbKXxcXFxcKFxcXSl8XFxbKFteXFxdXFxbXSopXFxdfFxcXFwoLikvZywgZnVuY3Rpb24gKG1hdGNoZWQsIHAxLCBwMiwgcDMsIHA0KSB7XG4gICAgICAgICAgICByZXR1cm4gcDEgfHwgcDIgfHwgcDMgfHwgcDQ7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWdleEVzY2FwZShzKSB7XG4gICAgICAgIHJldHVybiBzLnJlcGxhY2UoL1stXFwvXFxcXF4kKis/LigpfFtcXF17fV0vZywgJ1xcXFwkJicpO1xuICAgIH1cblxuICAgIHZhciB0b2tlbnMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFBhcnNlVG9rZW4gKHRva2VuLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgaSwgZnVuYyA9IGNhbGxiYWNrO1xuICAgICAgICBpZiAodHlwZW9mIHRva2VuID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdG9rZW4gPSBbdG9rZW5dO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc051bWJlcihjYWxsYmFjaykpIHtcbiAgICAgICAgICAgIGZ1bmMgPSBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgICAgICAgICAgYXJyYXlbY2FsbGJhY2tdID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdG9rZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRva2Vuc1t0b2tlbltpXV0gPSBmdW5jO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkV2Vla1BhcnNlVG9rZW4gKHRva2VuLCBjYWxsYmFjaykge1xuICAgICAgICBhZGRQYXJzZVRva2VuKHRva2VuLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgICAgICBjb25maWcuX3cgPSBjb25maWcuX3cgfHwge307XG4gICAgICAgICAgICBjYWxsYmFjayhpbnB1dCwgY29uZmlnLl93LCBjb25maWcsIHRva2VuKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkVGltZVRvQXJyYXlGcm9tVG9rZW4odG9rZW4sIGlucHV0LCBjb25maWcpIHtcbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwgJiYgaGFzT3duUHJvcCh0b2tlbnMsIHRva2VuKSkge1xuICAgICAgICAgICAgdG9rZW5zW3Rva2VuXShpbnB1dCwgY29uZmlnLl9hLCBjb25maWcsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBZRUFSID0gMDtcbiAgICB2YXIgTU9OVEggPSAxO1xuICAgIHZhciBEQVRFID0gMjtcbiAgICB2YXIgSE9VUiA9IDM7XG4gICAgdmFyIE1JTlVURSA9IDQ7XG4gICAgdmFyIFNFQ09ORCA9IDU7XG4gICAgdmFyIE1JTExJU0VDT05EID0gNjtcbiAgICB2YXIgV0VFSyA9IDc7XG4gICAgdmFyIFdFRUtEQVkgPSA4O1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ1knLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB5ID0gdGhpcy55ZWFyKCk7XG4gICAgICAgIHJldHVybiB5IDw9IDk5OTkgPyAnJyArIHkgOiAnKycgKyB5O1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydZWScsIDJdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnllYXIoKSAlIDEwMDtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnWVlZWScsICAgNF0sICAgICAgIDAsICd5ZWFyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydZWVlZWScsICA1XSwgICAgICAgMCwgJ3llYXInKTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1lZWVlZWScsIDYsIHRydWVdLCAwLCAneWVhcicpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCd5ZWFyJywgJ3knKTtcblxuICAgIC8vIFBSSU9SSVRJRVNcblxuICAgIGFkZFVuaXRQcmlvcml0eSgneWVhcicsIDEpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignWScsICAgICAgbWF0Y2hTaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1lZJywgICAgIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdZWVlZJywgICBtYXRjaDF0bzQsIG1hdGNoNCk7XG4gICAgYWRkUmVnZXhUb2tlbignWVlZWVknLCAgbWF0Y2gxdG82LCBtYXRjaDYpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1lZWVlZWScsIG1hdGNoMXRvNiwgbWF0Y2g2KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydZWVlZWScsICdZWVlZWVknXSwgWUVBUik7XG4gICAgYWRkUGFyc2VUb2tlbignWVlZWScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbWUVBUl0gPSBpbnB1dC5sZW5ndGggPT09IDIgPyBob29rcy5wYXJzZVR3b0RpZ2l0WWVhcihpbnB1dCkgOiB0b0ludChpbnB1dCk7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignWVknLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W1lFQVJdID0gaG9va3MucGFyc2VUd29EaWdpdFllYXIoaW5wdXQpO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1knLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W1lFQVJdID0gcGFyc2VJbnQoaW5wdXQsIDEwKTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIGZ1bmN0aW9uIGRheXNJblllYXIoeWVhcikge1xuICAgICAgICByZXR1cm4gaXNMZWFwWWVhcih5ZWFyKSA/IDM2NiA6IDM2NTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0xlYXBZZWFyKHllYXIpIHtcbiAgICAgICAgcmV0dXJuICh5ZWFyICUgNCA9PT0gMCAmJiB5ZWFyICUgMTAwICE9PSAwKSB8fCB5ZWFyICUgNDAwID09PSAwO1xuICAgIH1cblxuICAgIC8vIEhPT0tTXG5cbiAgICBob29rcy5wYXJzZVR3b0RpZ2l0WWVhciA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gdG9JbnQoaW5wdXQpICsgKHRvSW50KGlucHV0KSA+IDY4ID8gMTkwMCA6IDIwMDApO1xuICAgIH07XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICB2YXIgZ2V0U2V0WWVhciA9IG1ha2VHZXRTZXQoJ0Z1bGxZZWFyJywgdHJ1ZSk7XG5cbiAgICBmdW5jdGlvbiBnZXRJc0xlYXBZZWFyICgpIHtcbiAgICAgICAgcmV0dXJuIGlzTGVhcFllYXIodGhpcy55ZWFyKCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VHZXRTZXQgKHVuaXQsIGtlZXBUaW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc2V0JDEodGhpcywgdW5pdCwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCBrZWVwVGltZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXQodGhpcywgdW5pdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0IChtb20sIHVuaXQpIHtcbiAgICAgICAgcmV0dXJuIG1vbS5pc1ZhbGlkKCkgP1xuICAgICAgICAgICAgbW9tLl9kWydnZXQnICsgKG1vbS5faXNVVEMgPyAnVVRDJyA6ICcnKSArIHVuaXRdKCkgOiBOYU47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0JDEgKG1vbSwgdW5pdCwgdmFsdWUpIHtcbiAgICAgICAgaWYgKG1vbS5pc1ZhbGlkKCkgJiYgIWlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKHVuaXQgPT09ICdGdWxsWWVhcicgJiYgaXNMZWFwWWVhcihtb20ueWVhcigpKSAmJiBtb20ubW9udGgoKSA9PT0gMSAmJiBtb20uZGF0ZSgpID09PSAyOSkge1xuICAgICAgICAgICAgICAgIG1vbS5fZFsnc2V0JyArIChtb20uX2lzVVRDID8gJ1VUQycgOiAnJykgKyB1bml0XSh2YWx1ZSwgbW9tLm1vbnRoKCksIGRheXNJbk1vbnRoKHZhbHVlLCBtb20ubW9udGgoKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbW9tLl9kWydzZXQnICsgKG1vbS5faXNVVEMgPyAnVVRDJyA6ICcnKSArIHVuaXRdKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIHN0cmluZ0dldCAodW5pdHMpIHtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHRoaXNbdW5pdHNdKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXNbdW5pdHNdKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBzdHJpbmdTZXQgKHVuaXRzLCB2YWx1ZSkge1xuICAgICAgICBpZiAodHlwZW9mIHVuaXRzID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgdW5pdHMgPSBub3JtYWxpemVPYmplY3RVbml0cyh1bml0cyk7XG4gICAgICAgICAgICB2YXIgcHJpb3JpdGl6ZWQgPSBnZXRQcmlvcml0aXplZFVuaXRzKHVuaXRzKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJpb3JpdGl6ZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzW3ByaW9yaXRpemVkW2ldLnVuaXRdKHVuaXRzW3ByaW9yaXRpemVkW2ldLnVuaXRdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24odGhpc1t1bml0c10pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbdW5pdHNdKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb2QobiwgeCkge1xuICAgICAgICByZXR1cm4gKChuICUgeCkgKyB4KSAlIHg7XG4gICAgfVxuXG4gICAgdmFyIGluZGV4T2Y7XG5cbiAgICBpZiAoQXJyYXkucHJvdG90eXBlLmluZGV4T2YpIHtcbiAgICAgICAgaW5kZXhPZiA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGluZGV4T2YgPSBmdW5jdGlvbiAobykge1xuICAgICAgICAgICAgLy8gSSBrbm93XG4gICAgICAgICAgICB2YXIgaTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXNbaV0gPT09IG8pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSB7XG4gICAgICAgIGlmIChpc05hTih5ZWFyKSB8fCBpc05hTihtb250aCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1vZE1vbnRoID0gbW9kKG1vbnRoLCAxMik7XG4gICAgICAgIHllYXIgKz0gKG1vbnRoIC0gbW9kTW9udGgpIC8gMTI7XG4gICAgICAgIHJldHVybiBtb2RNb250aCA9PT0gMSA/IChpc0xlYXBZZWFyKHllYXIpID8gMjkgOiAyOCkgOiAoMzEgLSBtb2RNb250aCAlIDcgJSAyKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignTScsIFsnTU0nLCAyXSwgJ01vJywgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb250aCgpICsgMTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdNTU0nLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tb250aHNTaG9ydCh0aGlzLCBmb3JtYXQpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ01NTU0nLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tb250aHModGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnbW9udGgnLCAnTScpO1xuXG4gICAgLy8gUFJJT1JJVFlcblxuICAgIGFkZFVuaXRQcmlvcml0eSgnbW9udGgnLCA4KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ00nLCAgICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ01NJywgICBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignTU1NJywgIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUubW9udGhzU2hvcnRSZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG4gICAgYWRkUmVnZXhUb2tlbignTU1NTScsIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUubW9udGhzUmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ00nLCAnTU0nXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtNT05USF0gPSB0b0ludChpbnB1dCkgLSAxO1xuICAgIH0pO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ01NTScsICdNTU1NJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgdmFyIG1vbnRoID0gY29uZmlnLl9sb2NhbGUubW9udGhzUGFyc2UoaW5wdXQsIHRva2VuLCBjb25maWcuX3N0cmljdCk7XG4gICAgICAgIC8vIGlmIHdlIGRpZG4ndCBmaW5kIGEgbW9udGggbmFtZSwgbWFyayB0aGUgZGF0ZSBhcyBpbnZhbGlkLlxuICAgICAgICBpZiAobW9udGggIT0gbnVsbCkge1xuICAgICAgICAgICAgYXJyYXlbTU9OVEhdID0gbW9udGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5pbnZhbGlkTW9udGggPSBpbnB1dDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTE9DQUxFU1xuXG4gICAgdmFyIE1PTlRIU19JTl9GT1JNQVQgPSAvRFtvRF0/KFxcW1teXFxbXFxdXSpcXF18XFxzKStNTU1NPy87XG4gICAgdmFyIGRlZmF1bHRMb2NhbGVNb250aHMgPSAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKTtcbiAgICBmdW5jdGlvbiBsb2NhbGVNb250aHMgKG0sIGZvcm1hdCkge1xuICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX21vbnRocykgPyB0aGlzLl9tb250aHMgOlxuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1snc3RhbmRhbG9uZSddO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX21vbnRocykgPyB0aGlzLl9tb250aHNbbS5tb250aCgpXSA6XG4gICAgICAgICAgICB0aGlzLl9tb250aHNbKHRoaXMuX21vbnRocy5pc0Zvcm1hdCB8fCBNT05USFNfSU5fRk9STUFUKS50ZXN0KGZvcm1hdCkgPyAnZm9ybWF0JyA6ICdzdGFuZGFsb25lJ11bbS5tb250aCgpXTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZU1vbnRoc1Nob3J0ID0gJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpO1xuICAgIGZ1bmN0aW9uIGxvY2FsZU1vbnRoc1Nob3J0IChtLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHNTaG9ydCkgPyB0aGlzLl9tb250aHNTaG9ydCA6XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzU2hvcnRbJ3N0YW5kYWxvbmUnXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHNTaG9ydCkgPyB0aGlzLl9tb250aHNTaG9ydFttLm1vbnRoKCldIDpcbiAgICAgICAgICAgIHRoaXMuX21vbnRoc1Nob3J0W01PTlRIU19JTl9GT1JNQVQudGVzdChmb3JtYXQpID8gJ2Zvcm1hdCcgOiAnc3RhbmRhbG9uZSddW20ubW9udGgoKV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlU3RyaWN0UGFyc2UobW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSwgaWksIG1vbSwgbGxjID0gbW9udGhOYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICghdGhpcy5fbW9udGhzUGFyc2UpIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgbm90IHVzZWRcbiAgICAgICAgICAgIHRoaXMuX21vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3J0TW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgKytpKSB7XG4gICAgICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCBpXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZVtpXSA9IHRoaXMubW9udGhzU2hvcnQobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0gPSB0aGlzLm1vbnRocyhtb20sICcnKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ01NTScpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ01NTScpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVNb250aHNQYXJzZSAobW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSwgbW9tLCByZWdleDtcblxuICAgICAgICBpZiAodGhpcy5fbW9udGhzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVN0cmljdFBhcnNlLmNhbGwodGhpcywgbW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX21vbnRoc1BhcnNlKSB7XG4gICAgICAgICAgICB0aGlzLl9tb250aHNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlID0gW107XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUT0RPOiBhZGQgc29ydGluZ1xuICAgICAgICAvLyBTb3J0aW5nIG1ha2VzIHN1cmUgaWYgb25lIG1vbnRoIChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyXG4gICAgICAgIC8vIHNlZSBzb3J0aW5nIGluIGNvbXB1dGVNb250aHNQYXJzZVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgLy8gbWFrZSB0aGUgcmVnZXggaWYgd2UgZG9uJ3QgaGF2ZSBpdCBhbHJlYWR5XG4gICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIGldKTtcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgIXRoaXMuX2xvbmdNb250aHNQYXJzZVtpXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvbmdNb250aHNQYXJzZVtpXSA9IG5ldyBSZWdFeHAoJ14nICsgdGhpcy5tb250aHMobW9tLCAnJykucmVwbGFjZSgnLicsICcnKSArICckJywgJ2knKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW2ldID0gbmV3IFJlZ0V4cCgnXicgKyB0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnJykgKyAnJCcsICdpJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXN0cmljdCAmJiAhdGhpcy5fbW9udGhzUGFyc2VbaV0pIHtcbiAgICAgICAgICAgICAgICByZWdleCA9ICdeJyArIHRoaXMubW9udGhzKG1vbSwgJycpICsgJ3xeJyArIHRoaXMubW9udGhzU2hvcnQobW9tLCAnJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKHJlZ2V4LnJlcGxhY2UoJy4nLCAnJyksICdpJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB0ZXN0IHRoZSByZWdleFxuICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdNTU1NJyAmJiB0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdNTU0nICYmIHRoaXMuX3Nob3J0TW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJpY3QgJiYgdGhpcy5fbW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBzZXRNb250aCAobW9tLCB2YWx1ZSkge1xuICAgICAgICB2YXIgZGF5T2ZNb250aDtcblxuICAgICAgICBpZiAoIW1vbS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIC8vIE5vIG9wXG4gICAgICAgICAgICByZXR1cm4gbW9tO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmICgvXlxcZCskLy50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdG9JbnQodmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IG1vbS5sb2NhbGVEYXRhKCkubW9udGhzUGFyc2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IEFub3RoZXIgc2lsZW50IGZhaWx1cmU/XG4gICAgICAgICAgICAgICAgaWYgKCFpc051bWJlcih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBkYXlPZk1vbnRoID0gTWF0aC5taW4obW9tLmRhdGUoKSwgZGF5c0luTW9udGgobW9tLnllYXIoKSwgdmFsdWUpKTtcbiAgICAgICAgbW9tLl9kWydzZXQnICsgKG1vbS5faXNVVEMgPyAnVVRDJyA6ICcnKSArICdNb250aCddKHZhbHVlLCBkYXlPZk1vbnRoKTtcbiAgICAgICAgcmV0dXJuIG1vbTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRNb250aCAodmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNldE1vbnRoKHRoaXMsIHZhbHVlKTtcbiAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCB0cnVlKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGdldCh0aGlzLCAnTW9udGgnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldERheXNJbk1vbnRoICgpIHtcbiAgICAgICAgcmV0dXJuIGRheXNJbk1vbnRoKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCkpO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TW9udGhzU2hvcnRSZWdleCA9IG1hdGNoV29yZDtcbiAgICBmdW5jdGlvbiBtb250aHNTaG9ydFJlZ2V4IChpc1N0cmljdCkge1xuICAgICAgICBpZiAodGhpcy5fbW9udGhzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVNb250aHNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzU2hvcnRSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzU2hvcnRSZWdleCA9IGRlZmF1bHRNb250aHNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXggJiYgaXNTdHJpY3QgP1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXggOiB0aGlzLl9tb250aHNTaG9ydFJlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRNb250aHNSZWdleCA9IG1hdGNoV29yZDtcbiAgICBmdW5jdGlvbiBtb250aHNSZWdleCAoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlTW9udGhzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cmljdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1JlZ2V4ID0gZGVmYXVsdE1vbnRoc1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4ICYmIGlzU3RyaWN0ID9cbiAgICAgICAgICAgICAgICB0aGlzLl9tb250aHNTdHJpY3RSZWdleCA6IHRoaXMuX21vbnRoc1JlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZU1vbnRoc1BhcnNlICgpIHtcbiAgICAgICAgZnVuY3Rpb24gY21wTGVuUmV2KGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBiLmxlbmd0aCAtIGEubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNob3J0UGllY2VzID0gW10sIGxvbmdQaWVjZXMgPSBbXSwgbWl4ZWRQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIGksIG1vbTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCBpXSk7XG4gICAgICAgICAgICBzaG9ydFBpZWNlcy5wdXNoKHRoaXMubW9udGhzU2hvcnQobW9tLCAnJykpO1xuICAgICAgICAgICAgbG9uZ1BpZWNlcy5wdXNoKHRoaXMubW9udGhzKG1vbSwgJycpKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2godGhpcy5tb250aHMobW9tLCAnJykpO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaCh0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBTb3J0aW5nIG1ha2VzIHN1cmUgaWYgb25lIG1vbnRoIChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyIGl0XG4gICAgICAgIC8vIHdpbGwgbWF0Y2ggdGhlIGxvbmdlciBwaWVjZS5cbiAgICAgICAgc2hvcnRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBsb25nUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbWl4ZWRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgc2hvcnRQaWVjZXNbaV0gPSByZWdleEVzY2FwZShzaG9ydFBpZWNlc1tpXSk7XG4gICAgICAgICAgICBsb25nUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobG9uZ1BpZWNlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDI0OyBpKyspIHtcbiAgICAgICAgICAgIG1peGVkUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobWl4ZWRQaWVjZXNbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbW9udGhzUmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBtaXhlZFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX21vbnRoc1Nob3J0UmVnZXggPSB0aGlzLl9tb250aHNSZWdleDtcbiAgICAgICAgdGhpcy5fbW9udGhzU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBsb25nUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICAgICAgdGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIHNob3J0UGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVEYXRlICh5LCBtLCBkLCBoLCBNLCBzLCBtcykge1xuICAgICAgICAvLyBjYW4ndCBqdXN0IGFwcGx5KCkgdG8gY3JlYXRlIGEgZGF0ZTpcbiAgICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xLzE4MTM0OFxuICAgICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKHksIG0sIGQsIGgsIE0sIHMsIG1zKTtcblxuICAgICAgICAvLyB0aGUgZGF0ZSBjb25zdHJ1Y3RvciByZW1hcHMgeWVhcnMgMC05OSB0byAxOTAwLTE5OTlcbiAgICAgICAgaWYgKHkgPCAxMDAgJiYgeSA+PSAwICYmIGlzRmluaXRlKGRhdGUuZ2V0RnVsbFllYXIoKSkpIHtcbiAgICAgICAgICAgIGRhdGUuc2V0RnVsbFllYXIoeSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlVVRDRGF0ZSAoeSkge1xuICAgICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDLmFwcGx5KG51bGwsIGFyZ3VtZW50cykpO1xuXG4gICAgICAgIC8vIHRoZSBEYXRlLlVUQyBmdW5jdGlvbiByZW1hcHMgeWVhcnMgMC05OSB0byAxOTAwLTE5OTlcbiAgICAgICAgaWYgKHkgPCAxMDAgJiYgeSA+PSAwICYmIGlzRmluaXRlKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSkpIHtcbiAgICAgICAgICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgLy8gc3RhcnQtb2YtZmlyc3Qtd2VlayAtIHN0YXJ0LW9mLXllYXJcbiAgICBmdW5jdGlvbiBmaXJzdFdlZWtPZmZzZXQoeWVhciwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIC8vIGZpcnN0LXdlZWsgZGF5IC0tIHdoaWNoIGphbnVhcnkgaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrICg0IGZvciBpc28sIDEgZm9yIG90aGVyKVxuICAgICAgICAgICAgZndkID0gNyArIGRvdyAtIGRveSxcbiAgICAgICAgICAgIC8vIGZpcnN0LXdlZWsgZGF5IGxvY2FsIHdlZWtkYXkgLS0gd2hpY2ggbG9jYWwgd2Vla2RheSBpcyBmd2RcbiAgICAgICAgICAgIGZ3ZGx3ID0gKDcgKyBjcmVhdGVVVENEYXRlKHllYXIsIDAsIGZ3ZCkuZ2V0VVRDRGF5KCkgLSBkb3cpICUgNztcblxuICAgICAgICByZXR1cm4gLWZ3ZGx3ICsgZndkIC0gMTtcbiAgICB9XG5cbiAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlI0NhbGN1bGF0aW5nX2FfZGF0ZV9naXZlbl90aGVfeWVhci4yQ193ZWVrX251bWJlcl9hbmRfd2Vla2RheVxuICAgIGZ1bmN0aW9uIGRheU9mWWVhckZyb21XZWVrcyh5ZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSkge1xuICAgICAgICB2YXIgbG9jYWxXZWVrZGF5ID0gKDcgKyB3ZWVrZGF5IC0gZG93KSAlIDcsXG4gICAgICAgICAgICB3ZWVrT2Zmc2V0ID0gZmlyc3RXZWVrT2Zmc2V0KHllYXIsIGRvdywgZG95KSxcbiAgICAgICAgICAgIGRheU9mWWVhciA9IDEgKyA3ICogKHdlZWsgLSAxKSArIGxvY2FsV2Vla2RheSArIHdlZWtPZmZzZXQsXG4gICAgICAgICAgICByZXNZZWFyLCByZXNEYXlPZlllYXI7XG5cbiAgICAgICAgaWYgKGRheU9mWWVhciA8PSAwKSB7XG4gICAgICAgICAgICByZXNZZWFyID0geWVhciAtIDE7XG4gICAgICAgICAgICByZXNEYXlPZlllYXIgPSBkYXlzSW5ZZWFyKHJlc1llYXIpICsgZGF5T2ZZZWFyO1xuICAgICAgICB9IGVsc2UgaWYgKGRheU9mWWVhciA+IGRheXNJblllYXIoeWVhcikpIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSB5ZWFyICsgMTtcbiAgICAgICAgICAgIHJlc0RheU9mWWVhciA9IGRheU9mWWVhciAtIGRheXNJblllYXIoeWVhcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNZZWFyID0geWVhcjtcbiAgICAgICAgICAgIHJlc0RheU9mWWVhciA9IGRheU9mWWVhcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB5ZWFyOiByZXNZZWFyLFxuICAgICAgICAgICAgZGF5T2ZZZWFyOiByZXNEYXlPZlllYXJcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3ZWVrT2ZZZWFyKG1vbSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIHdlZWtPZmZzZXQgPSBmaXJzdFdlZWtPZmZzZXQobW9tLnllYXIoKSwgZG93LCBkb3kpLFxuICAgICAgICAgICAgd2VlayA9IE1hdGguZmxvb3IoKG1vbS5kYXlPZlllYXIoKSAtIHdlZWtPZmZzZXQgLSAxKSAvIDcpICsgMSxcbiAgICAgICAgICAgIHJlc1dlZWssIHJlc1llYXI7XG5cbiAgICAgICAgaWYgKHdlZWsgPCAxKSB7XG4gICAgICAgICAgICByZXNZZWFyID0gbW9tLnllYXIoKSAtIDE7XG4gICAgICAgICAgICByZXNXZWVrID0gd2VlayArIHdlZWtzSW5ZZWFyKHJlc1llYXIsIGRvdywgZG95KTtcbiAgICAgICAgfSBlbHNlIGlmICh3ZWVrID4gd2Vla3NJblllYXIobW9tLnllYXIoKSwgZG93LCBkb3kpKSB7XG4gICAgICAgICAgICByZXNXZWVrID0gd2VlayAtIHdlZWtzSW5ZZWFyKG1vbS55ZWFyKCksIGRvdywgZG95KTtcbiAgICAgICAgICAgIHJlc1llYXIgPSBtb20ueWVhcigpICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSBtb20ueWVhcigpO1xuICAgICAgICAgICAgcmVzV2VlayA9IHdlZWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2VlazogcmVzV2VlayxcbiAgICAgICAgICAgIHllYXI6IHJlc1llYXJcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3ZWVrc0luWWVhcih5ZWFyLCBkb3csIGRveSkge1xuICAgICAgICB2YXIgd2Vla09mZnNldCA9IGZpcnN0V2Vla09mZnNldCh5ZWFyLCBkb3csIGRveSksXG4gICAgICAgICAgICB3ZWVrT2Zmc2V0TmV4dCA9IGZpcnN0V2Vla09mZnNldCh5ZWFyICsgMSwgZG93LCBkb3kpO1xuICAgICAgICByZXR1cm4gKGRheXNJblllYXIoeWVhcikgLSB3ZWVrT2Zmc2V0ICsgd2Vla09mZnNldE5leHQpIC8gNztcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigndycsIFsnd3cnLCAyXSwgJ3dvJywgJ3dlZWsnKTtcbiAgICBhZGRGb3JtYXRUb2tlbignVycsIFsnV1cnLCAyXSwgJ1dvJywgJ2lzb1dlZWsnKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnd2VlaycsICd3Jyk7XG4gICAgYWRkVW5pdEFsaWFzKCdpc29XZWVrJywgJ1cnKTtcblxuICAgIC8vIFBSSU9SSVRJRVNcblxuICAgIGFkZFVuaXRQcmlvcml0eSgnd2VlaycsIDUpO1xuICAgIGFkZFVuaXRQcmlvcml0eSgnaXNvV2VlaycsIDUpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbigndycsICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ3d3JywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1cnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdXVycsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcblxuICAgIGFkZFdlZWtQYXJzZVRva2VuKFsndycsICd3dycsICdXJywgJ1dXJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuLnN1YnN0cigwLCAxKV0gPSB0b0ludChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICAvLyBMT0NBTEVTXG5cbiAgICBmdW5jdGlvbiBsb2NhbGVXZWVrIChtb20pIHtcbiAgICAgICAgcmV0dXJuIHdlZWtPZlllYXIobW9tLCB0aGlzLl93ZWVrLmRvdywgdGhpcy5fd2Vlay5kb3kpLndlZWs7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVXZWVrID0ge1xuICAgICAgICBkb3cgOiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgZG95IDogNiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMXN0IGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVGaXJzdERheU9mV2VlayAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93ZWVrLmRvdztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVGaXJzdERheU9mWWVhciAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93ZWVrLmRveTtcbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBnZXRTZXRXZWVrIChpbnB1dCkge1xuICAgICAgICB2YXIgd2VlayA9IHRoaXMubG9jYWxlRGF0YSgpLndlZWsodGhpcyk7XG4gICAgICAgIHJldHVybiBpbnB1dCA9PSBudWxsID8gd2VlayA6IHRoaXMuYWRkKChpbnB1dCAtIHdlZWspICogNywgJ2QnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRJU09XZWVrIChpbnB1dCkge1xuICAgICAgICB2YXIgd2VlayA9IHdlZWtPZlllYXIodGhpcywgMSwgNCkud2VlaztcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyB3ZWVrIDogdGhpcy5hZGQoKGlucHV0IC0gd2VlaykgKiA3LCAnZCcpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdkJywgMCwgJ2RvJywgJ2RheScpO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2RkJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXNNaW4odGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdkZGQnLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5c1Nob3J0KHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignZGRkZCcsIDAsIDAsIGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzKHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignZScsIDAsIDAsICd3ZWVrZGF5Jyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ0UnLCAwLCAwLCAnaXNvV2Vla2RheScpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdkYXknLCAnZCcpO1xuICAgIGFkZFVuaXRBbGlhcygnd2Vla2RheScsICdlJyk7XG4gICAgYWRkVW5pdEFsaWFzKCdpc29XZWVrZGF5JywgJ0UnKTtcblxuICAgIC8vIFBSSU9SSVRZXG4gICAgYWRkVW5pdFByaW9yaXR5KCdkYXknLCAxMSk7XG4gICAgYWRkVW5pdFByaW9yaXR5KCd3ZWVrZGF5JywgMTEpO1xuICAgIGFkZFVuaXRQcmlvcml0eSgnaXNvV2Vla2RheScsIDExKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ2QnLCAgICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2UnLCAgICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0UnLCAgICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2RkJywgICBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLndlZWtkYXlzTWluUmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2RkZCcsICAgZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c1Nob3J0UmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2RkZGQnLCAgIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUud2Vla2RheXNSZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihbJ2RkJywgJ2RkZCcsICdkZGRkJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB2YXIgd2Vla2RheSA9IGNvbmZpZy5fbG9jYWxlLndlZWtkYXlzUGFyc2UoaW5wdXQsIHRva2VuLCBjb25maWcuX3N0cmljdCk7XG4gICAgICAgIC8vIGlmIHdlIGRpZG4ndCBnZXQgYSB3ZWVrZGF5IG5hbWUsIG1hcmsgdGhlIGRhdGUgYXMgaW52YWxpZFxuICAgICAgICBpZiAod2Vla2RheSAhPSBudWxsKSB7XG4gICAgICAgICAgICB3ZWVrLmQgPSB3ZWVrZGF5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuaW52YWxpZFdlZWtkYXkgPSBpbnB1dDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgYWRkV2Vla1BhcnNlVG9rZW4oWydkJywgJ2UnLCAnRSddLCBmdW5jdGlvbiAoaW5wdXQsIHdlZWssIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgd2Vla1t0b2tlbl0gPSB0b0ludChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICBmdW5jdGlvbiBwYXJzZVdlZWtkYXkoaW5wdXQsIGxvY2FsZSkge1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc05hTihpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUludChpbnB1dCwgMTApO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5wdXQgPSBsb2NhbGUud2Vla2RheXNQYXJzZShpbnB1dCk7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZUlzb1dlZWtkYXkoaW5wdXQsIGxvY2FsZSkge1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c1BhcnNlKGlucHV0KSAlIDcgfHwgNztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNOYU4oaW5wdXQpID8gbnVsbCA6IGlucHV0O1xuICAgIH1cblxuICAgIC8vIExPQ0FMRVNcblxuICAgIHZhciBkZWZhdWx0TG9jYWxlV2Vla2RheXMgPSAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KCdfJyk7XG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXMgKG0sIGZvcm1hdCkge1xuICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX3dlZWtkYXlzKSA/IHRoaXMuX3dlZWtkYXlzIDpcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1snc3RhbmRhbG9uZSddO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX3dlZWtkYXlzKSA/IHRoaXMuX3dlZWtkYXlzW20uZGF5KCldIDpcbiAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzW3RoaXMuX3dlZWtkYXlzLmlzRm9ybWF0LnRlc3QoZm9ybWF0KSA/ICdmb3JtYXQnIDogJ3N0YW5kYWxvbmUnXVttLmRheSgpXTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZVdlZWtkYXlzU2hvcnQgPSAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpO1xuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWtkYXlzU2hvcnQgKG0pIHtcbiAgICAgICAgcmV0dXJuIChtKSA/IHRoaXMuX3dlZWtkYXlzU2hvcnRbbS5kYXkoKV0gOiB0aGlzLl93ZWVrZGF5c1Nob3J0O1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TG9jYWxlV2Vla2RheXNNaW4gPSAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyk7XG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXNNaW4gKG0pIHtcbiAgICAgICAgcmV0dXJuIChtKSA/IHRoaXMuX3dlZWtkYXlzTWluW20uZGF5KCldIDogdGhpcy5fd2Vla2RheXNNaW47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlU3RyaWN0UGFyc2UkMSh3ZWVrZGF5TmFtZSwgZm9ybWF0LCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIGksIGlpLCBtb20sIGxsYyA9IHdlZWtkYXlOYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZSkge1xuICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9taW5XZWVrZGF5c1BhcnNlID0gW107XG5cbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyArK2kpIHtcbiAgICAgICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIDFdKS5kYXkoaSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZVtpXSA9IHRoaXMud2Vla2RheXNNaW4obW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbaV0gPSB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1BhcnNlW2ldID0gdGhpcy53ZWVrZGF5cyhtb20sICcnKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2RkZGQnKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdkZGQnKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdkZGRkJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdkZGQnKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXNQYXJzZSAod2Vla2RheU5hbWUsIGZvcm1hdCwgc3RyaWN0KSB7XG4gICAgICAgIHZhciBpLCBtb20sIHJlZ2V4O1xuXG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGVTdHJpY3RQYXJzZSQxLmNhbGwodGhpcywgd2Vla2RheU5hbWUsIGZvcm1hdCwgc3RyaWN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZSkge1xuICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9mdWxsV2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgLy8gbWFrZSB0aGUgcmVnZXggaWYgd2UgZG9uJ3QgaGF2ZSBpdCBhbHJlYWR5XG5cbiAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgMV0pLmRheShpKTtcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgIXRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2ldKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMud2Vla2RheXMobW9tLCAnJykucmVwbGFjZSgnLicsICdcXFxcLj8nKSArICckJywgJ2knKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMud2Vla2RheXNTaG9ydChtb20sICcnKS5yZXBsYWNlKCcuJywgJ1xcXFwuPycpICsgJyQnLCAnaScpO1xuICAgICAgICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMud2Vla2RheXNNaW4obW9tLCAnJykucmVwbGFjZSgnLicsICdcXFxcLj8nKSArICckJywgJ2knKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZVtpXSkge1xuICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ14nICsgdGhpcy53ZWVrZGF5cyhtb20sICcnKSArICd8XicgKyB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJykgKyAnfF4nICsgdGhpcy53ZWVrZGF5c01pbihtb20sICcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1BhcnNlW2ldID0gbmV3IFJlZ0V4cChyZWdleC5yZXBsYWNlKCcuJywgJycpLCAnaScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdGVzdCB0aGUgcmVnZXhcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgZm9ybWF0ID09PSAnZGRkZCcgJiYgdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RyaWN0ICYmIGZvcm1hdCA9PT0gJ2RkZCcgJiYgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW2ldLnRlc3Qod2Vla2RheU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdkZCcgJiYgdGhpcy5fbWluV2Vla2RheXNQYXJzZVtpXS50ZXN0KHdlZWtkYXlOYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyaWN0ICYmIHRoaXMuX3dlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldERheU9mV2VlayAoaW5wdXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkYXkgPSB0aGlzLl9pc1VUQyA/IHRoaXMuX2QuZ2V0VVRDRGF5KCkgOiB0aGlzLl9kLmdldERheSgpO1xuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaW5wdXQgPSBwYXJzZVdlZWtkYXkoaW5wdXQsIHRoaXMubG9jYWxlRGF0YSgpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZChpbnB1dCAtIGRheSwgJ2QnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBkYXk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRMb2NhbGVEYXlPZldlZWsgKGlucHV0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCAhPSBudWxsID8gdGhpcyA6IE5hTjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgd2Vla2RheSA9ICh0aGlzLmRheSgpICsgNyAtIHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdykgJSA3O1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IHdlZWtkYXkgOiB0aGlzLmFkZChpbnB1dCAtIHdlZWtkYXksICdkJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0SVNPRGF5T2ZXZWVrIChpbnB1dCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgIT0gbnVsbCA/IHRoaXMgOiBOYU47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBiZWhhdmVzIHRoZSBzYW1lIGFzIG1vbWVudCNkYXkgZXhjZXB0XG4gICAgICAgIC8vIGFzIGEgZ2V0dGVyLCByZXR1cm5zIDcgaW5zdGVhZCBvZiAwICgxLTcgcmFuZ2UgaW5zdGVhZCBvZiAwLTYpXG4gICAgICAgIC8vIGFzIGEgc2V0dGVyLCBzdW5kYXkgc2hvdWxkIGJlbG9uZyB0byB0aGUgcHJldmlvdXMgd2Vlay5cblxuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIHdlZWtkYXkgPSBwYXJzZUlzb1dlZWtkYXkoaW5wdXQsIHRoaXMubG9jYWxlRGF0YSgpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRheSh0aGlzLmRheSgpICUgNyA/IHdlZWtkYXkgOiB3ZWVrZGF5IC0gNyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXkoKSB8fCA3O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRXZWVrZGF5c1JlZ2V4ID0gbWF0Y2hXb3JkO1xuICAgIGZ1bmN0aW9uIHdlZWtkYXlzUmVnZXggKGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1JlZ2V4ID0gZGVmYXVsdFdlZWtkYXlzUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleCA6IHRoaXMuX3dlZWtkYXlzUmVnZXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdFdlZWtkYXlzU2hvcnRSZWdleCA9IG1hdGNoV29yZDtcbiAgICBmdW5jdGlvbiB3ZWVrZGF5c1Nob3J0UmVnZXggKGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNTaG9ydFJlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXggPSBkZWZhdWx0V2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4IDogdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRXZWVrZGF5c01pblJlZ2V4ID0gbWF0Y2hXb3JkO1xuICAgIGZ1bmN0aW9uIHdlZWtkYXlzTWluUmVnZXggKGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c01pblJlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c01pblJlZ2V4ID0gZGVmYXVsdFdlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleCA6IHRoaXMuX3dlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGNvbXB1dGVXZWVrZGF5c1BhcnNlICgpIHtcbiAgICAgICAgZnVuY3Rpb24gY21wTGVuUmV2KGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBiLmxlbmd0aCAtIGEubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG1pblBpZWNlcyA9IFtdLCBzaG9ydFBpZWNlcyA9IFtdLCBsb25nUGllY2VzID0gW10sIG1peGVkUGllY2VzID0gW10sXG4gICAgICAgICAgICBpLCBtb20sIG1pbnAsIHNob3J0cCwgbG9uZ3A7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCAxXSkuZGF5KGkpO1xuICAgICAgICAgICAgbWlucCA9IHRoaXMud2Vla2RheXNNaW4obW9tLCAnJyk7XG4gICAgICAgICAgICBzaG9ydHAgPSB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJyk7XG4gICAgICAgICAgICBsb25ncCA9IHRoaXMud2Vla2RheXMobW9tLCAnJyk7XG4gICAgICAgICAgICBtaW5QaWVjZXMucHVzaChtaW5wKTtcbiAgICAgICAgICAgIHNob3J0UGllY2VzLnB1c2goc2hvcnRwKTtcbiAgICAgICAgICAgIGxvbmdQaWVjZXMucHVzaChsb25ncCk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKG1pbnApO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChzaG9ydHApO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChsb25ncCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU29ydGluZyBtYWtlcyBzdXJlIGlmIG9uZSB3ZWVrZGF5IChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyIGl0XG4gICAgICAgIC8vIHdpbGwgbWF0Y2ggdGhlIGxvbmdlciBwaWVjZS5cbiAgICAgICAgbWluUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgc2hvcnRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBsb25nUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbWl4ZWRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgICAgICAgICBzaG9ydFBpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKHNob3J0UGllY2VzW2ldKTtcbiAgICAgICAgICAgIGxvbmdQaWVjZXNbaV0gPSByZWdleEVzY2FwZShsb25nUGllY2VzW2ldKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobWl4ZWRQaWVjZXNbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fd2Vla2RheXNSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIG1peGVkUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICAgICAgdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4ID0gdGhpcy5fd2Vla2RheXNSZWdleDtcbiAgICAgICAgdGhpcy5fd2Vla2RheXNNaW5SZWdleCA9IHRoaXMuX3dlZWtkYXlzUmVnZXg7XG5cbiAgICAgICAgdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIGxvbmdQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgICAgICB0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBzaG9ydFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBtaW5QaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGZ1bmN0aW9uIGhGb3JtYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvdXJzKCkgJSAxMiB8fCAxMjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBrRm9ybWF0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3VycygpIHx8IDI0O1xuICAgIH1cblxuICAgIGFkZEZvcm1hdFRva2VuKCdIJywgWydISCcsIDJdLCAwLCAnaG91cicpO1xuICAgIGFkZEZvcm1hdFRva2VuKCdoJywgWydoaCcsIDJdLCAwLCBoRm9ybWF0KTtcbiAgICBhZGRGb3JtYXRUb2tlbignaycsIFsna2snLCAyXSwgMCwga0Zvcm1hdCk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignaG1tJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gJycgKyBoRm9ybWF0LmFwcGx5KHRoaXMpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2htbXNzJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gJycgKyBoRm9ybWF0LmFwcGx5KHRoaXMpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpICtcbiAgICAgICAgICAgIHplcm9GaWxsKHRoaXMuc2Vjb25kcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdIbW0nLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAnJyArIHRoaXMuaG91cnMoKSArIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdIbW1zcycsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICcnICsgdGhpcy5ob3VycygpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpICtcbiAgICAgICAgICAgIHplcm9GaWxsKHRoaXMuc2Vjb25kcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIG1lcmlkaWVtICh0b2tlbiwgbG93ZXJjYXNlKSB7XG4gICAgICAgIGFkZEZvcm1hdFRva2VuKHRva2VuLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubWVyaWRpZW0odGhpcy5ob3VycygpLCB0aGlzLm1pbnV0ZXMoKSwgbG93ZXJjYXNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbWVyaWRpZW0oJ2EnLCB0cnVlKTtcbiAgICBtZXJpZGllbSgnQScsIGZhbHNlKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnaG91cicsICdoJyk7XG5cbiAgICAvLyBQUklPUklUWVxuICAgIGFkZFVuaXRQcmlvcml0eSgnaG91cicsIDEzKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGZ1bmN0aW9uIG1hdGNoTWVyaWRpZW0gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5fbWVyaWRpZW1QYXJzZTtcbiAgICB9XG5cbiAgICBhZGRSZWdleFRva2VuKCdhJywgIG1hdGNoTWVyaWRpZW0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0EnLCAgbWF0Y2hNZXJpZGllbSk7XG4gICAgYWRkUmVnZXhUb2tlbignSCcsICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2gnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdrJywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignSEgnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignaGgnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbigna2snLCBtYXRjaDF0bzIsIG1hdGNoMik7XG5cbiAgICBhZGRSZWdleFRva2VuKCdobW0nLCBtYXRjaDN0bzQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2htbXNzJywgbWF0Y2g1dG82KTtcbiAgICBhZGRSZWdleFRva2VuKCdIbW0nLCBtYXRjaDN0bzQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0htbXNzJywgbWF0Y2g1dG82KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydIJywgJ0hIJ10sIEhPVVIpO1xuICAgIGFkZFBhcnNlVG9rZW4oWydrJywgJ2trJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIga0lucHV0ID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICBhcnJheVtIT1VSXSA9IGtJbnB1dCA9PT0gMjQgPyAwIDoga0lucHV0O1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oWydhJywgJ0EnXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZy5faXNQbSA9IGNvbmZpZy5fbG9jYWxlLmlzUE0oaW5wdXQpO1xuICAgICAgICBjb25maWcuX21lcmlkaWVtID0gaW5wdXQ7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbihbJ2gnLCAnaGgnXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdobW0nLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIHBvcyA9IGlucHV0Lmxlbmd0aCAtIDI7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQuc3Vic3RyKDAsIHBvcykpO1xuICAgICAgICBhcnJheVtNSU5VVEVdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvcykpO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdobW1zcycsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIgcG9zMSA9IGlucHV0Lmxlbmd0aCAtIDQ7XG4gICAgICAgIHZhciBwb3MyID0gaW5wdXQubGVuZ3RoIC0gMjtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dC5zdWJzdHIoMCwgcG9zMSkpO1xuICAgICAgICBhcnJheVtNSU5VVEVdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvczEsIDIpKTtcbiAgICAgICAgYXJyYXlbU0VDT05EXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MyKSk7XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPSB0cnVlO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ0htbScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIgcG9zID0gaW5wdXQubGVuZ3RoIC0gMjtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dC5zdWJzdHIoMCwgcG9zKSk7XG4gICAgICAgIGFycmF5W01JTlVURV0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zKSk7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignSG1tc3MnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIHBvczEgPSBpbnB1dC5sZW5ndGggLSA0O1xuICAgICAgICB2YXIgcG9zMiA9IGlucHV0Lmxlbmd0aCAtIDI7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQuc3Vic3RyKDAsIHBvczEpKTtcbiAgICAgICAgYXJyYXlbTUlOVVRFXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MxLCAyKSk7XG4gICAgICAgIGFycmF5W1NFQ09ORF0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zMikpO1xuICAgIH0pO1xuXG4gICAgLy8gTE9DQUxFU1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlSXNQTSAoaW5wdXQpIHtcbiAgICAgICAgLy8gSUU4IFF1aXJrcyBNb2RlICYgSUU3IFN0YW5kYXJkcyBNb2RlIGRvIG5vdCBhbGxvdyBhY2Nlc3Npbmcgc3RyaW5ncyBsaWtlIGFycmF5c1xuICAgICAgICAvLyBVc2luZyBjaGFyQXQgc2hvdWxkIGJlIG1vcmUgY29tcGF0aWJsZS5cbiAgICAgICAgcmV0dXJuICgoaW5wdXQgKyAnJykudG9Mb3dlckNhc2UoKS5jaGFyQXQoMCkgPT09ICdwJyk7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVNZXJpZGllbVBhcnNlID0gL1thcF1cXC4/bT9cXC4/L2k7XG4gICAgZnVuY3Rpb24gbG9jYWxlTWVyaWRpZW0gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgIGlmIChob3VycyA+IDExKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdwbScgOiAnUE0nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnYW0nIDogJ0FNJztcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgLy8gU2V0dGluZyB0aGUgaG91ciBzaG91bGQga2VlcCB0aGUgdGltZSwgYmVjYXVzZSB0aGUgdXNlciBleHBsaWNpdGx5XG4gICAgLy8gc3BlY2lmaWVkIHdoaWNoIGhvdXIgdGhleSB3YW50LiBTbyB0cnlpbmcgdG8gbWFpbnRhaW4gdGhlIHNhbWUgaG91ciAoaW5cbiAgICAvLyBhIG5ldyB0aW1lem9uZSkgbWFrZXMgc2Vuc2UuIEFkZGluZy9zdWJ0cmFjdGluZyBob3VycyBkb2VzIG5vdCBmb2xsb3dcbiAgICAvLyB0aGlzIHJ1bGUuXG4gICAgdmFyIGdldFNldEhvdXIgPSBtYWtlR2V0U2V0KCdIb3VycycsIHRydWUpO1xuXG4gICAgdmFyIGJhc2VDb25maWcgPSB7XG4gICAgICAgIGNhbGVuZGFyOiBkZWZhdWx0Q2FsZW5kYXIsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiBkZWZhdWx0TG9uZ0RhdGVGb3JtYXQsXG4gICAgICAgIGludmFsaWREYXRlOiBkZWZhdWx0SW52YWxpZERhdGUsXG4gICAgICAgIG9yZGluYWw6IGRlZmF1bHRPcmRpbmFsLFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiBkZWZhdWx0RGF5T2ZNb250aE9yZGluYWxQYXJzZSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiBkZWZhdWx0UmVsYXRpdmVUaW1lLFxuXG4gICAgICAgIG1vbnRoczogZGVmYXVsdExvY2FsZU1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IGRlZmF1bHRMb2NhbGVNb250aHNTaG9ydCxcblxuICAgICAgICB3ZWVrOiBkZWZhdWx0TG9jYWxlV2VlayxcblxuICAgICAgICB3ZWVrZGF5czogZGVmYXVsdExvY2FsZVdlZWtkYXlzLFxuICAgICAgICB3ZWVrZGF5c01pbjogZGVmYXVsdExvY2FsZVdlZWtkYXlzTWluLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiBkZWZhdWx0TG9jYWxlV2Vla2RheXNTaG9ydCxcblxuICAgICAgICBtZXJpZGllbVBhcnNlOiBkZWZhdWx0TG9jYWxlTWVyaWRpZW1QYXJzZVxuICAgIH07XG5cbiAgICAvLyBpbnRlcm5hbCBzdG9yYWdlIGZvciBsb2NhbGUgY29uZmlnIGZpbGVzXG4gICAgdmFyIGxvY2FsZXMgPSB7fTtcbiAgICB2YXIgbG9jYWxlRmFtaWxpZXMgPSB7fTtcbiAgICB2YXIgZ2xvYmFsTG9jYWxlO1xuXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplTG9jYWxlKGtleSkge1xuICAgICAgICByZXR1cm4ga2V5ID8ga2V5LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgnXycsICctJykgOiBrZXk7XG4gICAgfVxuXG4gICAgLy8gcGljayB0aGUgbG9jYWxlIGZyb20gdGhlIGFycmF5XG4gICAgLy8gdHJ5IFsnZW4tYXUnLCAnZW4tZ2InXSBhcyAnZW4tYXUnLCAnZW4tZ2InLCAnZW4nLCBhcyBpbiBtb3ZlIHRocm91Z2ggdGhlIGxpc3QgdHJ5aW5nIGVhY2hcbiAgICAvLyBzdWJzdHJpbmcgZnJvbSBtb3N0IHNwZWNpZmljIHRvIGxlYXN0LCBidXQgbW92ZSB0byB0aGUgbmV4dCBhcnJheSBpdGVtIGlmIGl0J3MgYSBtb3JlIHNwZWNpZmljIHZhcmlhbnQgdGhhbiB0aGUgY3VycmVudCByb290XG4gICAgZnVuY3Rpb24gY2hvb3NlTG9jYWxlKG5hbWVzKSB7XG4gICAgICAgIHZhciBpID0gMCwgaiwgbmV4dCwgbG9jYWxlLCBzcGxpdDtcblxuICAgICAgICB3aGlsZSAoaSA8IG5hbWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgc3BsaXQgPSBub3JtYWxpemVMb2NhbGUobmFtZXNbaV0pLnNwbGl0KCctJyk7XG4gICAgICAgICAgICBqID0gc3BsaXQubGVuZ3RoO1xuICAgICAgICAgICAgbmV4dCA9IG5vcm1hbGl6ZUxvY2FsZShuYW1lc1tpICsgMV0pO1xuICAgICAgICAgICAgbmV4dCA9IG5leHQgPyBuZXh0LnNwbGl0KCctJykgOiBudWxsO1xuICAgICAgICAgICAgd2hpbGUgKGogPiAwKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxlID0gbG9hZExvY2FsZShzcGxpdC5zbGljZSgwLCBqKS5qb2luKCctJykpO1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG5leHQgJiYgbmV4dC5sZW5ndGggPj0gaiAmJiBjb21wYXJlQXJyYXlzKHNwbGl0LCBuZXh0LCB0cnVlKSA+PSBqIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAvL3RoZSBuZXh0IGFycmF5IGl0ZW0gaXMgYmV0dGVyIHRoYW4gYSBzaGFsbG93ZXIgc3Vic3RyaW5nIG9mIHRoaXMgb25lXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBqLS07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdsb2JhbExvY2FsZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2FkTG9jYWxlKG5hbWUpIHtcbiAgICAgICAgdmFyIG9sZExvY2FsZSA9IG51bGw7XG4gICAgICAgIC8vIFRPRE86IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIHJlZ2lzdGVyIGFuZCBsb2FkIGFsbCB0aGUgbG9jYWxlcyBpbiBOb2RlXG4gICAgICAgIGlmICghbG9jYWxlc1tuYW1lXSAmJiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpICYmXG4gICAgICAgICAgICAgICAgbW9kdWxlICYmIG1vZHVsZS5leHBvcnRzKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIG9sZExvY2FsZSA9IGdsb2JhbExvY2FsZS5fYWJicjtcbiAgICAgICAgICAgICAgICB2YXIgYWxpYXNlZFJlcXVpcmUgPSByZXF1aXJlO1xuICAgICAgICAgICAgICAgIGFsaWFzZWRSZXF1aXJlKCcuL2xvY2FsZS8nICsgbmFtZSk7XG4gICAgICAgICAgICAgICAgZ2V0U2V0R2xvYmFsTG9jYWxlKG9sZExvY2FsZSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2NhbGVzW25hbWVdO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBsb2FkIGxvY2FsZSBhbmQgdGhlbiBzZXQgdGhlIGdsb2JhbCBsb2NhbGUuICBJZlxuICAgIC8vIG5vIGFyZ3VtZW50cyBhcmUgcGFzc2VkIGluLCBpdCB3aWxsIHNpbXBseSByZXR1cm4gdGhlIGN1cnJlbnQgZ2xvYmFsXG4gICAgLy8gbG9jYWxlIGtleS5cbiAgICBmdW5jdGlvbiBnZXRTZXRHbG9iYWxMb2NhbGUgKGtleSwgdmFsdWVzKSB7XG4gICAgICAgIHZhciBkYXRhO1xuICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWVzKSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBnZXRMb2NhbGUoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBkZWZpbmVMb2NhbGUoa2V5LCB2YWx1ZXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgIC8vIG1vbWVudC5kdXJhdGlvbi5fbG9jYWxlID0gbW9tZW50Ll9sb2NhbGUgPSBkYXRhO1xuICAgICAgICAgICAgICAgIGdsb2JhbExvY2FsZSA9IGRhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoKHR5cGVvZiBjb25zb2xlICE9PSAgJ3VuZGVmaW5lZCcpICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgICAgICAgICAgICAgICAvL3dhcm4gdXNlciBpZiBhcmd1bWVudHMgYXJlIHBhc3NlZCBidXQgdGhlIGxvY2FsZSBjb3VsZCBub3QgYmUgc2V0XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignTG9jYWxlICcgKyBrZXkgKyAgJyBub3QgZm91bmQuIERpZCB5b3UgZm9yZ2V0IHRvIGxvYWQgaXQ/Jyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdsb2JhbExvY2FsZS5fYWJicjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWZpbmVMb2NhbGUgKG5hbWUsIGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnICE9PSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgbG9jYWxlLCBwYXJlbnRDb25maWcgPSBiYXNlQ29uZmlnO1xuICAgICAgICAgICAgY29uZmlnLmFiYnIgPSBuYW1lO1xuICAgICAgICAgICAgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGRlcHJlY2F0ZVNpbXBsZSgnZGVmaW5lTG9jYWxlT3ZlcnJpZGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSBtb21lbnQudXBkYXRlTG9jYWxlKGxvY2FsZU5hbWUsIGNvbmZpZykgdG8gY2hhbmdlICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2FuIGV4aXN0aW5nIGxvY2FsZS4gbW9tZW50LmRlZmluZUxvY2FsZShsb2NhbGVOYW1lLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb25maWcpIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIGNyZWF0aW5nIGEgbmV3IGxvY2FsZSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdTZWUgaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9kZWZpbmUtbG9jYWxlLyBmb3IgbW9yZSBpbmZvLicpO1xuICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IGxvY2FsZXNbbmFtZV0uX2NvbmZpZztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLnBhcmVudExvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvY2FsZXNbY29uZmlnLnBhcmVudExvY2FsZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSBsb2NhbGVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdLl9jb25maWc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlID0gbG9hZExvY2FsZShjb25maWcucGFyZW50TG9jYWxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSBsb2NhbGUuX2NvbmZpZztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbG9jYWxlRmFtaWxpZXNbY29uZmlnLnBhcmVudExvY2FsZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVGYW1pbGllc1tjb25maWcucGFyZW50TG9jYWxlXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlRmFtaWxpZXNbY29uZmlnLnBhcmVudExvY2FsZV0ucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc6IGNvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0gPSBuZXcgTG9jYWxlKG1lcmdlQ29uZmlncyhwYXJlbnRDb25maWcsIGNvbmZpZykpO1xuXG4gICAgICAgICAgICBpZiAobG9jYWxlRmFtaWxpZXNbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICBsb2NhbGVGYW1pbGllc1tuYW1lXS5mb3JFYWNoKGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgIGRlZmluZUxvY2FsZSh4Lm5hbWUsIHguY29uZmlnKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYmFja3dhcmRzIGNvbXBhdCBmb3Igbm93OiBhbHNvIHNldCB0aGUgbG9jYWxlXG4gICAgICAgICAgICAvLyBtYWtlIHN1cmUgd2Ugc2V0IHRoZSBsb2NhbGUgQUZURVIgYWxsIGNoaWxkIGxvY2FsZXMgaGF2ZSBiZWVuXG4gICAgICAgICAgICAvLyBjcmVhdGVkLCBzbyB3ZSB3b24ndCBlbmQgdXAgd2l0aCB0aGUgY2hpbGQgbG9jYWxlIHNldC5cbiAgICAgICAgICAgIGdldFNldEdsb2JhbExvY2FsZShuYW1lKTtcblxuXG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlc1tuYW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHVzZWZ1bCBmb3IgdGVzdGluZ1xuICAgICAgICAgICAgZGVsZXRlIGxvY2FsZXNbbmFtZV07XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVwZGF0ZUxvY2FsZShuYW1lLCBjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgbG9jYWxlLCB0bXBMb2NhbGUsIHBhcmVudENvbmZpZyA9IGJhc2VDb25maWc7XG4gICAgICAgICAgICAvLyBNRVJHRVxuICAgICAgICAgICAgdG1wTG9jYWxlID0gbG9hZExvY2FsZShuYW1lKTtcbiAgICAgICAgICAgIGlmICh0bXBMb2NhbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IHRtcExvY2FsZS5fY29uZmlnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uZmlnID0gbWVyZ2VDb25maWdzKHBhcmVudENvbmZpZywgY29uZmlnKTtcbiAgICAgICAgICAgIGxvY2FsZSA9IG5ldyBMb2NhbGUoY29uZmlnKTtcbiAgICAgICAgICAgIGxvY2FsZS5wYXJlbnRMb2NhbGUgPSBsb2NhbGVzW25hbWVdO1xuICAgICAgICAgICAgbG9jYWxlc1tuYW1lXSA9IGxvY2FsZTtcblxuICAgICAgICAgICAgLy8gYmFja3dhcmRzIGNvbXBhdCBmb3Igbm93OiBhbHNvIHNldCB0aGUgbG9jYWxlXG4gICAgICAgICAgICBnZXRTZXRHbG9iYWxMb2NhbGUobmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBwYXNzIG51bGwgZm9yIGNvbmZpZyB0byB1bnVwZGF0ZSwgdXNlZnVsIGZvciB0ZXN0c1xuICAgICAgICAgICAgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGVzW25hbWVdLnBhcmVudExvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0gPSBsb2NhbGVzW25hbWVdLnBhcmVudExvY2FsZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbG9jYWxlc1tuYW1lXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvY2FsZXNbbmFtZV07XG4gICAgfVxuXG4gICAgLy8gcmV0dXJucyBsb2NhbGUgZGF0YVxuICAgIGZ1bmN0aW9uIGdldExvY2FsZSAoa2V5KSB7XG4gICAgICAgIHZhciBsb2NhbGU7XG5cbiAgICAgICAgaWYgKGtleSAmJiBrZXkuX2xvY2FsZSAmJiBrZXkuX2xvY2FsZS5fYWJicikge1xuICAgICAgICAgICAga2V5ID0ga2V5Ll9sb2NhbGUuX2FiYnI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWtleSkge1xuICAgICAgICAgICAgcmV0dXJuIGdsb2JhbExvY2FsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNBcnJheShrZXkpKSB7XG4gICAgICAgICAgICAvL3Nob3J0LWNpcmN1aXQgZXZlcnl0aGluZyBlbHNlXG4gICAgICAgICAgICBsb2NhbGUgPSBsb2FkTG9jYWxlKGtleSk7XG4gICAgICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGtleSA9IFtrZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNob29zZUxvY2FsZShrZXkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RMb2NhbGVzKCkge1xuICAgICAgICByZXR1cm4ga2V5cyhsb2NhbGVzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja092ZXJmbG93IChtKSB7XG4gICAgICAgIHZhciBvdmVyZmxvdztcbiAgICAgICAgdmFyIGEgPSBtLl9hO1xuXG4gICAgICAgIGlmIChhICYmIGdldFBhcnNpbmdGbGFncyhtKS5vdmVyZmxvdyA9PT0gLTIpIHtcbiAgICAgICAgICAgIG92ZXJmbG93ID1cbiAgICAgICAgICAgICAgICBhW01PTlRIXSAgICAgICA8IDAgfHwgYVtNT05USF0gICAgICAgPiAxMSAgPyBNT05USCA6XG4gICAgICAgICAgICAgICAgYVtEQVRFXSAgICAgICAgPCAxIHx8IGFbREFURV0gICAgICAgID4gZGF5c0luTW9udGgoYVtZRUFSXSwgYVtNT05USF0pID8gREFURSA6XG4gICAgICAgICAgICAgICAgYVtIT1VSXSAgICAgICAgPCAwIHx8IGFbSE9VUl0gICAgICAgID4gMjQgfHwgKGFbSE9VUl0gPT09IDI0ICYmIChhW01JTlVURV0gIT09IDAgfHwgYVtTRUNPTkRdICE9PSAwIHx8IGFbTUlMTElTRUNPTkRdICE9PSAwKSkgPyBIT1VSIDpcbiAgICAgICAgICAgICAgICBhW01JTlVURV0gICAgICA8IDAgfHwgYVtNSU5VVEVdICAgICAgPiA1OSAgPyBNSU5VVEUgOlxuICAgICAgICAgICAgICAgIGFbU0VDT05EXSAgICAgIDwgMCB8fCBhW1NFQ09ORF0gICAgICA+IDU5ICA/IFNFQ09ORCA6XG4gICAgICAgICAgICAgICAgYVtNSUxMSVNFQ09ORF0gPCAwIHx8IGFbTUlMTElTRUNPTkRdID4gOTk5ID8gTUlMTElTRUNPTkQgOlxuICAgICAgICAgICAgICAgIC0xO1xuXG4gICAgICAgICAgICBpZiAoZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxvd0RheU9mWWVhciAmJiAob3ZlcmZsb3cgPCBZRUFSIHx8IG92ZXJmbG93ID4gREFURSkpIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IERBVEU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxvd1dlZWtzICYmIG92ZXJmbG93ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIG92ZXJmbG93ID0gV0VFSztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChnZXRQYXJzaW5nRmxhZ3MobSkuX292ZXJmbG93V2Vla2RheSAmJiBvdmVyZmxvdyA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IFdFRUtEQVk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhtKS5vdmVyZmxvdyA9IG92ZXJmbG93O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgLy8gUGljayB0aGUgZmlyc3QgZGVmaW5lZCBvZiB0d28gb3IgdGhyZWUgYXJndW1lbnRzLlxuICAgIGZ1bmN0aW9uIGRlZmF1bHRzKGEsIGIsIGMpIHtcbiAgICAgICAgaWYgKGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGIgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3VycmVudERhdGVBcnJheShjb25maWcpIHtcbiAgICAgICAgLy8gaG9va3MgaXMgYWN0dWFsbHkgdGhlIGV4cG9ydGVkIG1vbWVudCBvYmplY3RcbiAgICAgICAgdmFyIG5vd1ZhbHVlID0gbmV3IERhdGUoaG9va3Mubm93KCkpO1xuICAgICAgICBpZiAoY29uZmlnLl91c2VVVEMpIHtcbiAgICAgICAgICAgIHJldHVybiBbbm93VmFsdWUuZ2V0VVRDRnVsbFllYXIoKSwgbm93VmFsdWUuZ2V0VVRDTW9udGgoKSwgbm93VmFsdWUuZ2V0VVRDRGF0ZSgpXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW25vd1ZhbHVlLmdldEZ1bGxZZWFyKCksIG5vd1ZhbHVlLmdldE1vbnRoKCksIG5vd1ZhbHVlLmdldERhdGUoKV07XG4gICAgfVxuXG4gICAgLy8gY29udmVydCBhbiBhcnJheSB0byBhIGRhdGUuXG4gICAgLy8gdGhlIGFycmF5IHNob3VsZCBtaXJyb3IgdGhlIHBhcmFtZXRlcnMgYmVsb3dcbiAgICAvLyBub3RlOiBhbGwgdmFsdWVzIHBhc3QgdGhlIHllYXIgYXJlIG9wdGlvbmFsIGFuZCB3aWxsIGRlZmF1bHQgdG8gdGhlIGxvd2VzdCBwb3NzaWJsZSB2YWx1ZS5cbiAgICAvLyBbeWVhciwgbW9udGgsIGRheSAsIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxsaXNlY29uZF1cbiAgICBmdW5jdGlvbiBjb25maWdGcm9tQXJyYXkgKGNvbmZpZykge1xuICAgICAgICB2YXIgaSwgZGF0ZSwgaW5wdXQgPSBbXSwgY3VycmVudERhdGUsIGV4cGVjdGVkV2Vla2RheSwgeWVhclRvVXNlO1xuXG4gICAgICAgIGlmIChjb25maWcuX2QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnREYXRlID0gY3VycmVudERhdGVBcnJheShjb25maWcpO1xuXG4gICAgICAgIC8vY29tcHV0ZSBkYXkgb2YgdGhlIHllYXIgZnJvbSB3ZWVrcyBhbmQgd2Vla2RheXNcbiAgICAgICAgaWYgKGNvbmZpZy5fdyAmJiBjb25maWcuX2FbREFURV0gPT0gbnVsbCAmJiBjb25maWcuX2FbTU9OVEhdID09IG51bGwpIHtcbiAgICAgICAgICAgIGRheU9mWWVhckZyb21XZWVrSW5mbyhjb25maWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9pZiB0aGUgZGF5IG9mIHRoZSB5ZWFyIGlzIHNldCwgZmlndXJlIG91dCB3aGF0IGl0IGlzXG4gICAgICAgIGlmIChjb25maWcuX2RheU9mWWVhciAhPSBudWxsKSB7XG4gICAgICAgICAgICB5ZWFyVG9Vc2UgPSBkZWZhdWx0cyhjb25maWcuX2FbWUVBUl0sIGN1cnJlbnREYXRlW1lFQVJdKTtcblxuICAgICAgICAgICAgaWYgKGNvbmZpZy5fZGF5T2ZZZWFyID4gZGF5c0luWWVhcih5ZWFyVG9Vc2UpIHx8IGNvbmZpZy5fZGF5T2ZZZWFyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuX292ZXJmbG93RGF5T2ZZZWFyID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGF0ZSA9IGNyZWF0ZVVUQ0RhdGUoeWVhclRvVXNlLCAwLCBjb25maWcuX2RheU9mWWVhcik7XG4gICAgICAgICAgICBjb25maWcuX2FbTU9OVEhdID0gZGF0ZS5nZXRVVENNb250aCgpO1xuICAgICAgICAgICAgY29uZmlnLl9hW0RBVEVdID0gZGF0ZS5nZXRVVENEYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZWZhdWx0IHRvIGN1cnJlbnQgZGF0ZS5cbiAgICAgICAgLy8gKiBpZiBubyB5ZWFyLCBtb250aCwgZGF5IG9mIG1vbnRoIGFyZSBnaXZlbiwgZGVmYXVsdCB0byB0b2RheVxuICAgICAgICAvLyAqIGlmIGRheSBvZiBtb250aCBpcyBnaXZlbiwgZGVmYXVsdCBtb250aCBhbmQgeWVhclxuICAgICAgICAvLyAqIGlmIG1vbnRoIGlzIGdpdmVuLCBkZWZhdWx0IG9ubHkgeWVhclxuICAgICAgICAvLyAqIGlmIHllYXIgaXMgZ2l2ZW4sIGRvbid0IGRlZmF1bHQgYW55dGhpbmdcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDMgJiYgY29uZmlnLl9hW2ldID09IG51bGw7ICsraSkge1xuICAgICAgICAgICAgY29uZmlnLl9hW2ldID0gaW5wdXRbaV0gPSBjdXJyZW50RGF0ZVtpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFplcm8gb3V0IHdoYXRldmVyIHdhcyBub3QgZGVmYXVsdGVkLCBpbmNsdWRpbmcgdGltZVxuICAgICAgICBmb3IgKDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgY29uZmlnLl9hW2ldID0gaW5wdXRbaV0gPSAoY29uZmlnLl9hW2ldID09IG51bGwpID8gKGkgPT09IDIgPyAxIDogMCkgOiBjb25maWcuX2FbaV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBmb3IgMjQ6MDA6MDAuMDAwXG4gICAgICAgIGlmIChjb25maWcuX2FbSE9VUl0gPT09IDI0ICYmXG4gICAgICAgICAgICAgICAgY29uZmlnLl9hW01JTlVURV0gPT09IDAgJiZcbiAgICAgICAgICAgICAgICBjb25maWcuX2FbU0VDT05EXSA9PT0gMCAmJlxuICAgICAgICAgICAgICAgIGNvbmZpZy5fYVtNSUxMSVNFQ09ORF0gPT09IDApIHtcbiAgICAgICAgICAgIGNvbmZpZy5fbmV4dERheSA9IHRydWU7XG4gICAgICAgICAgICBjb25maWcuX2FbSE9VUl0gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uZmlnLl9kID0gKGNvbmZpZy5fdXNlVVRDID8gY3JlYXRlVVRDRGF0ZSA6IGNyZWF0ZURhdGUpLmFwcGx5KG51bGwsIGlucHV0KTtcbiAgICAgICAgZXhwZWN0ZWRXZWVrZGF5ID0gY29uZmlnLl91c2VVVEMgPyBjb25maWcuX2QuZ2V0VVRDRGF5KCkgOiBjb25maWcuX2QuZ2V0RGF5KCk7XG5cbiAgICAgICAgLy8gQXBwbHkgdGltZXpvbmUgb2Zmc2V0IGZyb20gaW5wdXQuIFRoZSBhY3R1YWwgdXRjT2Zmc2V0IGNhbiBiZSBjaGFuZ2VkXG4gICAgICAgIC8vIHdpdGggcGFyc2Vab25lLlxuICAgICAgICBpZiAoY29uZmlnLl90em0gIT0gbnVsbCkge1xuICAgICAgICAgICAgY29uZmlnLl9kLnNldFVUQ01pbnV0ZXMoY29uZmlnLl9kLmdldFVUQ01pbnV0ZXMoKSAtIGNvbmZpZy5fdHptKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcuX25leHREYXkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSA9IDI0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY2hlY2sgZm9yIG1pc21hdGNoaW5nIGRheSBvZiB3ZWVrXG4gICAgICAgIGlmIChjb25maWcuX3cgJiYgdHlwZW9mIGNvbmZpZy5fdy5kICE9PSAndW5kZWZpbmVkJyAmJiBjb25maWcuX3cuZCAhPT0gZXhwZWN0ZWRXZWVrZGF5KSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS53ZWVrZGF5TWlzbWF0Y2ggPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGF5T2ZZZWFyRnJvbVdlZWtJbmZvKGNvbmZpZykge1xuICAgICAgICB2YXIgdywgd2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95LCB0ZW1wLCB3ZWVrZGF5T3ZlcmZsb3c7XG5cbiAgICAgICAgdyA9IGNvbmZpZy5fdztcbiAgICAgICAgaWYgKHcuR0cgIT0gbnVsbCB8fCB3LlcgIT0gbnVsbCB8fCB3LkUgIT0gbnVsbCkge1xuICAgICAgICAgICAgZG93ID0gMTtcbiAgICAgICAgICAgIGRveSA9IDQ7XG5cbiAgICAgICAgICAgIC8vIFRPRE86IFdlIG5lZWQgdG8gdGFrZSB0aGUgY3VycmVudCBpc29XZWVrWWVhciwgYnV0IHRoYXQgZGVwZW5kcyBvblxuICAgICAgICAgICAgLy8gaG93IHdlIGludGVycHJldCBub3cgKGxvY2FsLCB1dGMsIGZpeGVkIG9mZnNldCkuIFNvIGNyZWF0ZVxuICAgICAgICAgICAgLy8gYSBub3cgdmVyc2lvbiBvZiBjdXJyZW50IGNvbmZpZyAodGFrZSBsb2NhbC91dGMvb2Zmc2V0IGZsYWdzLCBhbmRcbiAgICAgICAgICAgIC8vIGNyZWF0ZSBub3cpLlxuICAgICAgICAgICAgd2Vla1llYXIgPSBkZWZhdWx0cyh3LkdHLCBjb25maWcuX2FbWUVBUl0sIHdlZWtPZlllYXIoY3JlYXRlTG9jYWwoKSwgMSwgNCkueWVhcik7XG4gICAgICAgICAgICB3ZWVrID0gZGVmYXVsdHMody5XLCAxKTtcbiAgICAgICAgICAgIHdlZWtkYXkgPSBkZWZhdWx0cyh3LkUsIDEpO1xuICAgICAgICAgICAgaWYgKHdlZWtkYXkgPCAxIHx8IHdlZWtkYXkgPiA3KSB7XG4gICAgICAgICAgICAgICAgd2Vla2RheU92ZXJmbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRvdyA9IGNvbmZpZy5fbG9jYWxlLl93ZWVrLmRvdztcbiAgICAgICAgICAgIGRveSA9IGNvbmZpZy5fbG9jYWxlLl93ZWVrLmRveTtcblxuICAgICAgICAgICAgdmFyIGN1cldlZWsgPSB3ZWVrT2ZZZWFyKGNyZWF0ZUxvY2FsKCksIGRvdywgZG95KTtcblxuICAgICAgICAgICAgd2Vla1llYXIgPSBkZWZhdWx0cyh3LmdnLCBjb25maWcuX2FbWUVBUl0sIGN1cldlZWsueWVhcik7XG5cbiAgICAgICAgICAgIC8vIERlZmF1bHQgdG8gY3VycmVudCB3ZWVrLlxuICAgICAgICAgICAgd2VlayA9IGRlZmF1bHRzKHcudywgY3VyV2Vlay53ZWVrKTtcblxuICAgICAgICAgICAgaWYgKHcuZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gd2Vla2RheSAtLSBsb3cgZGF5IG51bWJlcnMgYXJlIGNvbnNpZGVyZWQgbmV4dCB3ZWVrXG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IHcuZDtcbiAgICAgICAgICAgICAgICBpZiAod2Vla2RheSA8IDAgfHwgd2Vla2RheSA+IDYpIHtcbiAgICAgICAgICAgICAgICAgICAgd2Vla2RheU92ZXJmbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHcuZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gbG9jYWwgd2Vla2RheSAtLSBjb3VudGluZyBzdGFydHMgZnJvbSBiZWdpbmluZyBvZiB3ZWVrXG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IHcuZSArIGRvdztcbiAgICAgICAgICAgICAgICBpZiAody5lIDwgMCB8fCB3LmUgPiA2KSB7XG4gICAgICAgICAgICAgICAgICAgIHdlZWtkYXlPdmVyZmxvdyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IHRvIGJlZ2luaW5nIG9mIHdlZWtcbiAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gZG93O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh3ZWVrIDwgMSB8fCB3ZWVrID4gd2Vla3NJblllYXIod2Vla1llYXIsIGRvdywgZG95KSkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuX292ZXJmbG93V2Vla3MgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHdlZWtkYXlPdmVyZmxvdyAhPSBudWxsKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5fb3ZlcmZsb3dXZWVrZGF5ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRlbXAgPSBkYXlPZlllYXJGcm9tV2Vla3Mod2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KTtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtZRUFSXSA9IHRlbXAueWVhcjtcbiAgICAgICAgICAgIGNvbmZpZy5fZGF5T2ZZZWFyID0gdGVtcC5kYXlPZlllYXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpc28gODYwMSByZWdleFxuICAgIC8vIDAwMDAtMDAtMDAgMDAwMC1XMDAgb3IgMDAwMC1XMDAtMCArIFQgKyAwMCBvciAwMDowMCBvciAwMDowMDowMCBvciAwMDowMDowMC4wMDAgKyArMDA6MDAgb3IgKzAwMDAgb3IgKzAwKVxuICAgIHZhciBleHRlbmRlZElzb1JlZ2V4ID0gL15cXHMqKCg/OlsrLV1cXGR7Nn18XFxkezR9KS0oPzpcXGRcXGQtXFxkXFxkfFdcXGRcXGQtXFxkfFdcXGRcXGR8XFxkXFxkXFxkfFxcZFxcZCkpKD86KFR8ICkoXFxkXFxkKD86OlxcZFxcZCg/OjpcXGRcXGQoPzpbLixdXFxkKyk/KT8pPykoW1xcK1xcLV1cXGRcXGQoPzo6P1xcZFxcZCk/fFxccypaKT8pPyQvO1xuICAgIHZhciBiYXNpY0lzb1JlZ2V4ID0gL15cXHMqKCg/OlsrLV1cXGR7Nn18XFxkezR9KSg/OlxcZFxcZFxcZFxcZHxXXFxkXFxkXFxkfFdcXGRcXGR8XFxkXFxkXFxkfFxcZFxcZCkpKD86KFR8ICkoXFxkXFxkKD86XFxkXFxkKD86XFxkXFxkKD86Wy4sXVxcZCspPyk/KT8pKFtcXCtcXC1dXFxkXFxkKD86Oj9cXGRcXGQpP3xcXHMqWik/KT8kLztcblxuICAgIHZhciB0elJlZ2V4ID0gL1p8WystXVxcZFxcZCg/Ojo/XFxkXFxkKT8vO1xuXG4gICAgdmFyIGlzb0RhdGVzID0gW1xuICAgICAgICBbJ1lZWVlZWS1NTS1ERCcsIC9bKy1dXFxkezZ9LVxcZFxcZC1cXGRcXGQvXSxcbiAgICAgICAgWydZWVlZLU1NLUREJywgL1xcZHs0fS1cXGRcXGQtXFxkXFxkL10sXG4gICAgICAgIFsnR0dHRy1bV11XVy1FJywgL1xcZHs0fS1XXFxkXFxkLVxcZC9dLFxuICAgICAgICBbJ0dHR0ctW1ddV1cnLCAvXFxkezR9LVdcXGRcXGQvLCBmYWxzZV0sXG4gICAgICAgIFsnWVlZWS1EREQnLCAvXFxkezR9LVxcZHszfS9dLFxuICAgICAgICBbJ1lZWVktTU0nLCAvXFxkezR9LVxcZFxcZC8sIGZhbHNlXSxcbiAgICAgICAgWydZWVlZWVlNTUREJywgL1srLV1cXGR7MTB9L10sXG4gICAgICAgIFsnWVlZWU1NREQnLCAvXFxkezh9L10sXG4gICAgICAgIC8vIFlZWVlNTSBpcyBOT1QgYWxsb3dlZCBieSB0aGUgc3RhbmRhcmRcbiAgICAgICAgWydHR0dHW1ddV1dFJywgL1xcZHs0fVdcXGR7M30vXSxcbiAgICAgICAgWydHR0dHW1ddV1cnLCAvXFxkezR9V1xcZHsyfS8sIGZhbHNlXSxcbiAgICAgICAgWydZWVlZREREJywgL1xcZHs3fS9dXG4gICAgXTtcblxuICAgIC8vIGlzbyB0aW1lIGZvcm1hdHMgYW5kIHJlZ2V4ZXNcbiAgICB2YXIgaXNvVGltZXMgPSBbXG4gICAgICAgIFsnSEg6bW06c3MuU1NTUycsIC9cXGRcXGQ6XFxkXFxkOlxcZFxcZFxcLlxcZCsvXSxcbiAgICAgICAgWydISDptbTpzcyxTU1NTJywgL1xcZFxcZDpcXGRcXGQ6XFxkXFxkLFxcZCsvXSxcbiAgICAgICAgWydISDptbTpzcycsIC9cXGRcXGQ6XFxkXFxkOlxcZFxcZC9dLFxuICAgICAgICBbJ0hIOm1tJywgL1xcZFxcZDpcXGRcXGQvXSxcbiAgICAgICAgWydISG1tc3MuU1NTUycsIC9cXGRcXGRcXGRcXGRcXGRcXGRcXC5cXGQrL10sXG4gICAgICAgIFsnSEhtbXNzLFNTU1MnLCAvXFxkXFxkXFxkXFxkXFxkXFxkLFxcZCsvXSxcbiAgICAgICAgWydISG1tc3MnLCAvXFxkXFxkXFxkXFxkXFxkXFxkL10sXG4gICAgICAgIFsnSEhtbScsIC9cXGRcXGRcXGRcXGQvXSxcbiAgICAgICAgWydISCcsIC9cXGRcXGQvXVxuICAgIF07XG5cbiAgICB2YXIgYXNwTmV0SnNvblJlZ2V4ID0gL15cXC8/RGF0ZVxcKChcXC0/XFxkKykvaTtcblxuICAgIC8vIGRhdGUgZnJvbSBpc28gZm9ybWF0XG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbUlTTyhjb25maWcpIHtcbiAgICAgICAgdmFyIGksIGwsXG4gICAgICAgICAgICBzdHJpbmcgPSBjb25maWcuX2ksXG4gICAgICAgICAgICBtYXRjaCA9IGV4dGVuZGVkSXNvUmVnZXguZXhlYyhzdHJpbmcpIHx8IGJhc2ljSXNvUmVnZXguZXhlYyhzdHJpbmcpLFxuICAgICAgICAgICAgYWxsb3dUaW1lLCBkYXRlRm9ybWF0LCB0aW1lRm9ybWF0LCB0ekZvcm1hdDtcblxuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmlzbyA9IHRydWU7XG5cbiAgICAgICAgICAgIGZvciAoaSA9IDAsIGwgPSBpc29EYXRlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNvRGF0ZXNbaV1bMV0uZXhlYyhtYXRjaFsxXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdCA9IGlzb0RhdGVzW2ldWzBdO1xuICAgICAgICAgICAgICAgICAgICBhbGxvd1RpbWUgPSBpc29EYXRlc1tpXVsyXSAhPT0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkYXRlRm9ybWF0ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWF0Y2hbM10pIHtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBsID0gaXNvVGltZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc29UaW1lc1tpXVsxXS5leGVjKG1hdGNoWzNdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWF0Y2hbMl0gc2hvdWxkIGJlICdUJyBvciBzcGFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZUZvcm1hdCA9IChtYXRjaFsyXSB8fCAnICcpICsgaXNvVGltZXNbaV1bMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGltZUZvcm1hdCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFhbGxvd1RpbWUgJiYgdGltZUZvcm1hdCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1hdGNoWzRdKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR6UmVnZXguZXhlYyhtYXRjaFs0XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdHpGb3JtYXQgPSAnWic7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25maWcuX2YgPSBkYXRlRm9ybWF0ICsgKHRpbWVGb3JtYXQgfHwgJycpICsgKHR6Rm9ybWF0IHx8ICcnKTtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUkZDIDI4MjIgcmVnZXg6IEZvciBkZXRhaWxzIHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjgyMiNzZWN0aW9uLTMuM1xuICAgIHZhciByZmMyODIyID0gL14oPzooTW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXR8U3VuKSw/XFxzKT8oXFxkezEsMn0pXFxzKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKVxccyhcXGR7Miw0fSlcXHMoXFxkXFxkKTooXFxkXFxkKSg/OjooXFxkXFxkKSk/XFxzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfChbKy1dXFxkezR9KSkkLztcblxuICAgIGZ1bmN0aW9uIGV4dHJhY3RGcm9tUkZDMjgyMlN0cmluZ3MoeWVhclN0ciwgbW9udGhTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtcbiAgICAgICAgICAgIHVudHJ1bmNhdGVZZWFyKHllYXJTdHIpLFxuICAgICAgICAgICAgZGVmYXVsdExvY2FsZU1vbnRoc1Nob3J0LmluZGV4T2YobW9udGhTdHIpLFxuICAgICAgICAgICAgcGFyc2VJbnQoZGF5U3RyLCAxMCksXG4gICAgICAgICAgICBwYXJzZUludChob3VyU3RyLCAxMCksXG4gICAgICAgICAgICBwYXJzZUludChtaW51dGVTdHIsIDEwKVxuICAgICAgICBdO1xuXG4gICAgICAgIGlmIChzZWNvbmRTdHIpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHBhcnNlSW50KHNlY29uZFN0ciwgMTApKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdW50cnVuY2F0ZVllYXIoeWVhclN0cikge1xuICAgICAgICB2YXIgeWVhciA9IHBhcnNlSW50KHllYXJTdHIsIDEwKTtcbiAgICAgICAgaWYgKHllYXIgPD0gNDkpIHtcbiAgICAgICAgICAgIHJldHVybiAyMDAwICsgeWVhcjtcbiAgICAgICAgfSBlbHNlIGlmICh5ZWFyIDw9IDk5OSkge1xuICAgICAgICAgICAgcmV0dXJuIDE5MDAgKyB5ZWFyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB5ZWFyO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByZXByb2Nlc3NSRkMyODIyKHMpIHtcbiAgICAgICAgLy8gUmVtb3ZlIGNvbW1lbnRzIGFuZCBmb2xkaW5nIHdoaXRlc3BhY2UgYW5kIHJlcGxhY2UgbXVsdGlwbGUtc3BhY2VzIHdpdGggYSBzaW5nbGUgc3BhY2VcbiAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvXFwoW14pXSpcXCl8W1xcblxcdF0vZywgJyAnKS5yZXBsYWNlKC8oXFxzXFxzKykvZywgJyAnKS5yZXBsYWNlKC9eXFxzXFxzKi8sICcnKS5yZXBsYWNlKC9cXHNcXHMqJC8sICcnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja1dlZWtkYXkod2Vla2RheVN0ciwgcGFyc2VkSW5wdXQsIGNvbmZpZykge1xuICAgICAgICBpZiAod2Vla2RheVN0cikge1xuICAgICAgICAgICAgLy8gVE9ETzogUmVwbGFjZSB0aGUgdmFuaWxsYSBKUyBEYXRlIG9iamVjdCB3aXRoIGFuIGluZGVwZW50ZW50IGRheS1vZi13ZWVrIGNoZWNrLlxuICAgICAgICAgICAgdmFyIHdlZWtkYXlQcm92aWRlZCA9IGRlZmF1bHRMb2NhbGVXZWVrZGF5c1Nob3J0LmluZGV4T2Yod2Vla2RheVN0ciksXG4gICAgICAgICAgICAgICAgd2Vla2RheUFjdHVhbCA9IG5ldyBEYXRlKHBhcnNlZElucHV0WzBdLCBwYXJzZWRJbnB1dFsxXSwgcGFyc2VkSW5wdXRbMl0pLmdldERheSgpO1xuICAgICAgICAgICAgaWYgKHdlZWtkYXlQcm92aWRlZCAhPT0gd2Vla2RheUFjdHVhbCkge1xuICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLndlZWtkYXlNaXNtYXRjaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHZhciBvYnNPZmZzZXRzID0ge1xuICAgICAgICBVVDogMCxcbiAgICAgICAgR01UOiAwLFxuICAgICAgICBFRFQ6IC00ICogNjAsXG4gICAgICAgIEVTVDogLTUgKiA2MCxcbiAgICAgICAgQ0RUOiAtNSAqIDYwLFxuICAgICAgICBDU1Q6IC02ICogNjAsXG4gICAgICAgIE1EVDogLTYgKiA2MCxcbiAgICAgICAgTVNUOiAtNyAqIDYwLFxuICAgICAgICBQRFQ6IC03ICogNjAsXG4gICAgICAgIFBTVDogLTggKiA2MFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBjYWxjdWxhdGVPZmZzZXQob2JzT2Zmc2V0LCBtaWxpdGFyeU9mZnNldCwgbnVtT2Zmc2V0KSB7XG4gICAgICAgIGlmIChvYnNPZmZzZXQpIHtcbiAgICAgICAgICAgIHJldHVybiBvYnNPZmZzZXRzW29ic09mZnNldF07XG4gICAgICAgIH0gZWxzZSBpZiAobWlsaXRhcnlPZmZzZXQpIHtcbiAgICAgICAgICAgIC8vIHRoZSBvbmx5IGFsbG93ZWQgbWlsaXRhcnkgdHogaXMgWlxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBwYXJzZUludChudW1PZmZzZXQsIDEwKTtcbiAgICAgICAgICAgIHZhciBtID0gaG0gJSAxMDAsIGggPSAoaG0gLSBtKSAvIDEwMDtcbiAgICAgICAgICAgIHJldHVybiBoICogNjAgKyBtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZGF0ZSBhbmQgdGltZSBmcm9tIHJlZiAyODIyIGZvcm1hdFxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21SRkMyODIyKGNvbmZpZykge1xuICAgICAgICB2YXIgbWF0Y2ggPSByZmMyODIyLmV4ZWMocHJlcHJvY2Vzc1JGQzI4MjIoY29uZmlnLl9pKSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgdmFyIHBhcnNlZEFycmF5ID0gZXh0cmFjdEZyb21SRkMyODIyU3RyaW5ncyhtYXRjaFs0XSwgbWF0Y2hbM10sIG1hdGNoWzJdLCBtYXRjaFs1XSwgbWF0Y2hbNl0sIG1hdGNoWzddKTtcbiAgICAgICAgICAgIGlmICghY2hlY2tXZWVrZGF5KG1hdGNoWzFdLCBwYXJzZWRBcnJheSwgY29uZmlnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uZmlnLl9hID0gcGFyc2VkQXJyYXk7XG4gICAgICAgICAgICBjb25maWcuX3R6bSA9IGNhbGN1bGF0ZU9mZnNldChtYXRjaFs4XSwgbWF0Y2hbOV0sIG1hdGNoWzEwXSk7XG5cbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IGNyZWF0ZVVUQ0RhdGUuYXBwbHkobnVsbCwgY29uZmlnLl9hKTtcbiAgICAgICAgICAgIGNvbmZpZy5fZC5zZXRVVENNaW51dGVzKGNvbmZpZy5fZC5nZXRVVENNaW51dGVzKCkgLSBjb25maWcuX3R6bSk7XG5cbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnJmYzI4MjIgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkYXRlIGZyb20gaXNvIGZvcm1hdCBvciBmYWxsYmFja1xuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21TdHJpbmcoY29uZmlnKSB7XG4gICAgICAgIHZhciBtYXRjaGVkID0gYXNwTmV0SnNvblJlZ2V4LmV4ZWMoY29uZmlnLl9pKTtcblxuICAgICAgICBpZiAobWF0Y2hlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoK21hdGNoZWRbMV0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uZmlnRnJvbUlTTyhjb25maWcpO1xuICAgICAgICBpZiAoY29uZmlnLl9pc1ZhbGlkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgZGVsZXRlIGNvbmZpZy5faXNWYWxpZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbmZpZ0Zyb21SRkMyODIyKGNvbmZpZyk7XG4gICAgICAgIGlmIChjb25maWcuX2lzVmFsaWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBkZWxldGUgY29uZmlnLl9pc1ZhbGlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmluYWwgYXR0ZW1wdCwgdXNlIElucHV0IEZhbGxiYWNrXG4gICAgICAgIGhvb2tzLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKGNvbmZpZyk7XG4gICAgfVxuXG4gICAgaG9va3MuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2sgPSBkZXByZWNhdGUoXG4gICAgICAgICd2YWx1ZSBwcm92aWRlZCBpcyBub3QgaW4gYSByZWNvZ25pemVkIFJGQzI4MjIgb3IgSVNPIGZvcm1hdC4gbW9tZW50IGNvbnN0cnVjdGlvbiBmYWxscyBiYWNrIHRvIGpzIERhdGUoKSwgJyArXG4gICAgICAgICd3aGljaCBpcyBub3QgcmVsaWFibGUgYWNyb3NzIGFsbCBicm93c2VycyBhbmQgdmVyc2lvbnMuIE5vbiBSRkMyODIyL0lTTyBkYXRlIGZvcm1hdHMgYXJlICcgK1xuICAgICAgICAnZGlzY291cmFnZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhbiB1cGNvbWluZyBtYWpvciByZWxlYXNlLiBQbGVhc2UgcmVmZXIgdG8gJyArXG4gICAgICAgICdodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2pzLWRhdGUvIGZvciBtb3JlIGluZm8uJyxcbiAgICAgICAgZnVuY3Rpb24gKGNvbmZpZykge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoY29uZmlnLl9pICsgKGNvbmZpZy5fdXNlVVRDID8gJyBVVEMnIDogJycpKTtcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBjb25zdGFudCB0aGF0IHJlZmVycyB0byB0aGUgSVNPIHN0YW5kYXJkXG4gICAgaG9va3MuSVNPXzg2MDEgPSBmdW5jdGlvbiAoKSB7fTtcblxuICAgIC8vIGNvbnN0YW50IHRoYXQgcmVmZXJzIHRvIHRoZSBSRkMgMjgyMiBmb3JtXG4gICAgaG9va3MuUkZDXzI4MjIgPSBmdW5jdGlvbiAoKSB7fTtcblxuICAgIC8vIGRhdGUgZnJvbSBzdHJpbmcgYW5kIGZvcm1hdCBzdHJpbmdcbiAgICBmdW5jdGlvbiBjb25maWdGcm9tU3RyaW5nQW5kRm9ybWF0KGNvbmZpZykge1xuICAgICAgICAvLyBUT0RPOiBNb3ZlIHRoaXMgdG8gYW5vdGhlciBwYXJ0IG9mIHRoZSBjcmVhdGlvbiBmbG93IHRvIHByZXZlbnQgY2lyY3VsYXIgZGVwc1xuICAgICAgICBpZiAoY29uZmlnLl9mID09PSBob29rcy5JU09fODYwMSkge1xuICAgICAgICAgICAgY29uZmlnRnJvbUlTTyhjb25maWcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maWcuX2YgPT09IGhvb2tzLlJGQ18yODIyKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tUkZDMjgyMihjb25maWcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbmZpZy5fYSA9IFtdO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5lbXB0eSA9IHRydWU7XG5cbiAgICAgICAgLy8gVGhpcyBhcnJheSBpcyB1c2VkIHRvIG1ha2UgYSBEYXRlLCBlaXRoZXIgd2l0aCBgbmV3IERhdGVgIG9yIGBEYXRlLlVUQ2BcbiAgICAgICAgdmFyIHN0cmluZyA9ICcnICsgY29uZmlnLl9pLFxuICAgICAgICAgICAgaSwgcGFyc2VkSW5wdXQsIHRva2VucywgdG9rZW4sIHNraXBwZWQsXG4gICAgICAgICAgICBzdHJpbmdMZW5ndGggPSBzdHJpbmcubGVuZ3RoLFxuICAgICAgICAgICAgdG90YWxQYXJzZWRJbnB1dExlbmd0aCA9IDA7XG5cbiAgICAgICAgdG9rZW5zID0gZXhwYW5kRm9ybWF0KGNvbmZpZy5fZiwgY29uZmlnLl9sb2NhbGUpLm1hdGNoKGZvcm1hdHRpbmdUb2tlbnMpIHx8IFtdO1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRva2VuID0gdG9rZW5zW2ldO1xuICAgICAgICAgICAgcGFyc2VkSW5wdXQgPSAoc3RyaW5nLm1hdGNoKGdldFBhcnNlUmVnZXhGb3JUb2tlbih0b2tlbiwgY29uZmlnKSkgfHwgW10pWzBdO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ3Rva2VuJywgdG9rZW4sICdwYXJzZWRJbnB1dCcsIHBhcnNlZElucHV0LFxuICAgICAgICAgICAgLy8gICAgICAgICAncmVnZXgnLCBnZXRQYXJzZVJlZ2V4Rm9yVG9rZW4odG9rZW4sIGNvbmZpZykpO1xuICAgICAgICAgICAgaWYgKHBhcnNlZElucHV0KSB7XG4gICAgICAgICAgICAgICAgc2tpcHBlZCA9IHN0cmluZy5zdWJzdHIoMCwgc3RyaW5nLmluZGV4T2YocGFyc2VkSW5wdXQpKTtcbiAgICAgICAgICAgICAgICBpZiAoc2tpcHBlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnVudXNlZElucHV0LnB1c2goc2tpcHBlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0cmluZyA9IHN0cmluZy5zbGljZShzdHJpbmcuaW5kZXhPZihwYXJzZWRJbnB1dCkgKyBwYXJzZWRJbnB1dC5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHRvdGFsUGFyc2VkSW5wdXRMZW5ndGggKz0gcGFyc2VkSW5wdXQubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZG9uJ3QgcGFyc2UgaWYgaXQncyBub3QgYSBrbm93biB0b2tlblxuICAgICAgICAgICAgaWYgKGZvcm1hdFRva2VuRnVuY3Rpb25zW3Rva2VuXSkge1xuICAgICAgICAgICAgICAgIGlmIChwYXJzZWRJbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5lbXB0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykudW51c2VkVG9rZW5zLnB1c2godG9rZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhZGRUaW1lVG9BcnJheUZyb21Ub2tlbih0b2tlbiwgcGFyc2VkSW5wdXQsIGNvbmZpZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjb25maWcuX3N0cmljdCAmJiAhcGFyc2VkSW5wdXQpIHtcbiAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS51bnVzZWRUb2tlbnMucHVzaCh0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhZGQgcmVtYWluaW5nIHVucGFyc2VkIGlucHV0IGxlbmd0aCB0byB0aGUgc3RyaW5nXG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmNoYXJzTGVmdE92ZXIgPSBzdHJpbmdMZW5ndGggLSB0b3RhbFBhcnNlZElucHV0TGVuZ3RoO1xuICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnVudXNlZElucHV0LnB1c2goc3RyaW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNsZWFyIF8xMmggZmxhZyBpZiBob3VyIGlzIDw9IDEyXG4gICAgICAgIGlmIChjb25maWcuX2FbSE9VUl0gPD0gMTIgJiZcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPT09IHRydWUgJiZcbiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSA+IDApIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5wYXJzZWREYXRlUGFydHMgPSBjb25maWcuX2Euc2xpY2UoMCk7XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLm1lcmlkaWVtID0gY29uZmlnLl9tZXJpZGllbTtcbiAgICAgICAgLy8gaGFuZGxlIG1lcmlkaWVtXG4gICAgICAgIGNvbmZpZy5fYVtIT1VSXSA9IG1lcmlkaWVtRml4V3JhcChjb25maWcuX2xvY2FsZSwgY29uZmlnLl9hW0hPVVJdLCBjb25maWcuX21lcmlkaWVtKTtcblxuICAgICAgICBjb25maWdGcm9tQXJyYXkoY29uZmlnKTtcbiAgICAgICAgY2hlY2tPdmVyZmxvdyhjb25maWcpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gbWVyaWRpZW1GaXhXcmFwIChsb2NhbGUsIGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgIHZhciBpc1BtO1xuXG4gICAgICAgIGlmIChtZXJpZGllbSA9PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBub3RoaW5nIHRvIGRvXG4gICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG9jYWxlLm1lcmlkaWVtSG91ciAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLm1lcmlkaWVtSG91cihob3VyLCBtZXJpZGllbSk7XG4gICAgICAgIH0gZWxzZSBpZiAobG9jYWxlLmlzUE0gIT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gRmFsbGJhY2tcbiAgICAgICAgICAgIGlzUG0gPSBsb2NhbGUuaXNQTShtZXJpZGllbSk7XG4gICAgICAgICAgICBpZiAoaXNQbSAmJiBob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyICs9IDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc1BtICYmIGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgbm90IHN1cHBvc2VkIHRvIGhhcHBlblxuICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkYXRlIGZyb20gc3RyaW5nIGFuZCBhcnJheSBvZiBmb3JtYXQgc3RyaW5nc1xuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21TdHJpbmdBbmRBcnJheShjb25maWcpIHtcbiAgICAgICAgdmFyIHRlbXBDb25maWcsXG4gICAgICAgICAgICBiZXN0TW9tZW50LFxuXG4gICAgICAgICAgICBzY29yZVRvQmVhdCxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBjdXJyZW50U2NvcmU7XG5cbiAgICAgICAgaWYgKGNvbmZpZy5fZi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmludmFsaWRGb3JtYXQgPSB0cnVlO1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoTmFOKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb25maWcuX2YubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGN1cnJlbnRTY29yZSA9IDA7XG4gICAgICAgICAgICB0ZW1wQ29uZmlnID0gY29weUNvbmZpZyh7fSwgY29uZmlnKTtcbiAgICAgICAgICAgIGlmIChjb25maWcuX3VzZVVUQyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGVtcENvbmZpZy5fdXNlVVRDID0gY29uZmlnLl91c2VVVEM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ZW1wQ29uZmlnLl9mID0gY29uZmlnLl9mW2ldO1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdCh0ZW1wQ29uZmlnKTtcblxuICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKHRlbXBDb25maWcpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIGFueSBpbnB1dCB0aGF0IHdhcyBub3QgcGFyc2VkIGFkZCBhIHBlbmFsdHkgZm9yIHRoYXQgZm9ybWF0XG4gICAgICAgICAgICBjdXJyZW50U2NvcmUgKz0gZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLmNoYXJzTGVmdE92ZXI7XG5cbiAgICAgICAgICAgIC8vb3IgdG9rZW5zXG4gICAgICAgICAgICBjdXJyZW50U2NvcmUgKz0gZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLnVudXNlZFRva2Vucy5sZW5ndGggKiAxMDtcblxuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLnNjb3JlID0gY3VycmVudFNjb3JlO1xuXG4gICAgICAgICAgICBpZiAoc2NvcmVUb0JlYXQgPT0gbnVsbCB8fCBjdXJyZW50U2NvcmUgPCBzY29yZVRvQmVhdCkge1xuICAgICAgICAgICAgICAgIHNjb3JlVG9CZWF0ID0gY3VycmVudFNjb3JlO1xuICAgICAgICAgICAgICAgIGJlc3RNb21lbnQgPSB0ZW1wQ29uZmlnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZXh0ZW5kKGNvbmZpZywgYmVzdE1vbWVudCB8fCB0ZW1wQ29uZmlnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb25maWdGcm9tT2JqZWN0KGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnLl9kKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaSA9IG5vcm1hbGl6ZU9iamVjdFVuaXRzKGNvbmZpZy5faSk7XG4gICAgICAgIGNvbmZpZy5fYSA9IG1hcChbaS55ZWFyLCBpLm1vbnRoLCBpLmRheSB8fCBpLmRhdGUsIGkuaG91ciwgaS5taW51dGUsIGkuc2Vjb25kLCBpLm1pbGxpc2Vjb25kXSwgZnVuY3Rpb24gKG9iaikge1xuICAgICAgICAgICAgcmV0dXJuIG9iaiAmJiBwYXJzZUludChvYmosIDEwKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uZmlnRnJvbUFycmF5KGNvbmZpZyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlRnJvbUNvbmZpZyAoY29uZmlnKSB7XG4gICAgICAgIHZhciByZXMgPSBuZXcgTW9tZW50KGNoZWNrT3ZlcmZsb3cocHJlcGFyZUNvbmZpZyhjb25maWcpKSk7XG4gICAgICAgIGlmIChyZXMuX25leHREYXkpIHtcbiAgICAgICAgICAgIC8vIEFkZGluZyBpcyBzbWFydCBlbm91Z2ggYXJvdW5kIERTVFxuICAgICAgICAgICAgcmVzLmFkZCgxLCAnZCcpO1xuICAgICAgICAgICAgcmVzLl9uZXh0RGF5ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmVwYXJlQ29uZmlnIChjb25maWcpIHtcbiAgICAgICAgdmFyIGlucHV0ID0gY29uZmlnLl9pLFxuICAgICAgICAgICAgZm9ybWF0ID0gY29uZmlnLl9mO1xuXG4gICAgICAgIGNvbmZpZy5fbG9jYWxlID0gY29uZmlnLl9sb2NhbGUgfHwgZ2V0TG9jYWxlKGNvbmZpZy5fbCk7XG5cbiAgICAgICAgaWYgKGlucHV0ID09PSBudWxsIHx8IChmb3JtYXQgPT09IHVuZGVmaW5lZCAmJiBpbnB1dCA9PT0gJycpKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlSW52YWxpZCh7bnVsbElucHV0OiB0cnVlfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uZmlnLl9pID0gaW5wdXQgPSBjb25maWcuX2xvY2FsZS5wcmVwYXJzZShpbnB1dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNNb21lbnQoaW5wdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE1vbWVudChjaGVja092ZXJmbG93KGlucHV0KSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEYXRlKGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gaW5wdXQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheShmb3JtYXQpKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tU3RyaW5nQW5kQXJyYXkoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQoY29uZmlnKTtcbiAgICAgICAgfSAgZWxzZSB7XG4gICAgICAgICAgICBjb25maWdGcm9tSW5wdXQoY29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNWYWxpZChjb25maWcpKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb25maWdGcm9tSW5wdXQoY29uZmlnKSB7XG4gICAgICAgIHZhciBpbnB1dCA9IGNvbmZpZy5faTtcbiAgICAgICAgaWYgKGlzVW5kZWZpbmVkKGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoaG9va3Mubm93KCkpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRGF0ZShpbnB1dCkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKGlucHV0LnZhbHVlT2YoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZyhjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXJyYXkoaW5wdXQpKSB7XG4gICAgICAgICAgICBjb25maWcuX2EgPSBtYXAoaW5wdXQuc2xpY2UoMCksIGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQob2JqLCAxMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21BcnJheShjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnRnJvbU9iamVjdChjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKGlucHV0KSkge1xuICAgICAgICAgICAgLy8gZnJvbSBtaWxsaXNlY29uZHNcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKGlucHV0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhvb2tzLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKGNvbmZpZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVMb2NhbE9yVVRDIChpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCwgaXNVVEMpIHtcbiAgICAgICAgdmFyIGMgPSB7fTtcblxuICAgICAgICBpZiAobG9jYWxlID09PSB0cnVlIHx8IGxvY2FsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHN0cmljdCA9IGxvY2FsZTtcbiAgICAgICAgICAgIGxvY2FsZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgoaXNPYmplY3QoaW5wdXQpICYmIGlzT2JqZWN0RW1wdHkoaW5wdXQpKSB8fFxuICAgICAgICAgICAgICAgIChpc0FycmF5KGlucHV0KSAmJiBpbnB1dC5sZW5ndGggPT09IDApKSB7XG4gICAgICAgICAgICBpbnB1dCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBvYmplY3QgY29uc3RydWN0aW9uIG11c3QgYmUgZG9uZSB0aGlzIHdheS5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzE0MjNcbiAgICAgICAgYy5faXNBTW9tZW50T2JqZWN0ID0gdHJ1ZTtcbiAgICAgICAgYy5fdXNlVVRDID0gYy5faXNVVEMgPSBpc1VUQztcbiAgICAgICAgYy5fbCA9IGxvY2FsZTtcbiAgICAgICAgYy5faSA9IGlucHV0O1xuICAgICAgICBjLl9mID0gZm9ybWF0O1xuICAgICAgICBjLl9zdHJpY3QgPSBzdHJpY3Q7XG5cbiAgICAgICAgcmV0dXJuIGNyZWF0ZUZyb21Db25maWcoYyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlTG9jYWwgKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0KSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2NhbE9yVVRDKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0LCBmYWxzZSk7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvdHlwZU1pbiA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ21vbWVudCgpLm1pbiBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1heCBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1tYXgvJyxcbiAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIG90aGVyID0gY3JlYXRlTG9jYWwuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWQoKSAmJiBvdGhlci5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIgPCB0aGlzID8gdGhpcyA6IG90aGVyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW52YWxpZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgKTtcblxuICAgIHZhciBwcm90b3R5cGVNYXggPSBkZXByZWNhdGUoXG4gICAgICAgICdtb21lbnQoKS5tYXggaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudC5taW4gaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9taW4tbWF4LycsXG4gICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBvdGhlciA9IGNyZWF0ZUxvY2FsLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkgJiYgb3RoZXIuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyID4gdGhpcyA/IHRoaXMgOiBvdGhlcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUludmFsaWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBQaWNrIGEgbW9tZW50IG0gZnJvbSBtb21lbnRzIHNvIHRoYXQgbVtmbl0ob3RoZXIpIGlzIHRydWUgZm9yIGFsbFxuICAgIC8vIG90aGVyLiBUaGlzIHJlbGllcyBvbiB0aGUgZnVuY3Rpb24gZm4gdG8gYmUgdHJhbnNpdGl2ZS5cbiAgICAvL1xuICAgIC8vIG1vbWVudHMgc2hvdWxkIGVpdGhlciBiZSBhbiBhcnJheSBvZiBtb21lbnQgb2JqZWN0cyBvciBhbiBhcnJheSwgd2hvc2VcbiAgICAvLyBmaXJzdCBlbGVtZW50IGlzIGFuIGFycmF5IG9mIG1vbWVudCBvYmplY3RzLlxuICAgIGZ1bmN0aW9uIHBpY2tCeShmbiwgbW9tZW50cykge1xuICAgICAgICB2YXIgcmVzLCBpO1xuICAgICAgICBpZiAobW9tZW50cy5sZW5ndGggPT09IDEgJiYgaXNBcnJheShtb21lbnRzWzBdKSkge1xuICAgICAgICAgICAgbW9tZW50cyA9IG1vbWVudHNbMF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtb21lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxvY2FsKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzID0gbW9tZW50c1swXTtcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IG1vbWVudHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGlmICghbW9tZW50c1tpXS5pc1ZhbGlkKCkgfHwgbW9tZW50c1tpXVtmbl0ocmVzKSkge1xuICAgICAgICAgICAgICAgIHJlcyA9IG1vbWVudHNbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBVc2UgW10uc29ydCBpbnN0ZWFkP1xuICAgIGZ1bmN0aW9uIG1pbiAoKSB7XG4gICAgICAgIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuXG4gICAgICAgIHJldHVybiBwaWNrQnkoJ2lzQmVmb3JlJywgYXJncyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWF4ICgpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7XG5cbiAgICAgICAgcmV0dXJuIHBpY2tCeSgnaXNBZnRlcicsIGFyZ3MpO1xuICAgIH1cblxuICAgIHZhciBub3cgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBEYXRlLm5vdyA/IERhdGUubm93KCkgOiArKG5ldyBEYXRlKCkpO1xuICAgIH07XG5cbiAgICB2YXIgb3JkZXJpbmcgPSBbJ3llYXInLCAncXVhcnRlcicsICdtb250aCcsICd3ZWVrJywgJ2RheScsICdob3VyJywgJ21pbnV0ZScsICdzZWNvbmQnLCAnbWlsbGlzZWNvbmQnXTtcblxuICAgIGZ1bmN0aW9uIGlzRHVyYXRpb25WYWxpZChtKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBtKSB7XG4gICAgICAgICAgICBpZiAoIShpbmRleE9mLmNhbGwob3JkZXJpbmcsIGtleSkgIT09IC0xICYmIChtW2tleV0gPT0gbnVsbCB8fCAhaXNOYU4obVtrZXldKSkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHVuaXRIYXNEZWNpbWFsID0gZmFsc2U7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3JkZXJpbmcubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGlmIChtW29yZGVyaW5nW2ldXSkge1xuICAgICAgICAgICAgICAgIGlmICh1bml0SGFzRGVjaW1hbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIG9ubHkgYWxsb3cgbm9uLWludGVnZXJzIGZvciBzbWFsbGVzdCB1bml0XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwYXJzZUZsb2F0KG1bb3JkZXJpbmdbaV1dKSAhPT0gdG9JbnQobVtvcmRlcmluZ1tpXV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHVuaXRIYXNEZWNpbWFsID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1ZhbGlkJDEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUludmFsaWQkMSgpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKE5hTik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gRHVyYXRpb24gKGR1cmF0aW9uKSB7XG4gICAgICAgIHZhciBub3JtYWxpemVkSW5wdXQgPSBub3JtYWxpemVPYmplY3RVbml0cyhkdXJhdGlvbiksXG4gICAgICAgICAgICB5ZWFycyA9IG5vcm1hbGl6ZWRJbnB1dC55ZWFyIHx8IDAsXG4gICAgICAgICAgICBxdWFydGVycyA9IG5vcm1hbGl6ZWRJbnB1dC5xdWFydGVyIHx8IDAsXG4gICAgICAgICAgICBtb250aHMgPSBub3JtYWxpemVkSW5wdXQubW9udGggfHwgMCxcbiAgICAgICAgICAgIHdlZWtzID0gbm9ybWFsaXplZElucHV0LndlZWsgfHwgMCxcbiAgICAgICAgICAgIGRheXMgPSBub3JtYWxpemVkSW5wdXQuZGF5IHx8IDAsXG4gICAgICAgICAgICBob3VycyA9IG5vcm1hbGl6ZWRJbnB1dC5ob3VyIHx8IDAsXG4gICAgICAgICAgICBtaW51dGVzID0gbm9ybWFsaXplZElucHV0Lm1pbnV0ZSB8fCAwLFxuICAgICAgICAgICAgc2Vjb25kcyA9IG5vcm1hbGl6ZWRJbnB1dC5zZWNvbmQgfHwgMCxcbiAgICAgICAgICAgIG1pbGxpc2Vjb25kcyA9IG5vcm1hbGl6ZWRJbnB1dC5taWxsaXNlY29uZCB8fCAwO1xuXG4gICAgICAgIHRoaXMuX2lzVmFsaWQgPSBpc0R1cmF0aW9uVmFsaWQobm9ybWFsaXplZElucHV0KTtcblxuICAgICAgICAvLyByZXByZXNlbnRhdGlvbiBmb3IgZGF0ZUFkZFJlbW92ZVxuICAgICAgICB0aGlzLl9taWxsaXNlY29uZHMgPSArbWlsbGlzZWNvbmRzICtcbiAgICAgICAgICAgIHNlY29uZHMgKiAxZTMgKyAvLyAxMDAwXG4gICAgICAgICAgICBtaW51dGVzICogNmU0ICsgLy8gMTAwMCAqIDYwXG4gICAgICAgICAgICBob3VycyAqIDEwMDAgKiA2MCAqIDYwOyAvL3VzaW5nIDEwMDAgKiA2MCAqIDYwIGluc3RlYWQgb2YgMzZlNSB0byBhdm9pZCBmbG9hdGluZyBwb2ludCByb3VuZGluZyBlcnJvcnMgaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzI5NzhcbiAgICAgICAgLy8gQmVjYXVzZSBvZiBkYXRlQWRkUmVtb3ZlIHRyZWF0cyAyNCBob3VycyBhcyBkaWZmZXJlbnQgZnJvbSBhXG4gICAgICAgIC8vIGRheSB3aGVuIHdvcmtpbmcgYXJvdW5kIERTVCwgd2UgbmVlZCB0byBzdG9yZSB0aGVtIHNlcGFyYXRlbHlcbiAgICAgICAgdGhpcy5fZGF5cyA9ICtkYXlzICtcbiAgICAgICAgICAgIHdlZWtzICogNztcbiAgICAgICAgLy8gSXQgaXMgaW1wb3NzaWJsZSB0byB0cmFuc2xhdGUgbW9udGhzIGludG8gZGF5cyB3aXRob3V0IGtub3dpbmdcbiAgICAgICAgLy8gd2hpY2ggbW9udGhzIHlvdSBhcmUgYXJlIHRhbGtpbmcgYWJvdXQsIHNvIHdlIGhhdmUgdG8gc3RvcmVcbiAgICAgICAgLy8gaXQgc2VwYXJhdGVseS5cbiAgICAgICAgdGhpcy5fbW9udGhzID0gK21vbnRocyArXG4gICAgICAgICAgICBxdWFydGVycyAqIDMgK1xuICAgICAgICAgICAgeWVhcnMgKiAxMjtcblxuICAgICAgICB0aGlzLl9kYXRhID0ge307XG5cbiAgICAgICAgdGhpcy5fbG9jYWxlID0gZ2V0TG9jYWxlKCk7XG5cbiAgICAgICAgdGhpcy5fYnViYmxlKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEdXJhdGlvbiAob2JqKSB7XG4gICAgICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBEdXJhdGlvbjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhYnNSb3VuZCAobnVtYmVyKSB7XG4gICAgICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCgtMSAqIG51bWJlcikgKiAtMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKG51bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBmdW5jdGlvbiBvZmZzZXQgKHRva2VuLCBzZXBhcmF0b3IpIHtcbiAgICAgICAgYWRkRm9ybWF0VG9rZW4odG9rZW4sIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBvZmZzZXQgPSB0aGlzLnV0Y09mZnNldCgpO1xuICAgICAgICAgICAgdmFyIHNpZ24gPSAnKyc7XG4gICAgICAgICAgICBpZiAob2Zmc2V0IDwgMCkge1xuICAgICAgICAgICAgICAgIG9mZnNldCA9IC1vZmZzZXQ7XG4gICAgICAgICAgICAgICAgc2lnbiA9ICctJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzaWduICsgemVyb0ZpbGwofn4ob2Zmc2V0IC8gNjApLCAyKSArIHNlcGFyYXRvciArIHplcm9GaWxsKH5+KG9mZnNldCkgJSA2MCwgMik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9mZnNldCgnWicsICc6Jyk7XG4gICAgb2Zmc2V0KCdaWicsICcnKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1onLCAgbWF0Y2hTaG9ydE9mZnNldCk7XG4gICAgYWRkUmVnZXhUb2tlbignWlonLCBtYXRjaFNob3J0T2Zmc2V0KTtcbiAgICBhZGRQYXJzZVRva2VuKFsnWicsICdaWiddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgY29uZmlnLl91c2VVVEMgPSB0cnVlO1xuICAgICAgICBjb25maWcuX3R6bSA9IG9mZnNldEZyb21TdHJpbmcobWF0Y2hTaG9ydE9mZnNldCwgaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gSEVMUEVSU1xuXG4gICAgLy8gdGltZXpvbmUgY2h1bmtlclxuICAgIC8vICcrMTA6MDAnID4gWycxMCcsICAnMDAnXVxuICAgIC8vICctMTUzMCcgID4gWyctMTUnLCAnMzAnXVxuICAgIHZhciBjaHVua09mZnNldCA9IC8oW1xcK1xcLV18XFxkXFxkKS9naTtcblxuICAgIGZ1bmN0aW9uIG9mZnNldEZyb21TdHJpbmcobWF0Y2hlciwgc3RyaW5nKSB7XG4gICAgICAgIHZhciBtYXRjaGVzID0gKHN0cmluZyB8fCAnJykubWF0Y2gobWF0Y2hlcik7XG5cbiAgICAgICAgaWYgKG1hdGNoZXMgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGNodW5rICAgPSBtYXRjaGVzW21hdGNoZXMubGVuZ3RoIC0gMV0gfHwgW107XG4gICAgICAgIHZhciBwYXJ0cyAgID0gKGNodW5rICsgJycpLm1hdGNoKGNodW5rT2Zmc2V0KSB8fCBbJy0nLCAwLCAwXTtcbiAgICAgICAgdmFyIG1pbnV0ZXMgPSArKHBhcnRzWzFdICogNjApICsgdG9JbnQocGFydHNbMl0pO1xuXG4gICAgICAgIHJldHVybiBtaW51dGVzID09PSAwID9cbiAgICAgICAgICAwIDpcbiAgICAgICAgICBwYXJ0c1swXSA9PT0gJysnID8gbWludXRlcyA6IC1taW51dGVzO1xuICAgIH1cblxuICAgIC8vIFJldHVybiBhIG1vbWVudCBmcm9tIGlucHV0LCB0aGF0IGlzIGxvY2FsL3V0Yy96b25lIGVxdWl2YWxlbnQgdG8gbW9kZWwuXG4gICAgZnVuY3Rpb24gY2xvbmVXaXRoT2Zmc2V0KGlucHV0LCBtb2RlbCkge1xuICAgICAgICB2YXIgcmVzLCBkaWZmO1xuICAgICAgICBpZiAobW9kZWwuX2lzVVRDKSB7XG4gICAgICAgICAgICByZXMgPSBtb2RlbC5jbG9uZSgpO1xuICAgICAgICAgICAgZGlmZiA9IChpc01vbWVudChpbnB1dCkgfHwgaXNEYXRlKGlucHV0KSA/IGlucHV0LnZhbHVlT2YoKSA6IGNyZWF0ZUxvY2FsKGlucHV0KS52YWx1ZU9mKCkpIC0gcmVzLnZhbHVlT2YoKTtcbiAgICAgICAgICAgIC8vIFVzZSBsb3ctbGV2ZWwgYXBpLCBiZWNhdXNlIHRoaXMgZm4gaXMgbG93LWxldmVsIGFwaS5cbiAgICAgICAgICAgIHJlcy5fZC5zZXRUaW1lKHJlcy5fZC52YWx1ZU9mKCkgKyBkaWZmKTtcbiAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldChyZXMsIGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwoaW5wdXQpLmxvY2FsKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXREYXRlT2Zmc2V0IChtKSB7XG4gICAgICAgIC8vIE9uIEZpcmVmb3guMjQgRGF0ZSNnZXRUaW1lem9uZU9mZnNldCByZXR1cm5zIGEgZmxvYXRpbmcgcG9pbnQuXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L3B1bGwvMTg3MVxuICAgICAgICByZXR1cm4gLU1hdGgucm91bmQobS5fZC5nZXRUaW1lem9uZU9mZnNldCgpIC8gMTUpICogMTU7XG4gICAgfVxuXG4gICAgLy8gSE9PS1NcblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgYSBtb21lbnQgaXMgbXV0YXRlZC5cbiAgICAvLyBJdCBpcyBpbnRlbmRlZCB0byBrZWVwIHRoZSBvZmZzZXQgaW4gc3luYyB3aXRoIHRoZSB0aW1lem9uZS5cbiAgICBob29rcy51cGRhdGVPZmZzZXQgPSBmdW5jdGlvbiAoKSB7fTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIC8vIGtlZXBMb2NhbFRpbWUgPSB0cnVlIG1lYW5zIG9ubHkgY2hhbmdlIHRoZSB0aW1lem9uZSwgd2l0aG91dFxuICAgIC8vIGFmZmVjdGluZyB0aGUgbG9jYWwgaG91ci4gU28gNTozMToyNiArMDMwMCAtLVt1dGNPZmZzZXQoMiwgdHJ1ZSldLS0+XG4gICAgLy8gNTozMToyNiArMDIwMCBJdCBpcyBwb3NzaWJsZSB0aGF0IDU6MzE6MjYgZG9lc24ndCBleGlzdCB3aXRoIG9mZnNldFxuICAgIC8vICswMjAwLCBzbyB3ZSBhZGp1c3QgdGhlIHRpbWUgYXMgbmVlZGVkLCB0byBiZSB2YWxpZC5cbiAgICAvL1xuICAgIC8vIEtlZXBpbmcgdGhlIHRpbWUgYWN0dWFsbHkgYWRkcy9zdWJ0cmFjdHMgKG9uZSBob3VyKVxuICAgIC8vIGZyb20gdGhlIGFjdHVhbCByZXByZXNlbnRlZCB0aW1lLiBUaGF0IGlzIHdoeSB3ZSBjYWxsIHVwZGF0ZU9mZnNldFxuICAgIC8vIGEgc2Vjb25kIHRpbWUuIEluIGNhc2UgaXQgd2FudHMgdXMgdG8gY2hhbmdlIHRoZSBvZmZzZXQgYWdhaW5cbiAgICAvLyBfY2hhbmdlSW5Qcm9ncmVzcyA9PSB0cnVlIGNhc2UsIHRoZW4gd2UgaGF2ZSB0byBhZGp1c3QsIGJlY2F1c2VcbiAgICAvLyB0aGVyZSBpcyBubyBzdWNoIHRpbWUgaW4gdGhlIGdpdmVuIHRpbWV6b25lLlxuICAgIGZ1bmN0aW9uIGdldFNldE9mZnNldCAoaW5wdXQsIGtlZXBMb2NhbFRpbWUsIGtlZXBNaW51dGVzKSB7XG4gICAgICAgIHZhciBvZmZzZXQgPSB0aGlzLl9vZmZzZXQgfHwgMCxcbiAgICAgICAgICAgIGxvY2FsQWRqdXN0O1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgIT0gbnVsbCA/IHRoaXMgOiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaW5wdXQgPSBvZmZzZXRGcm9tU3RyaW5nKG1hdGNoU2hvcnRPZmZzZXQsIGlucHV0KTtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChNYXRoLmFicyhpbnB1dCkgPCAxNiAmJiAha2VlcE1pbnV0ZXMpIHtcbiAgICAgICAgICAgICAgICBpbnB1dCA9IGlucHV0ICogNjA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzVVRDICYmIGtlZXBMb2NhbFRpbWUpIHtcbiAgICAgICAgICAgICAgICBsb2NhbEFkanVzdCA9IGdldERhdGVPZmZzZXQodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9vZmZzZXQgPSBpbnB1dDtcbiAgICAgICAgICAgIHRoaXMuX2lzVVRDID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChsb2NhbEFkanVzdCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGQobG9jYWxBZGp1c3QsICdtJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob2Zmc2V0ICE9PSBpbnB1dCkge1xuICAgICAgICAgICAgICAgIGlmICgha2VlcExvY2FsVGltZSB8fCB0aGlzLl9jaGFuZ2VJblByb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZFN1YnRyYWN0KHRoaXMsIGNyZWF0ZUR1cmF0aW9uKGlucHV0IC0gb2Zmc2V0LCAnbScpLCAxLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VJblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHRoaXMsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VJblByb2dyZXNzID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc1VUQyA/IG9mZnNldCA6IGdldERhdGVPZmZzZXQodGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRab25lIChpbnB1dCwga2VlcExvY2FsVGltZSkge1xuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpbnB1dCA9IC1pbnB1dDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoaW5wdXQsIGtlZXBMb2NhbFRpbWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAtdGhpcy51dGNPZmZzZXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldE9mZnNldFRvVVRDIChrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnV0Y09mZnNldCgwLCBrZWVwTG9jYWxUaW1lKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRPZmZzZXRUb0xvY2FsIChrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgIGlmICh0aGlzLl9pc1VUQykge1xuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoMCwga2VlcExvY2FsVGltZSk7XG4gICAgICAgICAgICB0aGlzLl9pc1VUQyA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoa2VlcExvY2FsVGltZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3VidHJhY3QoZ2V0RGF0ZU9mZnNldCh0aGlzKSwgJ20nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRPZmZzZXRUb1BhcnNlZE9mZnNldCAoKSB7XG4gICAgICAgIGlmICh0aGlzLl90em0gIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQodGhpcy5fdHptLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuX2kgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YXIgdFpvbmUgPSBvZmZzZXRGcm9tU3RyaW5nKG1hdGNoT2Zmc2V0LCB0aGlzLl9pKTtcbiAgICAgICAgICAgIGlmICh0Wm9uZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQodFpvbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoMCwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFzQWxpZ25lZEhvdXJPZmZzZXQgKGlucHV0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpbnB1dCA9IGlucHV0ID8gY3JlYXRlTG9jYWwoaW5wdXQpLnV0Y09mZnNldCgpIDogMDtcblxuICAgICAgICByZXR1cm4gKHRoaXMudXRjT2Zmc2V0KCkgLSBpbnB1dCkgJSA2MCA9PT0gMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0RheWxpZ2h0U2F2aW5nVGltZSAoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgpID4gdGhpcy5jbG9uZSgpLm1vbnRoKDApLnV0Y09mZnNldCgpIHx8XG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgpID4gdGhpcy5jbG9uZSgpLm1vbnRoKDUpLnV0Y09mZnNldCgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEYXlsaWdodFNhdmluZ1RpbWVTaGlmdGVkICgpIHtcbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh0aGlzLl9pc0RTVFNoaWZ0ZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faXNEU1RTaGlmdGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGMgPSB7fTtcblxuICAgICAgICBjb3B5Q29uZmlnKGMsIHRoaXMpO1xuICAgICAgICBjID0gcHJlcGFyZUNvbmZpZyhjKTtcblxuICAgICAgICBpZiAoYy5fYSkge1xuICAgICAgICAgICAgdmFyIG90aGVyID0gYy5faXNVVEMgPyBjcmVhdGVVVEMoYy5fYSkgOiBjcmVhdGVMb2NhbChjLl9hKTtcbiAgICAgICAgICAgIHRoaXMuX2lzRFNUU2hpZnRlZCA9IHRoaXMuaXNWYWxpZCgpICYmXG4gICAgICAgICAgICAgICAgY29tcGFyZUFycmF5cyhjLl9hLCBvdGhlci50b0FycmF5KCkpID4gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2lzRFNUU2hpZnRlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRFNUU2hpZnRlZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0xvY2FsICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gIXRoaXMuX2lzVVRDIDogZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNVdGNPZmZzZXQgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLl9pc1VUQyA6IGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVXRjICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpcy5faXNVVEMgJiYgdGhpcy5fb2Zmc2V0ID09PSAwIDogZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQVNQLk5FVCBqc29uIGRhdGUgZm9ybWF0IHJlZ2V4XG4gICAgdmFyIGFzcE5ldFJlZ2V4ID0gL14oXFwtfFxcKyk/KD86KFxcZCopWy4gXSk/KFxcZCspXFw6KFxcZCspKD86XFw6KFxcZCspKFxcLlxcZCopPyk/JC87XG5cbiAgICAvLyBmcm9tIGh0dHA6Ly9kb2NzLmNsb3N1cmUtbGlicmFyeS5nb29nbGVjb2RlLmNvbS9naXQvY2xvc3VyZV9nb29nX2RhdGVfZGF0ZS5qcy5zb3VyY2UuaHRtbFxuICAgIC8vIHNvbWV3aGF0IG1vcmUgaW4gbGluZSB3aXRoIDQuNC4zLjIgMjAwNCBzcGVjLCBidXQgYWxsb3dzIGRlY2ltYWwgYW55d2hlcmVcbiAgICAvLyBhbmQgZnVydGhlciBtb2RpZmllZCB0byBhbGxvdyBmb3Igc3RyaW5ncyBjb250YWluaW5nIGJvdGggd2VlayBhbmQgZGF5XG4gICAgdmFyIGlzb1JlZ2V4ID0gL14oLXxcXCspP1AoPzooWy0rXT9bMC05LC5dKilZKT8oPzooWy0rXT9bMC05LC5dKilNKT8oPzooWy0rXT9bMC05LC5dKilXKT8oPzooWy0rXT9bMC05LC5dKilEKT8oPzpUKD86KFstK10/WzAtOSwuXSopSCk/KD86KFstK10/WzAtOSwuXSopTSk/KD86KFstK10/WzAtOSwuXSopUyk/KT8kLztcblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUR1cmF0aW9uIChpbnB1dCwga2V5KSB7XG4gICAgICAgIHZhciBkdXJhdGlvbiA9IGlucHV0LFxuICAgICAgICAgICAgLy8gbWF0Y2hpbmcgYWdhaW5zdCByZWdleHAgaXMgZXhwZW5zaXZlLCBkbyBpdCBvbiBkZW1hbmRcbiAgICAgICAgICAgIG1hdGNoID0gbnVsbCxcbiAgICAgICAgICAgIHNpZ24sXG4gICAgICAgICAgICByZXQsXG4gICAgICAgICAgICBkaWZmUmVzO1xuXG4gICAgICAgIGlmIChpc0R1cmF0aW9uKGlucHV0KSkge1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgbXMgOiBpbnB1dC5fbWlsbGlzZWNvbmRzLFxuICAgICAgICAgICAgICAgIGQgIDogaW5wdXQuX2RheXMsXG4gICAgICAgICAgICAgICAgTSAgOiBpbnB1dC5fbW9udGhzXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKGlucHV0KSkge1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7fTtcbiAgICAgICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgICAgICBkdXJhdGlvbltrZXldID0gaW5wdXQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uLm1pbGxpc2Vjb25kcyA9IGlucHV0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCEhKG1hdGNoID0gYXNwTmV0UmVnZXguZXhlYyhpbnB1dCkpKSB7XG4gICAgICAgICAgICBzaWduID0gKG1hdGNoWzFdID09PSAnLScpID8gLTEgOiAxO1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgeSAgOiAwLFxuICAgICAgICAgICAgICAgIGQgIDogdG9JbnQobWF0Y2hbREFURV0pICAgICAgICAgICAgICAgICAgICAgICAgICogc2lnbixcbiAgICAgICAgICAgICAgICBoICA6IHRvSW50KG1hdGNoW0hPVVJdKSAgICAgICAgICAgICAgICAgICAgICAgICAqIHNpZ24sXG4gICAgICAgICAgICAgICAgbSAgOiB0b0ludChtYXRjaFtNSU5VVEVdKSAgICAgICAgICAgICAgICAgICAgICAgKiBzaWduLFxuICAgICAgICAgICAgICAgIHMgIDogdG9JbnQobWF0Y2hbU0VDT05EXSkgICAgICAgICAgICAgICAgICAgICAgICogc2lnbixcbiAgICAgICAgICAgICAgICBtcyA6IHRvSW50KGFic1JvdW5kKG1hdGNoW01JTExJU0VDT05EXSAqIDEwMDApKSAqIHNpZ24gLy8gdGhlIG1pbGxpc2Vjb25kIGRlY2ltYWwgcG9pbnQgaXMgaW5jbHVkZWQgaW4gdGhlIG1hdGNoXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKCEhKG1hdGNoID0gaXNvUmVnZXguZXhlYyhpbnB1dCkpKSB7XG4gICAgICAgICAgICBzaWduID0gKG1hdGNoWzFdID09PSAnLScpID8gLTEgOiAobWF0Y2hbMV0gPT09ICcrJykgPyAxIDogMTtcbiAgICAgICAgICAgIGR1cmF0aW9uID0ge1xuICAgICAgICAgICAgICAgIHkgOiBwYXJzZUlzbyhtYXRjaFsyXSwgc2lnbiksXG4gICAgICAgICAgICAgICAgTSA6IHBhcnNlSXNvKG1hdGNoWzNdLCBzaWduKSxcbiAgICAgICAgICAgICAgICB3IDogcGFyc2VJc28obWF0Y2hbNF0sIHNpZ24pLFxuICAgICAgICAgICAgICAgIGQgOiBwYXJzZUlzbyhtYXRjaFs1XSwgc2lnbiksXG4gICAgICAgICAgICAgICAgaCA6IHBhcnNlSXNvKG1hdGNoWzZdLCBzaWduKSxcbiAgICAgICAgICAgICAgICBtIDogcGFyc2VJc28obWF0Y2hbN10sIHNpZ24pLFxuICAgICAgICAgICAgICAgIHMgOiBwYXJzZUlzbyhtYXRjaFs4XSwgc2lnbilcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAoZHVyYXRpb24gPT0gbnVsbCkgey8vIGNoZWNrcyBmb3IgbnVsbCBvciB1bmRlZmluZWRcbiAgICAgICAgICAgIGR1cmF0aW9uID0ge307XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGR1cmF0aW9uID09PSAnb2JqZWN0JyAmJiAoJ2Zyb20nIGluIGR1cmF0aW9uIHx8ICd0bycgaW4gZHVyYXRpb24pKSB7XG4gICAgICAgICAgICBkaWZmUmVzID0gbW9tZW50c0RpZmZlcmVuY2UoY3JlYXRlTG9jYWwoZHVyYXRpb24uZnJvbSksIGNyZWF0ZUxvY2FsKGR1cmF0aW9uLnRvKSk7XG5cbiAgICAgICAgICAgIGR1cmF0aW9uID0ge307XG4gICAgICAgICAgICBkdXJhdGlvbi5tcyA9IGRpZmZSZXMubWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgZHVyYXRpb24uTSA9IGRpZmZSZXMubW9udGhzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0ID0gbmV3IER1cmF0aW9uKGR1cmF0aW9uKTtcblxuICAgICAgICBpZiAoaXNEdXJhdGlvbihpbnB1dCkgJiYgaGFzT3duUHJvcChpbnB1dCwgJ19sb2NhbGUnKSkge1xuICAgICAgICAgICAgcmV0Ll9sb2NhbGUgPSBpbnB1dC5fbG9jYWxlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG5cbiAgICBjcmVhdGVEdXJhdGlvbi5mbiA9IER1cmF0aW9uLnByb3RvdHlwZTtcbiAgICBjcmVhdGVEdXJhdGlvbi5pbnZhbGlkID0gY3JlYXRlSW52YWxpZCQxO1xuXG4gICAgZnVuY3Rpb24gcGFyc2VJc28gKGlucCwgc2lnbikge1xuICAgICAgICAvLyBXZSdkIG5vcm1hbGx5IHVzZSB+fmlucCBmb3IgdGhpcywgYnV0IHVuZm9ydHVuYXRlbHkgaXQgYWxzb1xuICAgICAgICAvLyBjb252ZXJ0cyBmbG9hdHMgdG8gaW50cy5cbiAgICAgICAgLy8gaW5wIG1heSBiZSB1bmRlZmluZWQsIHNvIGNhcmVmdWwgY2FsbGluZyByZXBsYWNlIG9uIGl0LlxuICAgICAgICB2YXIgcmVzID0gaW5wICYmIHBhcnNlRmxvYXQoaW5wLnJlcGxhY2UoJywnLCAnLicpKTtcbiAgICAgICAgLy8gYXBwbHkgc2lnbiB3aGlsZSB3ZSdyZSBhdCBpdFxuICAgICAgICByZXR1cm4gKGlzTmFOKHJlcykgPyAwIDogcmVzKSAqIHNpZ247XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcG9zaXRpdmVNb21lbnRzRGlmZmVyZW5jZShiYXNlLCBvdGhlcikge1xuICAgICAgICB2YXIgcmVzID0ge21pbGxpc2Vjb25kczogMCwgbW9udGhzOiAwfTtcblxuICAgICAgICByZXMubW9udGhzID0gb3RoZXIubW9udGgoKSAtIGJhc2UubW9udGgoKSArXG4gICAgICAgICAgICAob3RoZXIueWVhcigpIC0gYmFzZS55ZWFyKCkpICogMTI7XG4gICAgICAgIGlmIChiYXNlLmNsb25lKCkuYWRkKHJlcy5tb250aHMsICdNJykuaXNBZnRlcihvdGhlcikpIHtcbiAgICAgICAgICAgIC0tcmVzLm1vbnRocztcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcy5taWxsaXNlY29uZHMgPSArb3RoZXIgLSArKGJhc2UuY2xvbmUoKS5hZGQocmVzLm1vbnRocywgJ00nKSk7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb21lbnRzRGlmZmVyZW5jZShiYXNlLCBvdGhlcikge1xuICAgICAgICB2YXIgcmVzO1xuICAgICAgICBpZiAoIShiYXNlLmlzVmFsaWQoKSAmJiBvdGhlci5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4ge21pbGxpc2Vjb25kczogMCwgbW9udGhzOiAwfTtcbiAgICAgICAgfVxuXG4gICAgICAgIG90aGVyID0gY2xvbmVXaXRoT2Zmc2V0KG90aGVyLCBiYXNlKTtcbiAgICAgICAgaWYgKGJhc2UuaXNCZWZvcmUob3RoZXIpKSB7XG4gICAgICAgICAgICByZXMgPSBwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlKGJhc2UsIG90aGVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcyA9IHBvc2l0aXZlTW9tZW50c0RpZmZlcmVuY2Uob3RoZXIsIGJhc2UpO1xuICAgICAgICAgICAgcmVzLm1pbGxpc2Vjb25kcyA9IC1yZXMubWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgcmVzLm1vbnRocyA9IC1yZXMubW9udGhzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvLyBUT0RPOiByZW1vdmUgJ25hbWUnIGFyZyBhZnRlciBkZXByZWNhdGlvbiBpcyByZW1vdmVkXG4gICAgZnVuY3Rpb24gY3JlYXRlQWRkZXIoZGlyZWN0aW9uLCBuYW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHZhciBkdXIsIHRtcDtcbiAgICAgICAgICAgIC8vaW52ZXJ0IHRoZSBhcmd1bWVudHMsIGJ1dCBjb21wbGFpbiBhYm91dCBpdFxuICAgICAgICAgICAgaWYgKHBlcmlvZCAhPT0gbnVsbCAmJiAhaXNOYU4oK3BlcmlvZCkpIHtcbiAgICAgICAgICAgICAgICBkZXByZWNhdGVTaW1wbGUobmFtZSwgJ21vbWVudCgpLicgKyBuYW1lICArICcocGVyaW9kLCBudW1iZXIpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgbW9tZW50KCkuJyArIG5hbWUgKyAnKG51bWJlciwgcGVyaW9kKS4gJyArXG4gICAgICAgICAgICAgICAgJ1NlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2FkZC1pbnZlcnRlZC1wYXJhbS8gZm9yIG1vcmUgaW5mby4nKTtcbiAgICAgICAgICAgICAgICB0bXAgPSB2YWw7IHZhbCA9IHBlcmlvZDsgcGVyaW9kID0gdG1wO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YWwgPSB0eXBlb2YgdmFsID09PSAnc3RyaW5nJyA/ICt2YWwgOiB2YWw7XG4gICAgICAgICAgICBkdXIgPSBjcmVhdGVEdXJhdGlvbih2YWwsIHBlcmlvZCk7XG4gICAgICAgICAgICBhZGRTdWJ0cmFjdCh0aGlzLCBkdXIsIGRpcmVjdGlvbik7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRTdWJ0cmFjdCAobW9tLCBkdXJhdGlvbiwgaXNBZGRpbmcsIHVwZGF0ZU9mZnNldCkge1xuICAgICAgICB2YXIgbWlsbGlzZWNvbmRzID0gZHVyYXRpb24uX21pbGxpc2Vjb25kcyxcbiAgICAgICAgICAgIGRheXMgPSBhYnNSb3VuZChkdXJhdGlvbi5fZGF5cyksXG4gICAgICAgICAgICBtb250aHMgPSBhYnNSb3VuZChkdXJhdGlvbi5fbW9udGhzKTtcblxuICAgICAgICBpZiAoIW1vbS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIC8vIE5vIG9wXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGVPZmZzZXQgPSB1cGRhdGVPZmZzZXQgPT0gbnVsbCA/IHRydWUgOiB1cGRhdGVPZmZzZXQ7XG5cbiAgICAgICAgaWYgKG1vbnRocykge1xuICAgICAgICAgICAgc2V0TW9udGgobW9tLCBnZXQobW9tLCAnTW9udGgnKSArIG1vbnRocyAqIGlzQWRkaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF5cykge1xuICAgICAgICAgICAgc2V0JDEobW9tLCAnRGF0ZScsIGdldChtb20sICdEYXRlJykgKyBkYXlzICogaXNBZGRpbmcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtaWxsaXNlY29uZHMpIHtcbiAgICAgICAgICAgIG1vbS5fZC5zZXRUaW1lKG1vbS5fZC52YWx1ZU9mKCkgKyBtaWxsaXNlY29uZHMgKiBpc0FkZGluZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVwZGF0ZU9mZnNldCkge1xuICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KG1vbSwgZGF5cyB8fCBtb250aHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGFkZCAgICAgID0gY3JlYXRlQWRkZXIoMSwgJ2FkZCcpO1xuICAgIHZhciBzdWJ0cmFjdCA9IGNyZWF0ZUFkZGVyKC0xLCAnc3VidHJhY3QnKTtcblxuICAgIGZ1bmN0aW9uIGdldENhbGVuZGFyRm9ybWF0KG15TW9tZW50LCBub3cpIHtcbiAgICAgICAgdmFyIGRpZmYgPSBteU1vbWVudC5kaWZmKG5vdywgJ2RheXMnLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIGRpZmYgPCAtNiA/ICdzYW1lRWxzZScgOlxuICAgICAgICAgICAgICAgIGRpZmYgPCAtMSA/ICdsYXN0V2VlaycgOlxuICAgICAgICAgICAgICAgIGRpZmYgPCAwID8gJ2xhc3REYXknIDpcbiAgICAgICAgICAgICAgICBkaWZmIDwgMSA/ICdzYW1lRGF5JyA6XG4gICAgICAgICAgICAgICAgZGlmZiA8IDIgPyAnbmV4dERheScgOlxuICAgICAgICAgICAgICAgIGRpZmYgPCA3ID8gJ25leHRXZWVrJyA6ICdzYW1lRWxzZSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FsZW5kYXIkMSAodGltZSwgZm9ybWF0cykge1xuICAgICAgICAvLyBXZSB3YW50IHRvIGNvbXBhcmUgdGhlIHN0YXJ0IG9mIHRvZGF5LCB2cyB0aGlzLlxuICAgICAgICAvLyBHZXR0aW5nIHN0YXJ0LW9mLXRvZGF5IGRlcGVuZHMgb24gd2hldGhlciB3ZSdyZSBsb2NhbC91dGMvb2Zmc2V0IG9yIG5vdC5cbiAgICAgICAgdmFyIG5vdyA9IHRpbWUgfHwgY3JlYXRlTG9jYWwoKSxcbiAgICAgICAgICAgIHNvZCA9IGNsb25lV2l0aE9mZnNldChub3csIHRoaXMpLnN0YXJ0T2YoJ2RheScpLFxuICAgICAgICAgICAgZm9ybWF0ID0gaG9va3MuY2FsZW5kYXJGb3JtYXQodGhpcywgc29kKSB8fCAnc2FtZUVsc2UnO1xuXG4gICAgICAgIHZhciBvdXRwdXQgPSBmb3JtYXRzICYmIChpc0Z1bmN0aW9uKGZvcm1hdHNbZm9ybWF0XSkgPyBmb3JtYXRzW2Zvcm1hdF0uY2FsbCh0aGlzLCBub3cpIDogZm9ybWF0c1tmb3JtYXRdKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXQob3V0cHV0IHx8IHRoaXMubG9jYWxlRGF0YSgpLmNhbGVuZGFyKGZvcm1hdCwgdGhpcywgY3JlYXRlTG9jYWwobm93KSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsb25lICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNb21lbnQodGhpcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNBZnRlciAoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHZhciBsb2NhbElucHV0ID0gaXNNb21lbnQoaW5wdXQpID8gaW5wdXQgOiBjcmVhdGVMb2NhbChpbnB1dCk7XG4gICAgICAgIGlmICghKHRoaXMuaXNWYWxpZCgpICYmIGxvY2FsSW5wdXQuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHMoIWlzVW5kZWZpbmVkKHVuaXRzKSA/IHVuaXRzIDogJ21pbGxpc2Vjb25kJyk7XG4gICAgICAgIGlmICh1bml0cyA9PT0gJ21pbGxpc2Vjb25kJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVPZigpID4gbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxJbnB1dC52YWx1ZU9mKCkgPCB0aGlzLmNsb25lKCkuc3RhcnRPZih1bml0cykudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNCZWZvcmUgKGlucHV0LCB1bml0cykge1xuICAgICAgICB2YXIgbG9jYWxJbnB1dCA9IGlzTW9tZW50KGlucHV0KSA/IGlucHV0IDogY3JlYXRlTG9jYWwoaW5wdXQpO1xuICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbElucHV0LmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKCFpc1VuZGVmaW5lZCh1bml0cykgPyB1bml0cyA6ICdtaWxsaXNlY29uZCcpO1xuICAgICAgICBpZiAodW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlT2YoKSA8IGxvY2FsSW5wdXQudmFsdWVPZigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5lbmRPZih1bml0cykudmFsdWVPZigpIDwgbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0JldHdlZW4gKGZyb20sIHRvLCB1bml0cywgaW5jbHVzaXZpdHkpIHtcbiAgICAgICAgaW5jbHVzaXZpdHkgPSBpbmNsdXNpdml0eSB8fCAnKCknO1xuICAgICAgICByZXR1cm4gKGluY2x1c2l2aXR5WzBdID09PSAnKCcgPyB0aGlzLmlzQWZ0ZXIoZnJvbSwgdW5pdHMpIDogIXRoaXMuaXNCZWZvcmUoZnJvbSwgdW5pdHMpKSAmJlxuICAgICAgICAgICAgKGluY2x1c2l2aXR5WzFdID09PSAnKScgPyB0aGlzLmlzQmVmb3JlKHRvLCB1bml0cykgOiAhdGhpcy5pc0FmdGVyKHRvLCB1bml0cykpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzU2FtZSAoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHZhciBsb2NhbElucHV0ID0gaXNNb21lbnQoaW5wdXQpID8gaW5wdXQgOiBjcmVhdGVMb2NhbChpbnB1dCksXG4gICAgICAgICAgICBpbnB1dE1zO1xuICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbElucHV0LmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzIHx8ICdtaWxsaXNlY29uZCcpO1xuICAgICAgICBpZiAodW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlT2YoKSA9PT0gbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbnB1dE1zID0gbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLnN0YXJ0T2YodW5pdHMpLnZhbHVlT2YoKSA8PSBpbnB1dE1zICYmIGlucHV0TXMgPD0gdGhpcy5jbG9uZSgpLmVuZE9mKHVuaXRzKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1NhbWVPckFmdGVyIChpbnB1dCwgdW5pdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNTYW1lKGlucHV0LCB1bml0cykgfHwgdGhpcy5pc0FmdGVyKGlucHV0LHVuaXRzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1NhbWVPckJlZm9yZSAoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzU2FtZShpbnB1dCwgdW5pdHMpIHx8IHRoaXMuaXNCZWZvcmUoaW5wdXQsdW5pdHMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRpZmYgKGlucHV0LCB1bml0cywgYXNGbG9hdCkge1xuICAgICAgICB2YXIgdGhhdCxcbiAgICAgICAgICAgIHpvbmVEZWx0YSxcbiAgICAgICAgICAgIG91dHB1dDtcblxuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhhdCA9IGNsb25lV2l0aE9mZnNldChpbnB1dCwgdGhpcyk7XG5cbiAgICAgICAgaWYgKCF0aGF0LmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuXG4gICAgICAgIHpvbmVEZWx0YSA9ICh0aGF0LnV0Y09mZnNldCgpIC0gdGhpcy51dGNPZmZzZXQoKSkgKiA2ZTQ7XG5cbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG5cbiAgICAgICAgc3dpdGNoICh1bml0cykge1xuICAgICAgICAgICAgY2FzZSAneWVhcic6IG91dHB1dCA9IG1vbnRoRGlmZih0aGlzLCB0aGF0KSAvIDEyOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzogb3V0cHV0ID0gbW9udGhEaWZmKHRoaXMsIHRoYXQpOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3F1YXJ0ZXInOiBvdXRwdXQgPSBtb250aERpZmYodGhpcywgdGhhdCkgLyAzOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3NlY29uZCc6IG91dHB1dCA9ICh0aGlzIC0gdGhhdCkgLyAxZTM7IGJyZWFrOyAvLyAxMDAwXG4gICAgICAgICAgICBjYXNlICdtaW51dGUnOiBvdXRwdXQgPSAodGhpcyAtIHRoYXQpIC8gNmU0OyBicmVhazsgLy8gMTAwMCAqIDYwXG4gICAgICAgICAgICBjYXNlICdob3VyJzogb3V0cHV0ID0gKHRoaXMgLSB0aGF0KSAvIDM2ZTU7IGJyZWFrOyAvLyAxMDAwICogNjAgKiA2MFxuICAgICAgICAgICAgY2FzZSAnZGF5Jzogb3V0cHV0ID0gKHRoaXMgLSB0aGF0IC0gem9uZURlbHRhKSAvIDg2NGU1OyBicmVhazsgLy8gMTAwMCAqIDYwICogNjAgKiAyNCwgbmVnYXRlIGRzdFxuICAgICAgICAgICAgY2FzZSAnd2Vlayc6IG91dHB1dCA9ICh0aGlzIC0gdGhhdCAtIHpvbmVEZWx0YSkgLyA2MDQ4ZTU7IGJyZWFrOyAvLyAxMDAwICogNjAgKiA2MCAqIDI0ICogNywgbmVnYXRlIGRzdFxuICAgICAgICAgICAgZGVmYXVsdDogb3V0cHV0ID0gdGhpcyAtIHRoYXQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXNGbG9hdCA/IG91dHB1dCA6IGFic0Zsb29yKG91dHB1dCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbW9udGhEaWZmIChhLCBiKSB7XG4gICAgICAgIC8vIGRpZmZlcmVuY2UgaW4gbW9udGhzXG4gICAgICAgIHZhciB3aG9sZU1vbnRoRGlmZiA9ICgoYi55ZWFyKCkgLSBhLnllYXIoKSkgKiAxMikgKyAoYi5tb250aCgpIC0gYS5tb250aCgpKSxcbiAgICAgICAgICAgIC8vIGIgaXMgaW4gKGFuY2hvciAtIDEgbW9udGgsIGFuY2hvciArIDEgbW9udGgpXG4gICAgICAgICAgICBhbmNob3IgPSBhLmNsb25lKCkuYWRkKHdob2xlTW9udGhEaWZmLCAnbW9udGhzJyksXG4gICAgICAgICAgICBhbmNob3IyLCBhZGp1c3Q7XG5cbiAgICAgICAgaWYgKGIgLSBhbmNob3IgPCAwKSB7XG4gICAgICAgICAgICBhbmNob3IyID0gYS5jbG9uZSgpLmFkZCh3aG9sZU1vbnRoRGlmZiAtIDEsICdtb250aHMnKTtcbiAgICAgICAgICAgIC8vIGxpbmVhciBhY3Jvc3MgdGhlIG1vbnRoXG4gICAgICAgICAgICBhZGp1c3QgPSAoYiAtIGFuY2hvcikgLyAoYW5jaG9yIC0gYW5jaG9yMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbmNob3IyID0gYS5jbG9uZSgpLmFkZCh3aG9sZU1vbnRoRGlmZiArIDEsICdtb250aHMnKTtcbiAgICAgICAgICAgIC8vIGxpbmVhciBhY3Jvc3MgdGhlIG1vbnRoXG4gICAgICAgICAgICBhZGp1c3QgPSAoYiAtIGFuY2hvcikgLyAoYW5jaG9yMiAtIGFuY2hvcik7XG4gICAgICAgIH1cblxuICAgICAgICAvL2NoZWNrIGZvciBuZWdhdGl2ZSB6ZXJvLCByZXR1cm4gemVybyBpZiBuZWdhdGl2ZSB6ZXJvXG4gICAgICAgIHJldHVybiAtKHdob2xlTW9udGhEaWZmICsgYWRqdXN0KSB8fCAwO1xuICAgIH1cblxuICAgIGhvb2tzLmRlZmF1bHRGb3JtYXQgPSAnWVlZWS1NTS1ERFRISDptbTpzc1onO1xuICAgIGhvb2tzLmRlZmF1bHRGb3JtYXRVdGMgPSAnWVlZWS1NTS1ERFRISDptbTpzc1taXSc7XG5cbiAgICBmdW5jdGlvbiB0b1N0cmluZyAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNsb25lKCkubG9jYWxlKCdlbicpLmZvcm1hdCgnZGRkIE1NTSBERCBZWVlZIEhIOm1tOnNzIFtHTVRdWlonKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0lTT1N0cmluZyhrZWVwT2Zmc2V0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciB1dGMgPSBrZWVwT2Zmc2V0ICE9PSB0cnVlO1xuICAgICAgICB2YXIgbSA9IHV0YyA/IHRoaXMuY2xvbmUoKS51dGMoKSA6IHRoaXM7XG4gICAgICAgIGlmIChtLnllYXIoKSA8IDAgfHwgbS55ZWFyKCkgPiA5OTk5KSB7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0TW9tZW50KG0sIHV0YyA/ICdZWVlZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0nIDogJ1lZWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1onKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNGdW5jdGlvbihEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZykpIHtcbiAgICAgICAgICAgIC8vIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBpcyB+NTB4IGZhc3RlciwgdXNlIGl0IHdoZW4gd2UgY2FuXG4gICAgICAgICAgICBpZiAodXRjKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9EYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMudmFsdWVPZigpICsgdGhpcy51dGNPZmZzZXQoKSAqIDYwICogMTAwMCkudG9JU09TdHJpbmcoKS5yZXBsYWNlKCdaJywgZm9ybWF0TW9tZW50KG0sICdaJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtYXRNb21lbnQobSwgdXRjID8gJ1lZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0nIDogJ1lZWVktTU0tRERbVF1ISDptbTpzcy5TU1NaJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIGEgaHVtYW4gcmVhZGFibGUgcmVwcmVzZW50YXRpb24gb2YgYSBtb21lbnQgdGhhdCBjYW5cbiAgICAgKiBhbHNvIGJlIGV2YWx1YXRlZCB0byBnZXQgYSBuZXcgbW9tZW50IHdoaWNoIGlzIHRoZSBzYW1lXG4gICAgICpcbiAgICAgKiBAbGluayBodHRwczovL25vZGVqcy5vcmcvZGlzdC9sYXRlc3QvZG9jcy9hcGkvdXRpbC5odG1sI3V0aWxfY3VzdG9tX2luc3BlY3RfZnVuY3Rpb25fb25fb2JqZWN0c1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluc3BlY3QgKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ21vbWVudC5pbnZhbGlkKC8qICcgKyB0aGlzLl9pICsgJyAqLyknO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmdW5jID0gJ21vbWVudCc7XG4gICAgICAgIHZhciB6b25lID0gJyc7XG4gICAgICAgIGlmICghdGhpcy5pc0xvY2FsKCkpIHtcbiAgICAgICAgICAgIGZ1bmMgPSB0aGlzLnV0Y09mZnNldCgpID09PSAwID8gJ21vbWVudC51dGMnIDogJ21vbWVudC5wYXJzZVpvbmUnO1xuICAgICAgICAgICAgem9uZSA9ICdaJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgcHJlZml4ID0gJ1snICsgZnVuYyArICcoXCJdJztcbiAgICAgICAgdmFyIHllYXIgPSAoMCA8PSB0aGlzLnllYXIoKSAmJiB0aGlzLnllYXIoKSA8PSA5OTk5KSA/ICdZWVlZJyA6ICdZWVlZWVknO1xuICAgICAgICB2YXIgZGF0ZXRpbWUgPSAnLU1NLUREW1RdSEg6bW06c3MuU1NTJztcbiAgICAgICAgdmFyIHN1ZmZpeCA9IHpvbmUgKyAnW1wiKV0nO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdChwcmVmaXggKyB5ZWFyICsgZGF0ZXRpbWUgKyBzdWZmaXgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZvcm1hdCAoaW5wdXRTdHJpbmcpIHtcbiAgICAgICAgaWYgKCFpbnB1dFN0cmluZykge1xuICAgICAgICAgICAgaW5wdXRTdHJpbmcgPSB0aGlzLmlzVXRjKCkgPyBob29rcy5kZWZhdWx0Rm9ybWF0VXRjIDogaG9va3MuZGVmYXVsdEZvcm1hdDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgb3V0cHV0ID0gZm9ybWF0TW9tZW50KHRoaXMsIGlucHV0U3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLnBvc3Rmb3JtYXQob3V0cHV0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmcm9tICh0aW1lLCB3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIGlmICh0aGlzLmlzVmFsaWQoKSAmJlxuICAgICAgICAgICAgICAgICgoaXNNb21lbnQodGltZSkgJiYgdGltZS5pc1ZhbGlkKCkpIHx8XG4gICAgICAgICAgICAgICAgIGNyZWF0ZUxvY2FsKHRpbWUpLmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVEdXJhdGlvbih7dG86IHRoaXMsIGZyb206IHRpbWV9KS5sb2NhbGUodGhpcy5sb2NhbGUoKSkuaHVtYW5pemUoIXdpdGhvdXRTdWZmaXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmcm9tTm93ICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb20oY3JlYXRlTG9jYWwoKSwgd2l0aG91dFN1ZmZpeCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG8gKHRpbWUsIHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZCgpICYmXG4gICAgICAgICAgICAgICAgKChpc01vbWVudCh0aW1lKSAmJiB0aW1lLmlzVmFsaWQoKSkgfHxcbiAgICAgICAgICAgICAgICAgY3JlYXRlTG9jYWwodGltZSkuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKHtmcm9tOiB0aGlzLCB0bzogdGltZX0pLmxvY2FsZSh0aGlzLmxvY2FsZSgpKS5odW1hbml6ZSghd2l0aG91dFN1ZmZpeCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvTm93ICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvKGNyZWF0ZUxvY2FsKCksIHdpdGhvdXRTdWZmaXgpO1xuICAgIH1cblxuICAgIC8vIElmIHBhc3NlZCBhIGxvY2FsZSBrZXksIGl0IHdpbGwgc2V0IHRoZSBsb2NhbGUgZm9yIHRoaXNcbiAgICAvLyBpbnN0YW5jZS4gIE90aGVyd2lzZSwgaXQgd2lsbCByZXR1cm4gdGhlIGxvY2FsZSBjb25maWd1cmF0aW9uXG4gICAgLy8gdmFyaWFibGVzIGZvciB0aGlzIGluc3RhbmNlLlxuICAgIGZ1bmN0aW9uIGxvY2FsZSAoa2V5KSB7XG4gICAgICAgIHZhciBuZXdMb2NhbGVEYXRhO1xuXG4gICAgICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsZS5fYWJicjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld0xvY2FsZURhdGEgPSBnZXRMb2NhbGUoa2V5KTtcbiAgICAgICAgICAgIGlmIChuZXdMb2NhbGVEYXRhICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2NhbGUgPSBuZXdMb2NhbGVEYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbGFuZyA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ21vbWVudCgpLmxhbmcoKSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgbW9tZW50KCkubG9jYWxlRGF0YSgpIHRvIGdldCB0aGUgbGFuZ3VhZ2UgY29uZmlndXJhdGlvbi4gVXNlIG1vbWVudCgpLmxvY2FsZSgpIHRvIGNoYW5nZSBsYW5ndWFnZXMuJyxcbiAgICAgICAgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGUoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVEYXRhICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdGFydE9mICh1bml0cykge1xuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcbiAgICAgICAgLy8gdGhlIGZvbGxvd2luZyBzd2l0Y2ggaW50ZW50aW9uYWxseSBvbWl0cyBicmVhayBrZXl3b3Jkc1xuICAgICAgICAvLyB0byB1dGlsaXplIGZhbGxpbmcgdGhyb3VnaCB0aGUgY2FzZXMuXG4gICAgICAgIHN3aXRjaCAodW5pdHMpIHtcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgIHRoaXMubW9udGgoMCk7XG4gICAgICAgICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlKDEpO1xuICAgICAgICAgICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgICAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICAgICAgY2FzZSAnaXNvV2Vlayc6XG4gICAgICAgICAgICBjYXNlICdkYXknOlxuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5ob3VycygwKTtcbiAgICAgICAgICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICAgICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgICAgICAgICB0aGlzLm1pbnV0ZXMoMCk7XG4gICAgICAgICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgICAgICAgICB0aGlzLnNlY29uZHMoMCk7XG4gICAgICAgICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgICAgICAgICB0aGlzLm1pbGxpc2Vjb25kcygwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHdlZWtzIGFyZSBhIHNwZWNpYWwgY2FzZVxuICAgICAgICBpZiAodW5pdHMgPT09ICd3ZWVrJykge1xuICAgICAgICAgICAgdGhpcy53ZWVrZGF5KDApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1bml0cyA9PT0gJ2lzb1dlZWsnKSB7XG4gICAgICAgICAgICB0aGlzLmlzb1dlZWtkYXkoMSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBxdWFydGVycyBhcmUgYWxzbyBzcGVjaWFsXG4gICAgICAgIGlmICh1bml0cyA9PT0gJ3F1YXJ0ZXInKSB7XG4gICAgICAgICAgICB0aGlzLm1vbnRoKE1hdGguZmxvb3IodGhpcy5tb250aCgpIC8gMykgKiAzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVuZE9mICh1bml0cykge1xuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcbiAgICAgICAgaWYgKHVuaXRzID09PSB1bmRlZmluZWQgfHwgdW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gJ2RhdGUnIGlzIGFuIGFsaWFzIGZvciAnZGF5Jywgc28gaXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXMgc3VjaC5cbiAgICAgICAgaWYgKHVuaXRzID09PSAnZGF0ZScpIHtcbiAgICAgICAgICAgIHVuaXRzID0gJ2RheSc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5zdGFydE9mKHVuaXRzKS5hZGQoMSwgKHVuaXRzID09PSAnaXNvV2VlaycgPyAnd2VlaycgOiB1bml0cykpLnN1YnRyYWN0KDEsICdtcycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbHVlT2YgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZC52YWx1ZU9mKCkgLSAoKHRoaXMuX29mZnNldCB8fCAwKSAqIDYwMDAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1bml4ICgpIHtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IodGhpcy52YWx1ZU9mKCkgLyAxMDAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0RhdGUgKCkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy52YWx1ZU9mKCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvQXJyYXkgKCkge1xuICAgICAgICB2YXIgbSA9IHRoaXM7XG4gICAgICAgIHJldHVybiBbbS55ZWFyKCksIG0ubW9udGgoKSwgbS5kYXRlKCksIG0uaG91cigpLCBtLm1pbnV0ZSgpLCBtLnNlY29uZCgpLCBtLm1pbGxpc2Vjb25kKCldO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvT2JqZWN0ICgpIHtcbiAgICAgICAgdmFyIG0gPSB0aGlzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeWVhcnM6IG0ueWVhcigpLFxuICAgICAgICAgICAgbW9udGhzOiBtLm1vbnRoKCksXG4gICAgICAgICAgICBkYXRlOiBtLmRhdGUoKSxcbiAgICAgICAgICAgIGhvdXJzOiBtLmhvdXJzKCksXG4gICAgICAgICAgICBtaW51dGVzOiBtLm1pbnV0ZXMoKSxcbiAgICAgICAgICAgIHNlY29uZHM6IG0uc2Vjb25kcygpLFxuICAgICAgICAgICAgbWlsbGlzZWNvbmRzOiBtLm1pbGxpc2Vjb25kcygpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgICAgICAgLy8gbmV3IERhdGUoTmFOKS50b0pTT04oKSA9PT0gbnVsbFxuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLnRvSVNPU3RyaW5nKCkgOiBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVmFsaWQkMiAoKSB7XG4gICAgICAgIHJldHVybiBpc1ZhbGlkKHRoaXMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNpbmdGbGFncyAoKSB7XG4gICAgICAgIHJldHVybiBleHRlbmQoe30sIGdldFBhcnNpbmdGbGFncyh0aGlzKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW52YWxpZEF0ICgpIHtcbiAgICAgICAgcmV0dXJuIGdldFBhcnNpbmdGbGFncyh0aGlzKS5vdmVyZmxvdztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGlvbkRhdGEoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbnB1dDogdGhpcy5faSxcbiAgICAgICAgICAgIGZvcm1hdDogdGhpcy5fZixcbiAgICAgICAgICAgIGxvY2FsZTogdGhpcy5fbG9jYWxlLFxuICAgICAgICAgICAgaXNVVEM6IHRoaXMuX2lzVVRDLFxuICAgICAgICAgICAgc3RyaWN0OiB0aGlzLl9zdHJpY3RcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ2dnJywgMl0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2Vla1llYXIoKSAlIDEwMDtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnR0cnLCAyXSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc29XZWVrWWVhcigpICUgMTAwO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gYWRkV2Vla1llYXJGb3JtYXRUb2tlbiAodG9rZW4sIGdldHRlcikge1xuICAgICAgICBhZGRGb3JtYXRUb2tlbigwLCBbdG9rZW4sIHRva2VuLmxlbmd0aF0sIDAsIGdldHRlcik7XG4gICAgfVxuXG4gICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignZ2dnZycsICAgICAnd2Vla1llYXInKTtcbiAgICBhZGRXZWVrWWVhckZvcm1hdFRva2VuKCdnZ2dnZycsICAgICd3ZWVrWWVhcicpO1xuICAgIGFkZFdlZWtZZWFyRm9ybWF0VG9rZW4oJ0dHR0cnLCAgJ2lzb1dlZWtZZWFyJyk7XG4gICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignR0dHR0cnLCAnaXNvV2Vla1llYXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnd2Vla1llYXInLCAnZ2cnKTtcbiAgICBhZGRVbml0QWxpYXMoJ2lzb1dlZWtZZWFyJywgJ0dHJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCd3ZWVrWWVhcicsIDEpO1xuICAgIGFkZFVuaXRQcmlvcml0eSgnaXNvV2Vla1llYXInLCAxKTtcblxuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignRycsICAgICAgbWF0Y2hTaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2cnLCAgICAgIG1hdGNoU2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCdHRycsICAgICBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignZ2cnLCAgICAgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0dHR0cnLCAgIG1hdGNoMXRvNCwgbWF0Y2g0KTtcbiAgICBhZGRSZWdleFRva2VuKCdnZ2dnJywgICBtYXRjaDF0bzQsIG1hdGNoNCk7XG4gICAgYWRkUmVnZXhUb2tlbignR0dHR0cnLCAgbWF0Y2gxdG82LCBtYXRjaDYpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2dnZ2dnJywgIG1hdGNoMXRvNiwgbWF0Y2g2KTtcblxuICAgIGFkZFdlZWtQYXJzZVRva2VuKFsnZ2dnZycsICdnZ2dnZycsICdHR0dHJywgJ0dHR0dHJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuLnN1YnN0cigwLCAyKV0gPSB0b0ludChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihbJ2dnJywgJ0dHJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuXSA9IGhvb2tzLnBhcnNlVHdvRGlnaXRZZWFyKGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldFdlZWtZZWFyIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gZ2V0U2V0V2Vla1llYXJIZWxwZXIuY2FsbCh0aGlzLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIHRoaXMud2VlaygpLFxuICAgICAgICAgICAgICAgIHRoaXMud2Vla2RheSgpLFxuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdyxcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3kpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldElTT1dlZWtZZWFyIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gZ2V0U2V0V2Vla1llYXJIZWxwZXIuY2FsbCh0aGlzLFxuICAgICAgICAgICAgICAgIGlucHV0LCB0aGlzLmlzb1dlZWsoKSwgdGhpcy5pc29XZWVrZGF5KCksIDEsIDQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldElTT1dlZWtzSW5ZZWFyICgpIHtcbiAgICAgICAgcmV0dXJuIHdlZWtzSW5ZZWFyKHRoaXMueWVhcigpLCAxLCA0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRXZWVrc0luWWVhciAoKSB7XG4gICAgICAgIHZhciB3ZWVrSW5mbyA9IHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrO1xuICAgICAgICByZXR1cm4gd2Vla3NJblllYXIodGhpcy55ZWFyKCksIHdlZWtJbmZvLmRvdywgd2Vla0luZm8uZG95KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRXZWVrWWVhckhlbHBlcihpbnB1dCwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIHdlZWtzVGFyZ2V0O1xuICAgICAgICBpZiAoaW5wdXQgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtPZlllYXIodGhpcywgZG93LCBkb3kpLnllYXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3ZWVrc1RhcmdldCA9IHdlZWtzSW5ZZWFyKGlucHV0LCBkb3csIGRveSk7XG4gICAgICAgICAgICBpZiAod2VlayA+IHdlZWtzVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgd2VlayA9IHdlZWtzVGFyZ2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNldFdlZWtBbGwuY2FsbCh0aGlzLCBpbnB1dCwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0V2Vla0FsbCh3ZWVrWWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIGRheU9mWWVhckRhdGEgPSBkYXlPZlllYXJGcm9tV2Vla3Mod2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KSxcbiAgICAgICAgICAgIGRhdGUgPSBjcmVhdGVVVENEYXRlKGRheU9mWWVhckRhdGEueWVhciwgMCwgZGF5T2ZZZWFyRGF0YS5kYXlPZlllYXIpO1xuXG4gICAgICAgIHRoaXMueWVhcihkYXRlLmdldFVUQ0Z1bGxZZWFyKCkpO1xuICAgICAgICB0aGlzLm1vbnRoKGRhdGUuZ2V0VVRDTW9udGgoKSk7XG4gICAgICAgIHRoaXMuZGF0ZShkYXRlLmdldFVUQ0RhdGUoKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdRJywgMCwgJ1FvJywgJ3F1YXJ0ZXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygncXVhcnRlcicsICdRJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdxdWFydGVyJywgNyk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdRJywgbWF0Y2gxKTtcbiAgICBhZGRQYXJzZVRva2VuKCdRJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtNT05USF0gPSAodG9JbnQoaW5wdXQpIC0gMSkgKiAzO1xuICAgIH0pO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gZ2V0U2V0UXVhcnRlciAoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyBNYXRoLmNlaWwoKHRoaXMubW9udGgoKSArIDEpIC8gMykgOiB0aGlzLm1vbnRoKChpbnB1dCAtIDEpICogMyArIHRoaXMubW9udGgoKSAlIDMpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdEJywgWydERCcsIDJdLCAnRG8nLCAnZGF0ZScpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdkYXRlJywgJ0QnKTtcblxuICAgIC8vIFBSSU9SSVRZXG4gICAgYWRkVW5pdFByaW9yaXR5KCdkYXRlJywgOSk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdEJywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignREQnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignRG8nLCBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgXCJvcmRpbmFsUGFyc2VcIiBmYWxsYmFjayBpbiBuZXh0IG1ham9yIHJlbGVhc2UuXG4gICAgICAgIHJldHVybiBpc1N0cmljdCA/XG4gICAgICAgICAgKGxvY2FsZS5fZGF5T2ZNb250aE9yZGluYWxQYXJzZSB8fCBsb2NhbGUuX29yZGluYWxQYXJzZSkgOlxuICAgICAgICAgIGxvY2FsZS5fZGF5T2ZNb250aE9yZGluYWxQYXJzZUxlbmllbnQ7XG4gICAgfSk7XG5cbiAgICBhZGRQYXJzZVRva2VuKFsnRCcsICdERCddLCBEQVRFKTtcbiAgICBhZGRQYXJzZVRva2VuKCdEbycsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbREFURV0gPSB0b0ludChpbnB1dC5tYXRjaChtYXRjaDF0bzIpWzBdKTtcbiAgICB9KTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIHZhciBnZXRTZXREYXlPZk1vbnRoID0gbWFrZUdldFNldCgnRGF0ZScsIHRydWUpO1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ0RERCcsIFsnRERERCcsIDNdLCAnREREbycsICdkYXlPZlllYXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnZGF5T2ZZZWFyJywgJ0RERCcpO1xuXG4gICAgLy8gUFJJT1JJVFlcbiAgICBhZGRVbml0UHJpb3JpdHkoJ2RheU9mWWVhcicsIDQpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignREREJywgIG1hdGNoMXRvMyk7XG4gICAgYWRkUmVnZXhUb2tlbignRERERCcsIG1hdGNoMyk7XG4gICAgYWRkUGFyc2VUb2tlbihbJ0RERCcsICdEREREJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX2RheU9mWWVhciA9IHRvSW50KGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldERheU9mWWVhciAoaW5wdXQpIHtcbiAgICAgICAgdmFyIGRheU9mWWVhciA9IE1hdGgucm91bmQoKHRoaXMuY2xvbmUoKS5zdGFydE9mKCdkYXknKSAtIHRoaXMuY2xvbmUoKS5zdGFydE9mKCd5ZWFyJykpIC8gODY0ZTUpICsgMTtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyBkYXlPZlllYXIgOiB0aGlzLmFkZCgoaW5wdXQgLSBkYXlPZlllYXIpLCAnZCcpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdtJywgWydtbScsIDJdLCAwLCAnbWludXRlJyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ21pbnV0ZScsICdtJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdtaW51dGUnLCAxNCk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdtJywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignbW0nLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUGFyc2VUb2tlbihbJ20nLCAnbW0nXSwgTUlOVVRFKTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIHZhciBnZXRTZXRNaW51dGUgPSBtYWtlR2V0U2V0KCdNaW51dGVzJywgZmFsc2UpO1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ3MnLCBbJ3NzJywgMl0sIDAsICdzZWNvbmQnKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnc2Vjb25kJywgJ3MnKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ3NlY29uZCcsIDE1KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ3MnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdzcycsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRQYXJzZVRva2VuKFsncycsICdzcyddLCBTRUNPTkQpO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgdmFyIGdldFNldFNlY29uZCA9IG1ha2VHZXRTZXQoJ1NlY29uZHMnLCBmYWxzZSk7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignUycsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIH5+KHRoaXMubWlsbGlzZWNvbmQoKSAvIDEwMCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTJywgMl0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIH5+KHRoaXMubWlsbGlzZWNvbmQoKSAvIDEwKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTJywgM10sIDAsICdtaWxsaXNlY29uZCcpO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTUycsIDRdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTJywgNV0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTUycsIDZdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwO1xuICAgIH0pO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NTUycsIDddLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTU1NTJywgOF0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDAwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTU1NTUycsIDldLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwMDAwO1xuICAgIH0pO1xuXG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ21pbGxpc2Vjb25kJywgJ21zJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdtaWxsaXNlY29uZCcsIDE2KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1MnLCAgICBtYXRjaDF0bzMsIG1hdGNoMSk7XG4gICAgYWRkUmVnZXhUb2tlbignU1MnLCAgIG1hdGNoMXRvMywgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdTU1MnLCAgbWF0Y2gxdG8zLCBtYXRjaDMpO1xuXG4gICAgdmFyIHRva2VuO1xuICAgIGZvciAodG9rZW4gPSAnU1NTUyc7IHRva2VuLmxlbmd0aCA8PSA5OyB0b2tlbiArPSAnUycpIHtcbiAgICAgICAgYWRkUmVnZXhUb2tlbih0b2tlbiwgbWF0Y2hVbnNpZ25lZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VNcyhpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbTUlMTElTRUNPTkRdID0gdG9JbnQoKCcwLicgKyBpbnB1dCkgKiAxMDAwKTtcbiAgICB9XG5cbiAgICBmb3IgKHRva2VuID0gJ1MnOyB0b2tlbi5sZW5ndGggPD0gOTsgdG9rZW4gKz0gJ1MnKSB7XG4gICAgICAgIGFkZFBhcnNlVG9rZW4odG9rZW4sIHBhcnNlTXMpO1xuICAgIH1cbiAgICAvLyBNT01FTlRTXG5cbiAgICB2YXIgZ2V0U2V0TWlsbGlzZWNvbmQgPSBtYWtlR2V0U2V0KCdNaWxsaXNlY29uZHMnLCBmYWxzZSk7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigneicsICAwLCAwLCAnem9uZUFiYnInKTtcbiAgICBhZGRGb3JtYXRUb2tlbignenonLCAwLCAwLCAnem9uZU5hbWUnKTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFpvbmVBYmJyICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVVRDID8gJ1VUQycgOiAnJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRab25lTmFtZSAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1VUQyA/ICdDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZScgOiAnJztcbiAgICB9XG5cbiAgICB2YXIgcHJvdG8gPSBNb21lbnQucHJvdG90eXBlO1xuXG4gICAgcHJvdG8uYWRkICAgICAgICAgICAgICAgPSBhZGQ7XG4gICAgcHJvdG8uY2FsZW5kYXIgICAgICAgICAgPSBjYWxlbmRhciQxO1xuICAgIHByb3RvLmNsb25lICAgICAgICAgICAgID0gY2xvbmU7XG4gICAgcHJvdG8uZGlmZiAgICAgICAgICAgICAgPSBkaWZmO1xuICAgIHByb3RvLmVuZE9mICAgICAgICAgICAgID0gZW5kT2Y7XG4gICAgcHJvdG8uZm9ybWF0ICAgICAgICAgICAgPSBmb3JtYXQ7XG4gICAgcHJvdG8uZnJvbSAgICAgICAgICAgICAgPSBmcm9tO1xuICAgIHByb3RvLmZyb21Ob3cgICAgICAgICAgID0gZnJvbU5vdztcbiAgICBwcm90by50byAgICAgICAgICAgICAgICA9IHRvO1xuICAgIHByb3RvLnRvTm93ICAgICAgICAgICAgID0gdG9Ob3c7XG4gICAgcHJvdG8uZ2V0ICAgICAgICAgICAgICAgPSBzdHJpbmdHZXQ7XG4gICAgcHJvdG8uaW52YWxpZEF0ICAgICAgICAgPSBpbnZhbGlkQXQ7XG4gICAgcHJvdG8uaXNBZnRlciAgICAgICAgICAgPSBpc0FmdGVyO1xuICAgIHByb3RvLmlzQmVmb3JlICAgICAgICAgID0gaXNCZWZvcmU7XG4gICAgcHJvdG8uaXNCZXR3ZWVuICAgICAgICAgPSBpc0JldHdlZW47XG4gICAgcHJvdG8uaXNTYW1lICAgICAgICAgICAgPSBpc1NhbWU7XG4gICAgcHJvdG8uaXNTYW1lT3JBZnRlciAgICAgPSBpc1NhbWVPckFmdGVyO1xuICAgIHByb3RvLmlzU2FtZU9yQmVmb3JlICAgID0gaXNTYW1lT3JCZWZvcmU7XG4gICAgcHJvdG8uaXNWYWxpZCAgICAgICAgICAgPSBpc1ZhbGlkJDI7XG4gICAgcHJvdG8ubGFuZyAgICAgICAgICAgICAgPSBsYW5nO1xuICAgIHByb3RvLmxvY2FsZSAgICAgICAgICAgID0gbG9jYWxlO1xuICAgIHByb3RvLmxvY2FsZURhdGEgICAgICAgID0gbG9jYWxlRGF0YTtcbiAgICBwcm90by5tYXggICAgICAgICAgICAgICA9IHByb3RvdHlwZU1heDtcbiAgICBwcm90by5taW4gICAgICAgICAgICAgICA9IHByb3RvdHlwZU1pbjtcbiAgICBwcm90by5wYXJzaW5nRmxhZ3MgICAgICA9IHBhcnNpbmdGbGFncztcbiAgICBwcm90by5zZXQgICAgICAgICAgICAgICA9IHN0cmluZ1NldDtcbiAgICBwcm90by5zdGFydE9mICAgICAgICAgICA9IHN0YXJ0T2Y7XG4gICAgcHJvdG8uc3VidHJhY3QgICAgICAgICAgPSBzdWJ0cmFjdDtcbiAgICBwcm90by50b0FycmF5ICAgICAgICAgICA9IHRvQXJyYXk7XG4gICAgcHJvdG8udG9PYmplY3QgICAgICAgICAgPSB0b09iamVjdDtcbiAgICBwcm90by50b0RhdGUgICAgICAgICAgICA9IHRvRGF0ZTtcbiAgICBwcm90by50b0lTT1N0cmluZyAgICAgICA9IHRvSVNPU3RyaW5nO1xuICAgIHByb3RvLmluc3BlY3QgICAgICAgICAgID0gaW5zcGVjdDtcbiAgICBwcm90by50b0pTT04gICAgICAgICAgICA9IHRvSlNPTjtcbiAgICBwcm90by50b1N0cmluZyAgICAgICAgICA9IHRvU3RyaW5nO1xuICAgIHByb3RvLnVuaXggICAgICAgICAgICAgID0gdW5peDtcbiAgICBwcm90by52YWx1ZU9mICAgICAgICAgICA9IHZhbHVlT2Y7XG4gICAgcHJvdG8uY3JlYXRpb25EYXRhICAgICAgPSBjcmVhdGlvbkRhdGE7XG4gICAgcHJvdG8ueWVhciAgICAgICA9IGdldFNldFllYXI7XG4gICAgcHJvdG8uaXNMZWFwWWVhciA9IGdldElzTGVhcFllYXI7XG4gICAgcHJvdG8ud2Vla1llYXIgICAgPSBnZXRTZXRXZWVrWWVhcjtcbiAgICBwcm90by5pc29XZWVrWWVhciA9IGdldFNldElTT1dlZWtZZWFyO1xuICAgIHByb3RvLnF1YXJ0ZXIgPSBwcm90by5xdWFydGVycyA9IGdldFNldFF1YXJ0ZXI7XG4gICAgcHJvdG8ubW9udGggICAgICAgPSBnZXRTZXRNb250aDtcbiAgICBwcm90by5kYXlzSW5Nb250aCA9IGdldERheXNJbk1vbnRoO1xuICAgIHByb3RvLndlZWsgICAgICAgICAgID0gcHJvdG8ud2Vla3MgICAgICAgID0gZ2V0U2V0V2VlaztcbiAgICBwcm90by5pc29XZWVrICAgICAgICA9IHByb3RvLmlzb1dlZWtzICAgICA9IGdldFNldElTT1dlZWs7XG4gICAgcHJvdG8ud2Vla3NJblllYXIgICAgPSBnZXRXZWVrc0luWWVhcjtcbiAgICBwcm90by5pc29XZWVrc0luWWVhciA9IGdldElTT1dlZWtzSW5ZZWFyO1xuICAgIHByb3RvLmRhdGUgICAgICAgPSBnZXRTZXREYXlPZk1vbnRoO1xuICAgIHByb3RvLmRheSAgICAgICAgPSBwcm90by5kYXlzICAgICAgICAgICAgID0gZ2V0U2V0RGF5T2ZXZWVrO1xuICAgIHByb3RvLndlZWtkYXkgICAgPSBnZXRTZXRMb2NhbGVEYXlPZldlZWs7XG4gICAgcHJvdG8uaXNvV2Vla2RheSA9IGdldFNldElTT0RheU9mV2VlaztcbiAgICBwcm90by5kYXlPZlllYXIgID0gZ2V0U2V0RGF5T2ZZZWFyO1xuICAgIHByb3RvLmhvdXIgPSBwcm90by5ob3VycyA9IGdldFNldEhvdXI7XG4gICAgcHJvdG8ubWludXRlID0gcHJvdG8ubWludXRlcyA9IGdldFNldE1pbnV0ZTtcbiAgICBwcm90by5zZWNvbmQgPSBwcm90by5zZWNvbmRzID0gZ2V0U2V0U2Vjb25kO1xuICAgIHByb3RvLm1pbGxpc2Vjb25kID0gcHJvdG8ubWlsbGlzZWNvbmRzID0gZ2V0U2V0TWlsbGlzZWNvbmQ7XG4gICAgcHJvdG8udXRjT2Zmc2V0ICAgICAgICAgICAgPSBnZXRTZXRPZmZzZXQ7XG4gICAgcHJvdG8udXRjICAgICAgICAgICAgICAgICAgPSBzZXRPZmZzZXRUb1VUQztcbiAgICBwcm90by5sb2NhbCAgICAgICAgICAgICAgICA9IHNldE9mZnNldFRvTG9jYWw7XG4gICAgcHJvdG8ucGFyc2Vab25lICAgICAgICAgICAgPSBzZXRPZmZzZXRUb1BhcnNlZE9mZnNldDtcbiAgICBwcm90by5oYXNBbGlnbmVkSG91ck9mZnNldCA9IGhhc0FsaWduZWRIb3VyT2Zmc2V0O1xuICAgIHByb3RvLmlzRFNUICAgICAgICAgICAgICAgID0gaXNEYXlsaWdodFNhdmluZ1RpbWU7XG4gICAgcHJvdG8uaXNMb2NhbCAgICAgICAgICAgICAgPSBpc0xvY2FsO1xuICAgIHByb3RvLmlzVXRjT2Zmc2V0ICAgICAgICAgID0gaXNVdGNPZmZzZXQ7XG4gICAgcHJvdG8uaXNVdGMgICAgICAgICAgICAgICAgPSBpc1V0YztcbiAgICBwcm90by5pc1VUQyAgICAgICAgICAgICAgICA9IGlzVXRjO1xuICAgIHByb3RvLnpvbmVBYmJyID0gZ2V0Wm9uZUFiYnI7XG4gICAgcHJvdG8uem9uZU5hbWUgPSBnZXRab25lTmFtZTtcbiAgICBwcm90by5kYXRlcyAgPSBkZXByZWNhdGUoJ2RhdGVzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBkYXRlIGluc3RlYWQuJywgZ2V0U2V0RGF5T2ZNb250aCk7XG4gICAgcHJvdG8ubW9udGhzID0gZGVwcmVjYXRlKCdtb250aHMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbnRoIGluc3RlYWQnLCBnZXRTZXRNb250aCk7XG4gICAgcHJvdG8ueWVhcnMgID0gZGVwcmVjYXRlKCd5ZWFycyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgeWVhciBpbnN0ZWFkJywgZ2V0U2V0WWVhcik7XG4gICAgcHJvdG8uem9uZSAgID0gZGVwcmVjYXRlKCdtb21lbnQoKS56b25lIGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQoKS51dGNPZmZzZXQgaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy96b25lLycsIGdldFNldFpvbmUpO1xuICAgIHByb3RvLmlzRFNUU2hpZnRlZCA9IGRlcHJlY2F0ZSgnaXNEU1RTaGlmdGVkIGlzIGRlcHJlY2F0ZWQuIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2RzdC1zaGlmdGVkLyBmb3IgbW9yZSBpbmZvcm1hdGlvbicsIGlzRGF5bGlnaHRTYXZpbmdUaW1lU2hpZnRlZCk7XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVVbml4IChpbnB1dCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwoaW5wdXQgKiAxMDAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVJblpvbmUgKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwuYXBwbHkobnVsbCwgYXJndW1lbnRzKS5wYXJzZVpvbmUoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmVQYXJzZVBvc3RGb3JtYXQgKHN0cmluZykge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgIH1cblxuICAgIHZhciBwcm90byQxID0gTG9jYWxlLnByb3RvdHlwZTtcblxuICAgIHByb3RvJDEuY2FsZW5kYXIgICAgICAgID0gY2FsZW5kYXI7XG4gICAgcHJvdG8kMS5sb25nRGF0ZUZvcm1hdCAgPSBsb25nRGF0ZUZvcm1hdDtcbiAgICBwcm90byQxLmludmFsaWREYXRlICAgICA9IGludmFsaWREYXRlO1xuICAgIHByb3RvJDEub3JkaW5hbCAgICAgICAgID0gb3JkaW5hbDtcbiAgICBwcm90byQxLnByZXBhcnNlICAgICAgICA9IHByZVBhcnNlUG9zdEZvcm1hdDtcbiAgICBwcm90byQxLnBvc3Rmb3JtYXQgICAgICA9IHByZVBhcnNlUG9zdEZvcm1hdDtcbiAgICBwcm90byQxLnJlbGF0aXZlVGltZSAgICA9IHJlbGF0aXZlVGltZTtcbiAgICBwcm90byQxLnBhc3RGdXR1cmUgICAgICA9IHBhc3RGdXR1cmU7XG4gICAgcHJvdG8kMS5zZXQgICAgICAgICAgICAgPSBzZXQ7XG5cbiAgICBwcm90byQxLm1vbnRocyAgICAgICAgICAgID0gICAgICAgIGxvY2FsZU1vbnRocztcbiAgICBwcm90byQxLm1vbnRoc1Nob3J0ICAgICAgID0gICAgICAgIGxvY2FsZU1vbnRoc1Nob3J0O1xuICAgIHByb3RvJDEubW9udGhzUGFyc2UgICAgICAgPSAgICAgICAgbG9jYWxlTW9udGhzUGFyc2U7XG4gICAgcHJvdG8kMS5tb250aHNSZWdleCAgICAgICA9IG1vbnRoc1JlZ2V4O1xuICAgIHByb3RvJDEubW9udGhzU2hvcnRSZWdleCAgPSBtb250aHNTaG9ydFJlZ2V4O1xuICAgIHByb3RvJDEud2VlayA9IGxvY2FsZVdlZWs7XG4gICAgcHJvdG8kMS5maXJzdERheU9mWWVhciA9IGxvY2FsZUZpcnN0RGF5T2ZZZWFyO1xuICAgIHByb3RvJDEuZmlyc3REYXlPZldlZWsgPSBsb2NhbGVGaXJzdERheU9mV2VlaztcblxuICAgIHByb3RvJDEud2Vla2RheXMgICAgICAgPSAgICAgICAgbG9jYWxlV2Vla2RheXM7XG4gICAgcHJvdG8kMS53ZWVrZGF5c01pbiAgICA9ICAgICAgICBsb2NhbGVXZWVrZGF5c01pbjtcbiAgICBwcm90byQxLndlZWtkYXlzU2hvcnQgID0gICAgICAgIGxvY2FsZVdlZWtkYXlzU2hvcnQ7XG4gICAgcHJvdG8kMS53ZWVrZGF5c1BhcnNlICA9ICAgICAgICBsb2NhbGVXZWVrZGF5c1BhcnNlO1xuXG4gICAgcHJvdG8kMS53ZWVrZGF5c1JlZ2V4ICAgICAgID0gICAgICAgIHdlZWtkYXlzUmVnZXg7XG4gICAgcHJvdG8kMS53ZWVrZGF5c1Nob3J0UmVnZXggID0gICAgICAgIHdlZWtkYXlzU2hvcnRSZWdleDtcbiAgICBwcm90byQxLndlZWtkYXlzTWluUmVnZXggICAgPSAgICAgICAgd2Vla2RheXNNaW5SZWdleDtcblxuICAgIHByb3RvJDEuaXNQTSA9IGxvY2FsZUlzUE07XG4gICAgcHJvdG8kMS5tZXJpZGllbSA9IGxvY2FsZU1lcmlkaWVtO1xuXG4gICAgZnVuY3Rpb24gZ2V0JDEgKGZvcm1hdCwgaW5kZXgsIGZpZWxkLCBzZXR0ZXIpIHtcbiAgICAgICAgdmFyIGxvY2FsZSA9IGdldExvY2FsZSgpO1xuICAgICAgICB2YXIgdXRjID0gY3JlYXRlVVRDKCkuc2V0KHNldHRlciwgaW5kZXgpO1xuICAgICAgICByZXR1cm4gbG9jYWxlW2ZpZWxkXSh1dGMsIGZvcm1hdCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdE1vbnRoc0ltcGwgKGZvcm1hdCwgaW5kZXgsIGZpZWxkKSB7XG4gICAgICAgIGlmIChpc051bWJlcihmb3JtYXQpKSB7XG4gICAgICAgICAgICBpbmRleCA9IGZvcm1hdDtcbiAgICAgICAgICAgIGZvcm1hdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcm1hdCA9IGZvcm1hdCB8fCAnJztcblxuICAgICAgICBpZiAoaW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldCQxKGZvcm1hdCwgaW5kZXgsIGZpZWxkLCAnbW9udGgnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpO1xuICAgICAgICB2YXIgb3V0ID0gW107XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICBvdXRbaV0gPSBnZXQkMShmb3JtYXQsIGksIGZpZWxkLCAnbW9udGgnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIC8vICgpXG4gICAgLy8gKDUpXG4gICAgLy8gKGZtdCwgNSlcbiAgICAvLyAoZm10KVxuICAgIC8vICh0cnVlKVxuICAgIC8vICh0cnVlLCA1KVxuICAgIC8vICh0cnVlLCBmbXQsIDUpXG4gICAgLy8gKHRydWUsIGZtdClcbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXNJbXBsIChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsIGZpZWxkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbG9jYWxlU29ydGVkID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIGlmIChpc051bWJlcihmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBmb3JtYXQ7XG4gICAgICAgICAgICAgICAgZm9ybWF0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXQgfHwgJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3JtYXQgPSBsb2NhbGVTb3J0ZWQ7XG4gICAgICAgICAgICBpbmRleCA9IGZvcm1hdDtcbiAgICAgICAgICAgIGxvY2FsZVNvcnRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoaXNOdW1iZXIoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIGluZGV4ID0gZm9ybWF0O1xuICAgICAgICAgICAgICAgIGZvcm1hdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9ybWF0ID0gZm9ybWF0IHx8ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGxvY2FsZSA9IGdldExvY2FsZSgpLFxuICAgICAgICAgICAgc2hpZnQgPSBsb2NhbGVTb3J0ZWQgPyBsb2NhbGUuX3dlZWsuZG93IDogMDtcblxuICAgICAgICBpZiAoaW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldCQxKGZvcm1hdCwgKGluZGV4ICsgc2hpZnQpICUgNywgZmllbGQsICdkYXknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpO1xuICAgICAgICB2YXIgb3V0ID0gW107XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIG91dFtpXSA9IGdldCQxKGZvcm1hdCwgKGkgKyBzaGlmdCkgJSA3LCBmaWVsZCwgJ2RheScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdE1vbnRocyAoZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdE1vbnRoc0ltcGwoZm9ybWF0LCBpbmRleCwgJ21vbnRocycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RNb250aHNTaG9ydCAoZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdE1vbnRoc0ltcGwoZm9ybWF0LCBpbmRleCwgJ21vbnRoc1Nob3J0Jyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdFdlZWtkYXlzIChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RXZWVrZGF5c0ltcGwobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4LCAnd2Vla2RheXMnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXNTaG9ydCAobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBsaXN0V2Vla2RheXNJbXBsKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCwgJ3dlZWtkYXlzU2hvcnQnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXNNaW4gKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdFdlZWtkYXlzSW1wbChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsICd3ZWVrZGF5c01pbicpO1xuICAgIH1cblxuICAgIGdldFNldEdsb2JhbExvY2FsZSgnZW4nLCB7XG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSh0aHxzdHxuZHxyZCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAodG9JbnQobnVtYmVyICUgMTAwIC8gMTApID09PSAxKSA/ICd0aCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAxKSA/ICdzdCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAyKSA/ICduZCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAzKSA/ICdyZCcgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gU2lkZSBlZmZlY3QgaW1wb3J0c1xuXG4gICAgaG9va3MubGFuZyA9IGRlcHJlY2F0ZSgnbW9tZW50LmxhbmcgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGUgaW5zdGVhZC4nLCBnZXRTZXRHbG9iYWxMb2NhbGUpO1xuICAgIGhvb2tzLmxhbmdEYXRhID0gZGVwcmVjYXRlKCdtb21lbnQubGFuZ0RhdGEgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGVEYXRhIGluc3RlYWQuJywgZ2V0TG9jYWxlKTtcblxuICAgIHZhciBtYXRoQWJzID0gTWF0aC5hYnM7XG5cbiAgICBmdW5jdGlvbiBhYnMgKCkge1xuICAgICAgICB2YXIgZGF0YSAgICAgICAgICAgPSB0aGlzLl9kYXRhO1xuXG4gICAgICAgIHRoaXMuX21pbGxpc2Vjb25kcyA9IG1hdGhBYnModGhpcy5fbWlsbGlzZWNvbmRzKTtcbiAgICAgICAgdGhpcy5fZGF5cyAgICAgICAgID0gbWF0aEFicyh0aGlzLl9kYXlzKTtcbiAgICAgICAgdGhpcy5fbW9udGhzICAgICAgID0gbWF0aEFicyh0aGlzLl9tb250aHMpO1xuXG4gICAgICAgIGRhdGEubWlsbGlzZWNvbmRzICA9IG1hdGhBYnMoZGF0YS5taWxsaXNlY29uZHMpO1xuICAgICAgICBkYXRhLnNlY29uZHMgICAgICAgPSBtYXRoQWJzKGRhdGEuc2Vjb25kcyk7XG4gICAgICAgIGRhdGEubWludXRlcyAgICAgICA9IG1hdGhBYnMoZGF0YS5taW51dGVzKTtcbiAgICAgICAgZGF0YS5ob3VycyAgICAgICAgID0gbWF0aEFicyhkYXRhLmhvdXJzKTtcbiAgICAgICAgZGF0YS5tb250aHMgICAgICAgID0gbWF0aEFicyhkYXRhLm1vbnRocyk7XG4gICAgICAgIGRhdGEueWVhcnMgICAgICAgICA9IG1hdGhBYnMoZGF0YS55ZWFycyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkU3VidHJhY3QkMSAoZHVyYXRpb24sIGlucHV0LCB2YWx1ZSwgZGlyZWN0aW9uKSB7XG4gICAgICAgIHZhciBvdGhlciA9IGNyZWF0ZUR1cmF0aW9uKGlucHV0LCB2YWx1ZSk7XG5cbiAgICAgICAgZHVyYXRpb24uX21pbGxpc2Vjb25kcyArPSBkaXJlY3Rpb24gKiBvdGhlci5fbWlsbGlzZWNvbmRzO1xuICAgICAgICBkdXJhdGlvbi5fZGF5cyAgICAgICAgICs9IGRpcmVjdGlvbiAqIG90aGVyLl9kYXlzO1xuICAgICAgICBkdXJhdGlvbi5fbW9udGhzICAgICAgICs9IGRpcmVjdGlvbiAqIG90aGVyLl9tb250aHM7XG5cbiAgICAgICAgcmV0dXJuIGR1cmF0aW9uLl9idWJibGUoKTtcbiAgICB9XG5cbiAgICAvLyBzdXBwb3J0cyBvbmx5IDIuMC1zdHlsZSBhZGQoMSwgJ3MnKSBvciBhZGQoZHVyYXRpb24pXG4gICAgZnVuY3Rpb24gYWRkJDEgKGlucHV0LCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gYWRkU3VidHJhY3QkMSh0aGlzLCBpbnB1dCwgdmFsdWUsIDEpO1xuICAgIH1cblxuICAgIC8vIHN1cHBvcnRzIG9ubHkgMi4wLXN0eWxlIHN1YnRyYWN0KDEsICdzJykgb3Igc3VidHJhY3QoZHVyYXRpb24pXG4gICAgZnVuY3Rpb24gc3VidHJhY3QkMSAoaW5wdXQsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBhZGRTdWJ0cmFjdCQxKHRoaXMsIGlucHV0LCB2YWx1ZSwgLTEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFic0NlaWwgKG51bWJlcikge1xuICAgICAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobnVtYmVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwobnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1YmJsZSAoKSB7XG4gICAgICAgIHZhciBtaWxsaXNlY29uZHMgPSB0aGlzLl9taWxsaXNlY29uZHM7XG4gICAgICAgIHZhciBkYXlzICAgICAgICAgPSB0aGlzLl9kYXlzO1xuICAgICAgICB2YXIgbW9udGhzICAgICAgID0gdGhpcy5fbW9udGhzO1xuICAgICAgICB2YXIgZGF0YSAgICAgICAgID0gdGhpcy5fZGF0YTtcbiAgICAgICAgdmFyIHNlY29uZHMsIG1pbnV0ZXMsIGhvdXJzLCB5ZWFycywgbW9udGhzRnJvbURheXM7XG5cbiAgICAgICAgLy8gaWYgd2UgaGF2ZSBhIG1peCBvZiBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgdmFsdWVzLCBidWJibGUgZG93biBmaXJzdFxuICAgICAgICAvLyBjaGVjazogaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzIxNjZcbiAgICAgICAgaWYgKCEoKG1pbGxpc2Vjb25kcyA+PSAwICYmIGRheXMgPj0gMCAmJiBtb250aHMgPj0gMCkgfHxcbiAgICAgICAgICAgICAgICAobWlsbGlzZWNvbmRzIDw9IDAgJiYgZGF5cyA8PSAwICYmIG1vbnRocyA8PSAwKSkpIHtcbiAgICAgICAgICAgIG1pbGxpc2Vjb25kcyArPSBhYnNDZWlsKG1vbnRoc1RvRGF5cyhtb250aHMpICsgZGF5cykgKiA4NjRlNTtcbiAgICAgICAgICAgIGRheXMgPSAwO1xuICAgICAgICAgICAgbW9udGhzID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgY29kZSBidWJibGVzIHVwIHZhbHVlcywgc2VlIHRoZSB0ZXN0cyBmb3JcbiAgICAgICAgLy8gZXhhbXBsZXMgb2Ygd2hhdCB0aGF0IG1lYW5zLlxuICAgICAgICBkYXRhLm1pbGxpc2Vjb25kcyA9IG1pbGxpc2Vjb25kcyAlIDEwMDA7XG5cbiAgICAgICAgc2Vjb25kcyAgICAgICAgICAgPSBhYnNGbG9vcihtaWxsaXNlY29uZHMgLyAxMDAwKTtcbiAgICAgICAgZGF0YS5zZWNvbmRzICAgICAgPSBzZWNvbmRzICUgNjA7XG5cbiAgICAgICAgbWludXRlcyAgICAgICAgICAgPSBhYnNGbG9vcihzZWNvbmRzIC8gNjApO1xuICAgICAgICBkYXRhLm1pbnV0ZXMgICAgICA9IG1pbnV0ZXMgJSA2MDtcblxuICAgICAgICBob3VycyAgICAgICAgICAgICA9IGFic0Zsb29yKG1pbnV0ZXMgLyA2MCk7XG4gICAgICAgIGRhdGEuaG91cnMgICAgICAgID0gaG91cnMgJSAyNDtcblxuICAgICAgICBkYXlzICs9IGFic0Zsb29yKGhvdXJzIC8gMjQpO1xuXG4gICAgICAgIC8vIGNvbnZlcnQgZGF5cyB0byBtb250aHNcbiAgICAgICAgbW9udGhzRnJvbURheXMgPSBhYnNGbG9vcihkYXlzVG9Nb250aHMoZGF5cykpO1xuICAgICAgICBtb250aHMgKz0gbW9udGhzRnJvbURheXM7XG4gICAgICAgIGRheXMgLT0gYWJzQ2VpbChtb250aHNUb0RheXMobW9udGhzRnJvbURheXMpKTtcblxuICAgICAgICAvLyAxMiBtb250aHMgLT4gMSB5ZWFyXG4gICAgICAgIHllYXJzID0gYWJzRmxvb3IobW9udGhzIC8gMTIpO1xuICAgICAgICBtb250aHMgJT0gMTI7XG5cbiAgICAgICAgZGF0YS5kYXlzICAgPSBkYXlzO1xuICAgICAgICBkYXRhLm1vbnRocyA9IG1vbnRocztcbiAgICAgICAgZGF0YS55ZWFycyAgPSB5ZWFycztcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkYXlzVG9Nb250aHMgKGRheXMpIHtcbiAgICAgICAgLy8gNDAwIHllYXJzIGhhdmUgMTQ2MDk3IGRheXMgKHRha2luZyBpbnRvIGFjY291bnQgbGVhcCB5ZWFyIHJ1bGVzKVxuICAgICAgICAvLyA0MDAgeWVhcnMgaGF2ZSAxMiBtb250aHMgPT09IDQ4MDBcbiAgICAgICAgcmV0dXJuIGRheXMgKiA0ODAwIC8gMTQ2MDk3O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vbnRoc1RvRGF5cyAobW9udGhzKSB7XG4gICAgICAgIC8vIHRoZSByZXZlcnNlIG9mIGRheXNUb01vbnRoc1xuICAgICAgICByZXR1cm4gbW9udGhzICogMTQ2MDk3IC8gNDgwMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcyAodW5pdHMpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGF5cztcbiAgICAgICAgdmFyIG1vbnRocztcbiAgICAgICAgdmFyIG1pbGxpc2Vjb25kcyA9IHRoaXMuX21pbGxpc2Vjb25kcztcblxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcblxuICAgICAgICBpZiAodW5pdHMgPT09ICdtb250aCcgfHwgdW5pdHMgPT09ICd5ZWFyJykge1xuICAgICAgICAgICAgZGF5cyAgID0gdGhpcy5fZGF5cyAgICsgbWlsbGlzZWNvbmRzIC8gODY0ZTU7XG4gICAgICAgICAgICBtb250aHMgPSB0aGlzLl9tb250aHMgKyBkYXlzVG9Nb250aHMoZGF5cyk7XG4gICAgICAgICAgICByZXR1cm4gdW5pdHMgPT09ICdtb250aCcgPyBtb250aHMgOiBtb250aHMgLyAxMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGhhbmRsZSBtaWxsaXNlY29uZHMgc2VwYXJhdGVseSBiZWNhdXNlIG9mIGZsb2F0aW5nIHBvaW50IG1hdGggZXJyb3JzIChpc3N1ZSAjMTg2NylcbiAgICAgICAgICAgIGRheXMgPSB0aGlzLl9kYXlzICsgTWF0aC5yb3VuZChtb250aHNUb0RheXModGhpcy5fbW9udGhzKSk7XG4gICAgICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnd2VlaycgICA6IHJldHVybiBkYXlzIC8gNyAgICAgKyBtaWxsaXNlY29uZHMgLyA2MDQ4ZTU7XG4gICAgICAgICAgICAgICAgY2FzZSAnZGF5JyAgICA6IHJldHVybiBkYXlzICAgICAgICAgKyBtaWxsaXNlY29uZHMgLyA4NjRlNTtcbiAgICAgICAgICAgICAgICBjYXNlICdob3VyJyAgIDogcmV0dXJuIGRheXMgKiAyNCAgICArIG1pbGxpc2Vjb25kcyAvIDM2ZTU7XG4gICAgICAgICAgICAgICAgY2FzZSAnbWludXRlJyA6IHJldHVybiBkYXlzICogMTQ0MCAgKyBtaWxsaXNlY29uZHMgLyA2ZTQ7XG4gICAgICAgICAgICAgICAgY2FzZSAnc2Vjb25kJyA6IHJldHVybiBkYXlzICogODY0MDAgKyBtaWxsaXNlY29uZHMgLyAxMDAwO1xuICAgICAgICAgICAgICAgIC8vIE1hdGguZmxvb3IgcHJldmVudHMgZmxvYXRpbmcgcG9pbnQgbWF0aCBlcnJvcnMgaGVyZVxuICAgICAgICAgICAgICAgIGNhc2UgJ21pbGxpc2Vjb25kJzogcmV0dXJuIE1hdGguZmxvb3IoZGF5cyAqIDg2NGU1KSArIG1pbGxpc2Vjb25kcztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gdW5pdCAnICsgdW5pdHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ETzogVXNlIHRoaXMuYXMoJ21zJyk/XG4gICAgZnVuY3Rpb24gdmFsdWVPZiQxICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5fbWlsbGlzZWNvbmRzICtcbiAgICAgICAgICAgIHRoaXMuX2RheXMgKiA4NjRlNSArXG4gICAgICAgICAgICAodGhpcy5fbW9udGhzICUgMTIpICogMjU5MmU2ICtcbiAgICAgICAgICAgIHRvSW50KHRoaXMuX21vbnRocyAvIDEyKSAqIDMxNTM2ZTZcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWtlQXMgKGFsaWFzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hcyhhbGlhcyk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGFzTWlsbGlzZWNvbmRzID0gbWFrZUFzKCdtcycpO1xuICAgIHZhciBhc1NlY29uZHMgICAgICA9IG1ha2VBcygncycpO1xuICAgIHZhciBhc01pbnV0ZXMgICAgICA9IG1ha2VBcygnbScpO1xuICAgIHZhciBhc0hvdXJzICAgICAgICA9IG1ha2VBcygnaCcpO1xuICAgIHZhciBhc0RheXMgICAgICAgICA9IG1ha2VBcygnZCcpO1xuICAgIHZhciBhc1dlZWtzICAgICAgICA9IG1ha2VBcygndycpO1xuICAgIHZhciBhc01vbnRocyAgICAgICA9IG1ha2VBcygnTScpO1xuICAgIHZhciBhc1llYXJzICAgICAgICA9IG1ha2VBcygneScpO1xuXG4gICAgZnVuY3Rpb24gY2xvbmUkMSAoKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVEdXJhdGlvbih0aGlzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXQkMiAodW5pdHMpIHtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXNbdW5pdHMgKyAncyddKCkgOiBOYU47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUdldHRlcihuYW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLl9kYXRhW25hbWVdIDogTmFOO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciBtaWxsaXNlY29uZHMgPSBtYWtlR2V0dGVyKCdtaWxsaXNlY29uZHMnKTtcbiAgICB2YXIgc2Vjb25kcyAgICAgID0gbWFrZUdldHRlcignc2Vjb25kcycpO1xuICAgIHZhciBtaW51dGVzICAgICAgPSBtYWtlR2V0dGVyKCdtaW51dGVzJyk7XG4gICAgdmFyIGhvdXJzICAgICAgICA9IG1ha2VHZXR0ZXIoJ2hvdXJzJyk7XG4gICAgdmFyIGRheXMgICAgICAgICA9IG1ha2VHZXR0ZXIoJ2RheXMnKTtcbiAgICB2YXIgbW9udGhzICAgICAgID0gbWFrZUdldHRlcignbW9udGhzJyk7XG4gICAgdmFyIHllYXJzICAgICAgICA9IG1ha2VHZXR0ZXIoJ3llYXJzJyk7XG5cbiAgICBmdW5jdGlvbiB3ZWVrcyAoKSB7XG4gICAgICAgIHJldHVybiBhYnNGbG9vcih0aGlzLmRheXMoKSAvIDcpO1xuICAgIH1cblxuICAgIHZhciByb3VuZCA9IE1hdGgucm91bmQ7XG4gICAgdmFyIHRocmVzaG9sZHMgPSB7XG4gICAgICAgIHNzOiA0NCwgICAgICAgICAvLyBhIGZldyBzZWNvbmRzIHRvIHNlY29uZHNcbiAgICAgICAgcyA6IDQ1LCAgICAgICAgIC8vIHNlY29uZHMgdG8gbWludXRlXG4gICAgICAgIG0gOiA0NSwgICAgICAgICAvLyBtaW51dGVzIHRvIGhvdXJcbiAgICAgICAgaCA6IDIyLCAgICAgICAgIC8vIGhvdXJzIHRvIGRheVxuICAgICAgICBkIDogMjYsICAgICAgICAgLy8gZGF5cyB0byBtb250aFxuICAgICAgICBNIDogMTEgICAgICAgICAgLy8gbW9udGhzIHRvIHllYXJcbiAgICB9O1xuXG4gICAgLy8gaGVscGVyIGZ1bmN0aW9uIGZvciBtb21lbnQuZm4uZnJvbSwgbW9tZW50LmZuLmZyb21Ob3csIGFuZCBtb21lbnQuZHVyYXRpb24uZm4uaHVtYW5pemVcbiAgICBmdW5jdGlvbiBzdWJzdGl0dXRlVGltZUFnbyhzdHJpbmcsIG51bWJlciwgd2l0aG91dFN1ZmZpeCwgaXNGdXR1cmUsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLnJlbGF0aXZlVGltZShudW1iZXIgfHwgMSwgISF3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWUkMSAocG9zTmVnRHVyYXRpb24sIHdpdGhvdXRTdWZmaXgsIGxvY2FsZSkge1xuICAgICAgICB2YXIgZHVyYXRpb24gPSBjcmVhdGVEdXJhdGlvbihwb3NOZWdEdXJhdGlvbikuYWJzKCk7XG4gICAgICAgIHZhciBzZWNvbmRzICA9IHJvdW5kKGR1cmF0aW9uLmFzKCdzJykpO1xuICAgICAgICB2YXIgbWludXRlcyAgPSByb3VuZChkdXJhdGlvbi5hcygnbScpKTtcbiAgICAgICAgdmFyIGhvdXJzICAgID0gcm91bmQoZHVyYXRpb24uYXMoJ2gnKSk7XG4gICAgICAgIHZhciBkYXlzICAgICA9IHJvdW5kKGR1cmF0aW9uLmFzKCdkJykpO1xuICAgICAgICB2YXIgbW9udGhzICAgPSByb3VuZChkdXJhdGlvbi5hcygnTScpKTtcbiAgICAgICAgdmFyIHllYXJzICAgID0gcm91bmQoZHVyYXRpb24uYXMoJ3knKSk7XG5cbiAgICAgICAgdmFyIGEgPSBzZWNvbmRzIDw9IHRocmVzaG9sZHMuc3MgJiYgWydzJywgc2Vjb25kc10gIHx8XG4gICAgICAgICAgICAgICAgc2Vjb25kcyA8IHRocmVzaG9sZHMucyAgICYmIFsnc3MnLCBzZWNvbmRzXSB8fFxuICAgICAgICAgICAgICAgIG1pbnV0ZXMgPD0gMSAgICAgICAgICAgICAmJiBbJ20nXSAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICBtaW51dGVzIDwgdGhyZXNob2xkcy5tICAgJiYgWydtbScsIG1pbnV0ZXNdIHx8XG4gICAgICAgICAgICAgICAgaG91cnMgICA8PSAxICAgICAgICAgICAgICYmIFsnaCddICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgIGhvdXJzICAgPCB0aHJlc2hvbGRzLmggICAmJiBbJ2hoJywgaG91cnNdICAgfHxcbiAgICAgICAgICAgICAgICBkYXlzICAgIDw9IDEgICAgICAgICAgICAgJiYgWydkJ10gICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgZGF5cyAgICA8IHRocmVzaG9sZHMuZCAgICYmIFsnZGQnLCBkYXlzXSAgICB8fFxuICAgICAgICAgICAgICAgIG1vbnRocyAgPD0gMSAgICAgICAgICAgICAmJiBbJ00nXSAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICBtb250aHMgIDwgdGhyZXNob2xkcy5NICAgJiYgWydNTScsIG1vbnRoc10gIHx8XG4gICAgICAgICAgICAgICAgeWVhcnMgICA8PSAxICAgICAgICAgICAgICYmIFsneSddICAgICAgICAgICB8fCBbJ3l5JywgeWVhcnNdO1xuXG4gICAgICAgIGFbMl0gPSB3aXRob3V0U3VmZml4O1xuICAgICAgICBhWzNdID0gK3Bvc05lZ0R1cmF0aW9uID4gMDtcbiAgICAgICAgYVs0XSA9IGxvY2FsZTtcbiAgICAgICAgcmV0dXJuIHN1YnN0aXR1dGVUaW1lQWdvLmFwcGx5KG51bGwsIGEpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byBzZXQgdGhlIHJvdW5kaW5nIGZ1bmN0aW9uIGZvciByZWxhdGl2ZSB0aW1lIHN0cmluZ3NcbiAgICBmdW5jdGlvbiBnZXRTZXRSZWxhdGl2ZVRpbWVSb3VuZGluZyAocm91bmRpbmdGdW5jdGlvbikge1xuICAgICAgICBpZiAocm91bmRpbmdGdW5jdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gcm91bmQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZihyb3VuZGluZ0Z1bmN0aW9uKSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcm91bmQgPSByb3VuZGluZ0Z1bmN0aW9uO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byBzZXQgYSB0aHJlc2hvbGQgZm9yIHJlbGF0aXZlIHRpbWUgc3RyaW5nc1xuICAgIGZ1bmN0aW9uIGdldFNldFJlbGF0aXZlVGltZVRocmVzaG9sZCAodGhyZXNob2xkLCBsaW1pdCkge1xuICAgICAgICBpZiAodGhyZXNob2xkc1t0aHJlc2hvbGRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGltaXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRocmVzaG9sZHNbdGhyZXNob2xkXTtcbiAgICAgICAgfVxuICAgICAgICB0aHJlc2hvbGRzW3RocmVzaG9sZF0gPSBsaW1pdDtcbiAgICAgICAgaWYgKHRocmVzaG9sZCA9PT0gJ3MnKSB7XG4gICAgICAgICAgICB0aHJlc2hvbGRzLnNzID0gbGltaXQgLSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGh1bWFuaXplICh3aXRoU3VmZml4KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGxvY2FsZSA9IHRoaXMubG9jYWxlRGF0YSgpO1xuICAgICAgICB2YXIgb3V0cHV0ID0gcmVsYXRpdmVUaW1lJDEodGhpcywgIXdpdGhTdWZmaXgsIGxvY2FsZSk7XG5cbiAgICAgICAgaWYgKHdpdGhTdWZmaXgpIHtcbiAgICAgICAgICAgIG91dHB1dCA9IGxvY2FsZS5wYXN0RnV0dXJlKCt0aGlzLCBvdXRwdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxvY2FsZS5wb3N0Zm9ybWF0KG91dHB1dCk7XG4gICAgfVxuXG4gICAgdmFyIGFicyQxID0gTWF0aC5hYnM7XG5cbiAgICBmdW5jdGlvbiBzaWduKHgpIHtcbiAgICAgICAgcmV0dXJuICgoeCA+IDApIC0gKHggPCAwKSkgfHwgK3g7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9JU09TdHJpbmckMSgpIHtcbiAgICAgICAgLy8gZm9yIElTTyBzdHJpbmdzIHdlIGRvIG5vdCB1c2UgdGhlIG5vcm1hbCBidWJibGluZyBydWxlczpcbiAgICAgICAgLy8gICogbWlsbGlzZWNvbmRzIGJ1YmJsZSB1cCB1bnRpbCB0aGV5IGJlY29tZSBob3Vyc1xuICAgICAgICAvLyAgKiBkYXlzIGRvIG5vdCBidWJibGUgYXQgYWxsXG4gICAgICAgIC8vICAqIG1vbnRocyBidWJibGUgdXAgdW50aWwgdGhleSBiZWNvbWUgeWVhcnNcbiAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIHRoZXJlIGlzIG5vIGNvbnRleHQtZnJlZSBjb252ZXJzaW9uIGJldHdlZW4gaG91cnMgYW5kIGRheXNcbiAgICAgICAgLy8gKHRoaW5rIG9mIGNsb2NrIGNoYW5nZXMpXG4gICAgICAgIC8vIGFuZCBhbHNvIG5vdCBiZXR3ZWVuIGRheXMgYW5kIG1vbnRocyAoMjgtMzEgZGF5cyBwZXIgbW9udGgpXG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNlY29uZHMgPSBhYnMkMSh0aGlzLl9taWxsaXNlY29uZHMpIC8gMTAwMDtcbiAgICAgICAgdmFyIGRheXMgICAgICAgICA9IGFicyQxKHRoaXMuX2RheXMpO1xuICAgICAgICB2YXIgbW9udGhzICAgICAgID0gYWJzJDEodGhpcy5fbW9udGhzKTtcbiAgICAgICAgdmFyIG1pbnV0ZXMsIGhvdXJzLCB5ZWFycztcblxuICAgICAgICAvLyAzNjAwIHNlY29uZHMgLT4gNjAgbWludXRlcyAtPiAxIGhvdXJcbiAgICAgICAgbWludXRlcyAgICAgICAgICAgPSBhYnNGbG9vcihzZWNvbmRzIC8gNjApO1xuICAgICAgICBob3VycyAgICAgICAgICAgICA9IGFic0Zsb29yKG1pbnV0ZXMgLyA2MCk7XG4gICAgICAgIHNlY29uZHMgJT0gNjA7XG4gICAgICAgIG1pbnV0ZXMgJT0gNjA7XG5cbiAgICAgICAgLy8gMTIgbW9udGhzIC0+IDEgeWVhclxuICAgICAgICB5ZWFycyAgPSBhYnNGbG9vcihtb250aHMgLyAxMik7XG4gICAgICAgIG1vbnRocyAlPSAxMjtcblxuXG4gICAgICAgIC8vIGluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9kb3JkaWxsZS9tb21lbnQtaXNvZHVyYXRpb24vYmxvYi9tYXN0ZXIvbW9tZW50Lmlzb2R1cmF0aW9uLmpzXG4gICAgICAgIHZhciBZID0geWVhcnM7XG4gICAgICAgIHZhciBNID0gbW9udGhzO1xuICAgICAgICB2YXIgRCA9IGRheXM7XG4gICAgICAgIHZhciBoID0gaG91cnM7XG4gICAgICAgIHZhciBtID0gbWludXRlcztcbiAgICAgICAgdmFyIHMgPSBzZWNvbmRzID8gc2Vjb25kcy50b0ZpeGVkKDMpLnJlcGxhY2UoL1xcLj8wKyQvLCAnJykgOiAnJztcbiAgICAgICAgdmFyIHRvdGFsID0gdGhpcy5hc1NlY29uZHMoKTtcblxuICAgICAgICBpZiAoIXRvdGFsKSB7XG4gICAgICAgICAgICAvLyB0aGlzIGlzIHRoZSBzYW1lIGFzIEMjJ3MgKE5vZGEpIGFuZCBweXRob24gKGlzb2RhdGUpLi4uXG4gICAgICAgICAgICAvLyBidXQgbm90IG90aGVyIEpTIChnb29nLmRhdGUpXG4gICAgICAgICAgICByZXR1cm4gJ1AwRCc7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdG90YWxTaWduID0gdG90YWwgPCAwID8gJy0nIDogJyc7XG4gICAgICAgIHZhciB5bVNpZ24gPSBzaWduKHRoaXMuX21vbnRocykgIT09IHNpZ24odG90YWwpID8gJy0nIDogJyc7XG4gICAgICAgIHZhciBkYXlzU2lnbiA9IHNpZ24odGhpcy5fZGF5cykgIT09IHNpZ24odG90YWwpID8gJy0nIDogJyc7XG4gICAgICAgIHZhciBobXNTaWduID0gc2lnbih0aGlzLl9taWxsaXNlY29uZHMpICE9PSBzaWduKHRvdGFsKSA/ICctJyA6ICcnO1xuXG4gICAgICAgIHJldHVybiB0b3RhbFNpZ24gKyAnUCcgK1xuICAgICAgICAgICAgKFkgPyB5bVNpZ24gKyBZICsgJ1knIDogJycpICtcbiAgICAgICAgICAgIChNID8geW1TaWduICsgTSArICdNJyA6ICcnKSArXG4gICAgICAgICAgICAoRCA/IGRheXNTaWduICsgRCArICdEJyA6ICcnKSArXG4gICAgICAgICAgICAoKGggfHwgbSB8fCBzKSA/ICdUJyA6ICcnKSArXG4gICAgICAgICAgICAoaCA/IGhtc1NpZ24gKyBoICsgJ0gnIDogJycpICtcbiAgICAgICAgICAgIChtID8gaG1zU2lnbiArIG0gKyAnTScgOiAnJykgK1xuICAgICAgICAgICAgKHMgPyBobXNTaWduICsgcyArICdTJyA6ICcnKTtcbiAgICB9XG5cbiAgICB2YXIgcHJvdG8kMiA9IER1cmF0aW9uLnByb3RvdHlwZTtcblxuICAgIHByb3RvJDIuaXNWYWxpZCAgICAgICAgPSBpc1ZhbGlkJDE7XG4gICAgcHJvdG8kMi5hYnMgICAgICAgICAgICA9IGFicztcbiAgICBwcm90byQyLmFkZCAgICAgICAgICAgID0gYWRkJDE7XG4gICAgcHJvdG8kMi5zdWJ0cmFjdCAgICAgICA9IHN1YnRyYWN0JDE7XG4gICAgcHJvdG8kMi5hcyAgICAgICAgICAgICA9IGFzO1xuICAgIHByb3RvJDIuYXNNaWxsaXNlY29uZHMgPSBhc01pbGxpc2Vjb25kcztcbiAgICBwcm90byQyLmFzU2Vjb25kcyAgICAgID0gYXNTZWNvbmRzO1xuICAgIHByb3RvJDIuYXNNaW51dGVzICAgICAgPSBhc01pbnV0ZXM7XG4gICAgcHJvdG8kMi5hc0hvdXJzICAgICAgICA9IGFzSG91cnM7XG4gICAgcHJvdG8kMi5hc0RheXMgICAgICAgICA9IGFzRGF5cztcbiAgICBwcm90byQyLmFzV2Vla3MgICAgICAgID0gYXNXZWVrcztcbiAgICBwcm90byQyLmFzTW9udGhzICAgICAgID0gYXNNb250aHM7XG4gICAgcHJvdG8kMi5hc1llYXJzICAgICAgICA9IGFzWWVhcnM7XG4gICAgcHJvdG8kMi52YWx1ZU9mICAgICAgICA9IHZhbHVlT2YkMTtcbiAgICBwcm90byQyLl9idWJibGUgICAgICAgID0gYnViYmxlO1xuICAgIHByb3RvJDIuY2xvbmUgICAgICAgICAgPSBjbG9uZSQxO1xuICAgIHByb3RvJDIuZ2V0ICAgICAgICAgICAgPSBnZXQkMjtcbiAgICBwcm90byQyLm1pbGxpc2Vjb25kcyAgID0gbWlsbGlzZWNvbmRzO1xuICAgIHByb3RvJDIuc2Vjb25kcyAgICAgICAgPSBzZWNvbmRzO1xuICAgIHByb3RvJDIubWludXRlcyAgICAgICAgPSBtaW51dGVzO1xuICAgIHByb3RvJDIuaG91cnMgICAgICAgICAgPSBob3VycztcbiAgICBwcm90byQyLmRheXMgICAgICAgICAgID0gZGF5cztcbiAgICBwcm90byQyLndlZWtzICAgICAgICAgID0gd2Vla3M7XG4gICAgcHJvdG8kMi5tb250aHMgICAgICAgICA9IG1vbnRocztcbiAgICBwcm90byQyLnllYXJzICAgICAgICAgID0geWVhcnM7XG4gICAgcHJvdG8kMi5odW1hbml6ZSAgICAgICA9IGh1bWFuaXplO1xuICAgIHByb3RvJDIudG9JU09TdHJpbmcgICAgPSB0b0lTT1N0cmluZyQxO1xuICAgIHByb3RvJDIudG9TdHJpbmcgICAgICAgPSB0b0lTT1N0cmluZyQxO1xuICAgIHByb3RvJDIudG9KU09OICAgICAgICAgPSB0b0lTT1N0cmluZyQxO1xuICAgIHByb3RvJDIubG9jYWxlICAgICAgICAgPSBsb2NhbGU7XG4gICAgcHJvdG8kMi5sb2NhbGVEYXRhICAgICA9IGxvY2FsZURhdGE7XG5cbiAgICBwcm90byQyLnRvSXNvU3RyaW5nID0gZGVwcmVjYXRlKCd0b0lzb1N0cmluZygpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgdG9JU09TdHJpbmcoKSBpbnN0ZWFkIChub3RpY2UgdGhlIGNhcGl0YWxzKScsIHRvSVNPU3RyaW5nJDEpO1xuICAgIHByb3RvJDIubGFuZyA9IGxhbmc7XG5cbiAgICAvLyBTaWRlIGVmZmVjdCBpbXBvcnRzXG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignWCcsIDAsIDAsICd1bml4Jyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ3gnLCAwLCAwLCAndmFsdWVPZicpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbigneCcsIG1hdGNoU2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCdYJywgbWF0Y2hUaW1lc3RhbXApO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1gnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUocGFyc2VGbG9hdChpbnB1dCwgMTApICogMTAwMCk7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbigneCcsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZSh0b0ludChpbnB1dCkpO1xuICAgIH0pO1xuXG4gICAgLy8gU2lkZSBlZmZlY3QgaW1wb3J0c1xuXG5cbiAgICBob29rcy52ZXJzaW9uID0gJzIuMjIuMic7XG5cbiAgICBzZXRIb29rQ2FsbGJhY2soY3JlYXRlTG9jYWwpO1xuXG4gICAgaG9va3MuZm4gICAgICAgICAgICAgICAgICAgID0gcHJvdG87XG4gICAgaG9va3MubWluICAgICAgICAgICAgICAgICAgID0gbWluO1xuICAgIGhvb2tzLm1heCAgICAgICAgICAgICAgICAgICA9IG1heDtcbiAgICBob29rcy5ub3cgICAgICAgICAgICAgICAgICAgPSBub3c7XG4gICAgaG9va3MudXRjICAgICAgICAgICAgICAgICAgID0gY3JlYXRlVVRDO1xuICAgIGhvb2tzLnVuaXggICAgICAgICAgICAgICAgICA9IGNyZWF0ZVVuaXg7XG4gICAgaG9va3MubW9udGhzICAgICAgICAgICAgICAgID0gbGlzdE1vbnRocztcbiAgICBob29rcy5pc0RhdGUgICAgICAgICAgICAgICAgPSBpc0RhdGU7XG4gICAgaG9va3MubG9jYWxlICAgICAgICAgICAgICAgID0gZ2V0U2V0R2xvYmFsTG9jYWxlO1xuICAgIGhvb2tzLmludmFsaWQgICAgICAgICAgICAgICA9IGNyZWF0ZUludmFsaWQ7XG4gICAgaG9va3MuZHVyYXRpb24gICAgICAgICAgICAgID0gY3JlYXRlRHVyYXRpb247XG4gICAgaG9va3MuaXNNb21lbnQgICAgICAgICAgICAgID0gaXNNb21lbnQ7XG4gICAgaG9va3Mud2Vla2RheXMgICAgICAgICAgICAgID0gbGlzdFdlZWtkYXlzO1xuICAgIGhvb2tzLnBhcnNlWm9uZSAgICAgICAgICAgICA9IGNyZWF0ZUluWm9uZTtcbiAgICBob29rcy5sb2NhbGVEYXRhICAgICAgICAgICAgPSBnZXRMb2NhbGU7XG4gICAgaG9va3MuaXNEdXJhdGlvbiAgICAgICAgICAgID0gaXNEdXJhdGlvbjtcbiAgICBob29rcy5tb250aHNTaG9ydCAgICAgICAgICAgPSBsaXN0TW9udGhzU2hvcnQ7XG4gICAgaG9va3Mud2Vla2RheXNNaW4gICAgICAgICAgID0gbGlzdFdlZWtkYXlzTWluO1xuICAgIGhvb2tzLmRlZmluZUxvY2FsZSAgICAgICAgICA9IGRlZmluZUxvY2FsZTtcbiAgICBob29rcy51cGRhdGVMb2NhbGUgICAgICAgICAgPSB1cGRhdGVMb2NhbGU7XG4gICAgaG9va3MubG9jYWxlcyAgICAgICAgICAgICAgID0gbGlzdExvY2FsZXM7XG4gICAgaG9va3Mud2Vla2RheXNTaG9ydCAgICAgICAgID0gbGlzdFdlZWtkYXlzU2hvcnQ7XG4gICAgaG9va3Mubm9ybWFsaXplVW5pdHMgICAgICAgID0gbm9ybWFsaXplVW5pdHM7XG4gICAgaG9va3MucmVsYXRpdmVUaW1lUm91bmRpbmcgID0gZ2V0U2V0UmVsYXRpdmVUaW1lUm91bmRpbmc7XG4gICAgaG9va3MucmVsYXRpdmVUaW1lVGhyZXNob2xkID0gZ2V0U2V0UmVsYXRpdmVUaW1lVGhyZXNob2xkO1xuICAgIGhvb2tzLmNhbGVuZGFyRm9ybWF0ICAgICAgICA9IGdldENhbGVuZGFyRm9ybWF0O1xuICAgIGhvb2tzLnByb3RvdHlwZSAgICAgICAgICAgICA9IHByb3RvO1xuXG4gICAgLy8gY3VycmVudGx5IEhUTUw1IGlucHV0IHR5cGUgb25seSBzdXBwb3J0cyAyNC1ob3VyIGZvcm1hdHNcbiAgICBob29rcy5IVE1MNV9GTVQgPSB7XG4gICAgICAgIERBVEVUSU1FX0xPQ0FMOiAnWVlZWS1NTS1ERFRISDptbScsICAgICAgICAgICAgIC8vIDxpbnB1dCB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIiAvPlxuICAgICAgICBEQVRFVElNRV9MT0NBTF9TRUNPTkRTOiAnWVlZWS1NTS1ERFRISDptbTpzcycsICAvLyA8aW5wdXQgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgc3RlcD1cIjFcIiAvPlxuICAgICAgICBEQVRFVElNRV9MT0NBTF9NUzogJ1lZWVktTU0tRERUSEg6bW06c3MuU1NTJywgICAvLyA8aW5wdXQgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgc3RlcD1cIjAuMDAxXCIgLz5cbiAgICAgICAgREFURTogJ1lZWVktTU0tREQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPGlucHV0IHR5cGU9XCJkYXRlXCIgLz5cbiAgICAgICAgVElNRTogJ0hIOm1tJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPGlucHV0IHR5cGU9XCJ0aW1lXCIgLz5cbiAgICAgICAgVElNRV9TRUNPTkRTOiAnSEg6bW06c3MnLCAgICAgICAgICAgICAgICAgICAgICAgLy8gPGlucHV0IHR5cGU9XCJ0aW1lXCIgc3RlcD1cIjFcIiAvPlxuICAgICAgICBUSU1FX01TOiAnSEg6bW06c3MuU1NTJywgICAgICAgICAgICAgICAgICAgICAgICAvLyA8aW5wdXQgdHlwZT1cInRpbWVcIiBzdGVwPVwiMC4wMDFcIiAvPlxuICAgICAgICBXRUVLOiAnWVlZWS1bV11XVycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8aW5wdXQgdHlwZT1cIndlZWtcIiAvPlxuICAgICAgICBNT05USDogJ1lZWVktTU0nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8aW5wdXQgdHlwZT1cIm1vbnRoXCIgLz5cbiAgICB9O1xuXG4gICAgcmV0dXJuIGhvb2tzO1xuXG59KSkpOyIsIi8qIVxuICogalF1ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2My4zLjFcbiAqIGh0dHBzOi8vanF1ZXJ5LmNvbS9cbiAqXG4gKiBJbmNsdWRlcyBTaXp6bGUuanNcbiAqIGh0dHBzOi8vc2l6emxlanMuY29tL1xuICpcbiAqIENvcHlyaWdodCBKUyBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZVxuICogaHR0cHM6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqXG4gKiBEYXRlOiAyMDE4LTAxLTIwVDE3OjI0WlxuICovXG4oIGZ1bmN0aW9uKCBnbG9iYWwsIGZhY3RvcnkgKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0aWYgKCB0eXBlb2YgbW9kdWxlID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdC8vIEZvciBDb21tb25KUyBhbmQgQ29tbW9uSlMtbGlrZSBlbnZpcm9ubWVudHMgd2hlcmUgYSBwcm9wZXIgYHdpbmRvd2Bcblx0XHQvLyBpcyBwcmVzZW50LCBleGVjdXRlIHRoZSBmYWN0b3J5IGFuZCBnZXQgalF1ZXJ5LlxuXHRcdC8vIEZvciBlbnZpcm9ubWVudHMgdGhhdCBkbyBub3QgaGF2ZSBhIGB3aW5kb3dgIHdpdGggYSBgZG9jdW1lbnRgXG5cdFx0Ly8gKHN1Y2ggYXMgTm9kZS5qcyksIGV4cG9zZSBhIGZhY3RvcnkgYXMgbW9kdWxlLmV4cG9ydHMuXG5cdFx0Ly8gVGhpcyBhY2NlbnR1YXRlcyB0aGUgbmVlZCBmb3IgdGhlIGNyZWF0aW9uIG9mIGEgcmVhbCBgd2luZG93YC5cblx0XHQvLyBlLmcuIHZhciBqUXVlcnkgPSByZXF1aXJlKFwianF1ZXJ5XCIpKHdpbmRvdyk7XG5cdFx0Ly8gU2VlIHRpY2tldCAjMTQ1NDkgZm9yIG1vcmUgaW5mby5cblx0XHRtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbC5kb2N1bWVudCA/XG5cdFx0XHRmYWN0b3J5KCBnbG9iYWwsIHRydWUgKSA6XG5cdFx0XHRmdW5jdGlvbiggdyApIHtcblx0XHRcdFx0aWYgKCAhdy5kb2N1bWVudCApIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoIFwialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudFwiICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGZhY3RvcnkoIHcgKTtcblx0XHRcdH07XG5cdH0gZWxzZSB7XG5cdFx0ZmFjdG9yeSggZ2xvYmFsICk7XG5cdH1cblxuLy8gUGFzcyB0aGlzIGlmIHdpbmRvdyBpcyBub3QgZGVmaW5lZCB5ZXRcbn0gKSggdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHRoaXMsIGZ1bmN0aW9uKCB3aW5kb3csIG5vR2xvYmFsICkge1xuXG4vLyBFZGdlIDw9IDEyIC0gMTMrLCBGaXJlZm94IDw9MTggLSA0NSssIElFIDEwIC0gMTEsIFNhZmFyaSA1LjEgLSA5KywgaU9TIDYgLSA5LjFcbi8vIHRocm93IGV4Y2VwdGlvbnMgd2hlbiBub24tc3RyaWN0IGNvZGUgKGUuZy4sIEFTUC5ORVQgNC41KSBhY2Nlc3NlcyBzdHJpY3QgbW9kZVxuLy8gYXJndW1lbnRzLmNhbGxlZS5jYWxsZXIgKHRyYWMtMTMzMzUpLiBCdXQgYXMgb2YgalF1ZXJ5IDMuMCAoMjAxNiksIHN0cmljdCBtb2RlIHNob3VsZCBiZSBjb21tb25cbi8vIGVub3VnaCB0aGF0IGFsbCBzdWNoIGF0dGVtcHRzIGFyZSBndWFyZGVkIGluIGEgdHJ5IGJsb2NrLlxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBhcnIgPSBbXTtcblxudmFyIGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50O1xuXG52YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG5cbnZhciBzbGljZSA9IGFyci5zbGljZTtcblxudmFyIGNvbmNhdCA9IGFyci5jb25jYXQ7XG5cbnZhciBwdXNoID0gYXJyLnB1c2g7XG5cbnZhciBpbmRleE9mID0gYXJyLmluZGV4T2Y7XG5cbnZhciBjbGFzczJ0eXBlID0ge307XG5cbnZhciB0b1N0cmluZyA9IGNsYXNzMnR5cGUudG9TdHJpbmc7XG5cbnZhciBoYXNPd24gPSBjbGFzczJ0eXBlLmhhc093blByb3BlcnR5O1xuXG52YXIgZm5Ub1N0cmluZyA9IGhhc093bi50b1N0cmluZztcblxudmFyIE9iamVjdEZ1bmN0aW9uU3RyaW5nID0gZm5Ub1N0cmluZy5jYWxsKCBPYmplY3QgKTtcblxudmFyIHN1cHBvcnQgPSB7fTtcblxudmFyIGlzRnVuY3Rpb24gPSBmdW5jdGlvbiBpc0Z1bmN0aW9uKCBvYmogKSB7XG5cbiAgICAgIC8vIFN1cHBvcnQ6IENocm9tZSA8PTU3LCBGaXJlZm94IDw9NTJcbiAgICAgIC8vIEluIHNvbWUgYnJvd3NlcnMsIHR5cGVvZiByZXR1cm5zIFwiZnVuY3Rpb25cIiBmb3IgSFRNTCA8b2JqZWN0PiBlbGVtZW50c1xuICAgICAgLy8gKGkuZS4sIGB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJvYmplY3RcIiApID09PSBcImZ1bmN0aW9uXCJgKS5cbiAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gY2xhc3NpZnkgKmFueSogRE9NIG5vZGUgYXMgYSBmdW5jdGlvbi5cbiAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIG9iai5ub2RlVHlwZSAhPT0gXCJudW1iZXJcIjtcbiAgfTtcblxuXG52YXIgaXNXaW5kb3cgPSBmdW5jdGlvbiBpc1dpbmRvdyggb2JqICkge1xuXHRcdHJldHVybiBvYmogIT0gbnVsbCAmJiBvYmogPT09IG9iai53aW5kb3c7XG5cdH07XG5cblxuXG5cblx0dmFyIHByZXNlcnZlZFNjcmlwdEF0dHJpYnV0ZXMgPSB7XG5cdFx0dHlwZTogdHJ1ZSxcblx0XHRzcmM6IHRydWUsXG5cdFx0bm9Nb2R1bGU6IHRydWVcblx0fTtcblxuXHRmdW5jdGlvbiBET01FdmFsKCBjb2RlLCBkb2MsIG5vZGUgKSB7XG5cdFx0ZG9jID0gZG9jIHx8IGRvY3VtZW50O1xuXG5cdFx0dmFyIGksXG5cdFx0XHRzY3JpcHQgPSBkb2MuY3JlYXRlRWxlbWVudCggXCJzY3JpcHRcIiApO1xuXG5cdFx0c2NyaXB0LnRleHQgPSBjb2RlO1xuXHRcdGlmICggbm9kZSApIHtcblx0XHRcdGZvciAoIGkgaW4gcHJlc2VydmVkU2NyaXB0QXR0cmlidXRlcyApIHtcblx0XHRcdFx0aWYgKCBub2RlWyBpIF0gKSB7XG5cdFx0XHRcdFx0c2NyaXB0WyBpIF0gPSBub2RlWyBpIF07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0ZG9jLmhlYWQuYXBwZW5kQ2hpbGQoIHNjcmlwdCApLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHNjcmlwdCApO1xuXHR9XG5cblxuZnVuY3Rpb24gdG9UeXBlKCBvYmogKSB7XG5cdGlmICggb2JqID09IG51bGwgKSB7XG5cdFx0cmV0dXJuIG9iaiArIFwiXCI7XG5cdH1cblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9Mi4zIG9ubHkgKGZ1bmN0aW9uaXNoIFJlZ0V4cClcblx0cmV0dXJuIHR5cGVvZiBvYmogPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIG9iaiA9PT0gXCJmdW5jdGlvblwiID9cblx0XHRjbGFzczJ0eXBlWyB0b1N0cmluZy5jYWxsKCBvYmogKSBdIHx8IFwib2JqZWN0XCIgOlxuXHRcdHR5cGVvZiBvYmo7XG59XG4vKiBnbG9iYWwgU3ltYm9sICovXG4vLyBEZWZpbmluZyB0aGlzIGdsb2JhbCBpbiAuZXNsaW50cmMuanNvbiB3b3VsZCBjcmVhdGUgYSBkYW5nZXIgb2YgdXNpbmcgdGhlIGdsb2JhbFxuLy8gdW5ndWFyZGVkIGluIGFub3RoZXIgcGxhY2UsIGl0IHNlZW1zIHNhZmVyIHRvIGRlZmluZSBnbG9iYWwgb25seSBmb3IgdGhpcyBtb2R1bGVcblxuXG5cbnZhclxuXHR2ZXJzaW9uID0gXCIzLjMuMVwiLFxuXG5cdC8vIERlZmluZSBhIGxvY2FsIGNvcHkgb2YgalF1ZXJ5XG5cdGpRdWVyeSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHtcblxuXHRcdC8vIFRoZSBqUXVlcnkgb2JqZWN0IGlzIGFjdHVhbGx5IGp1c3QgdGhlIGluaXQgY29uc3RydWN0b3IgJ2VuaGFuY2VkJ1xuXHRcdC8vIE5lZWQgaW5pdCBpZiBqUXVlcnkgaXMgY2FsbGVkIChqdXN0IGFsbG93IGVycm9yIHRvIGJlIHRocm93biBpZiBub3QgaW5jbHVkZWQpXG5cdFx0cmV0dXJuIG5ldyBqUXVlcnkuZm4uaW5pdCggc2VsZWN0b3IsIGNvbnRleHQgKTtcblx0fSxcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHlcblx0Ly8gTWFrZSBzdXJlIHdlIHRyaW0gQk9NIGFuZCBOQlNQXG5cdHJ0cmltID0gL15bXFxzXFx1RkVGRlxceEEwXSt8W1xcc1xcdUZFRkZcXHhBMF0rJC9nO1xuXG5qUXVlcnkuZm4gPSBqUXVlcnkucHJvdG90eXBlID0ge1xuXG5cdC8vIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgalF1ZXJ5IGJlaW5nIHVzZWRcblx0anF1ZXJ5OiB2ZXJzaW9uLFxuXG5cdGNvbnN0cnVjdG9yOiBqUXVlcnksXG5cblx0Ly8gVGhlIGRlZmF1bHQgbGVuZ3RoIG9mIGEgalF1ZXJ5IG9iamVjdCBpcyAwXG5cdGxlbmd0aDogMCxcblxuXHR0b0FycmF5OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gc2xpY2UuY2FsbCggdGhpcyApO1xuXHR9LFxuXG5cdC8vIEdldCB0aGUgTnRoIGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgZWxlbWVudCBzZXQgT1Jcblx0Ly8gR2V0IHRoZSB3aG9sZSBtYXRjaGVkIGVsZW1lbnQgc2V0IGFzIGEgY2xlYW4gYXJyYXlcblx0Z2V0OiBmdW5jdGlvbiggbnVtICkge1xuXG5cdFx0Ly8gUmV0dXJuIGFsbCB0aGUgZWxlbWVudHMgaW4gYSBjbGVhbiBhcnJheVxuXHRcdGlmICggbnVtID09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gc2xpY2UuY2FsbCggdGhpcyApO1xuXHRcdH1cblxuXHRcdC8vIFJldHVybiBqdXN0IHRoZSBvbmUgZWxlbWVudCBmcm9tIHRoZSBzZXRcblx0XHRyZXR1cm4gbnVtIDwgMCA/IHRoaXNbIG51bSArIHRoaXMubGVuZ3RoIF0gOiB0aGlzWyBudW0gXTtcblx0fSxcblxuXHQvLyBUYWtlIGFuIGFycmF5IG9mIGVsZW1lbnRzIGFuZCBwdXNoIGl0IG9udG8gdGhlIHN0YWNrXG5cdC8vIChyZXR1cm5pbmcgdGhlIG5ldyBtYXRjaGVkIGVsZW1lbnQgc2V0KVxuXHRwdXNoU3RhY2s6IGZ1bmN0aW9uKCBlbGVtcyApIHtcblxuXHRcdC8vIEJ1aWxkIGEgbmV3IGpRdWVyeSBtYXRjaGVkIGVsZW1lbnQgc2V0XG5cdFx0dmFyIHJldCA9IGpRdWVyeS5tZXJnZSggdGhpcy5jb25zdHJ1Y3RvcigpLCBlbGVtcyApO1xuXG5cdFx0Ly8gQWRkIHRoZSBvbGQgb2JqZWN0IG9udG8gdGhlIHN0YWNrIChhcyBhIHJlZmVyZW5jZSlcblx0XHRyZXQucHJldk9iamVjdCA9IHRoaXM7XG5cblx0XHQvLyBSZXR1cm4gdGhlIG5ld2x5LWZvcm1lZCBlbGVtZW50IHNldFxuXHRcdHJldHVybiByZXQ7XG5cdH0sXG5cblx0Ly8gRXhlY3V0ZSBhIGNhbGxiYWNrIGZvciBldmVyeSBlbGVtZW50IGluIHRoZSBtYXRjaGVkIHNldC5cblx0ZWFjaDogZnVuY3Rpb24oIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBqUXVlcnkuZWFjaCggdGhpcywgY2FsbGJhY2sgKTtcblx0fSxcblxuXHRtYXA6IGZ1bmN0aW9uKCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVyeS5tYXAoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBpICkge1xuXHRcdFx0cmV0dXJuIGNhbGxiYWNrLmNhbGwoIGVsZW0sIGksIGVsZW0gKTtcblx0XHR9ICkgKTtcblx0fSxcblxuXHRzbGljZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBzbGljZS5hcHBseSggdGhpcywgYXJndW1lbnRzICkgKTtcblx0fSxcblxuXHRmaXJzdDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuZXEoIDAgKTtcblx0fSxcblxuXHRsYXN0OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5lcSggLTEgKTtcblx0fSxcblxuXHRlcTogZnVuY3Rpb24oIGkgKSB7XG5cdFx0dmFyIGxlbiA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0aiA9ICtpICsgKCBpIDwgMCA/IGxlbiA6IDAgKTtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGogPj0gMCAmJiBqIDwgbGVuID8gWyB0aGlzWyBqIF0gXSA6IFtdICk7XG5cdH0sXG5cblx0ZW5kOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5wcmV2T2JqZWN0IHx8IHRoaXMuY29uc3RydWN0b3IoKTtcblx0fSxcblxuXHQvLyBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuXG5cdC8vIEJlaGF2ZXMgbGlrZSBhbiBBcnJheSdzIG1ldGhvZCwgbm90IGxpa2UgYSBqUXVlcnkgbWV0aG9kLlxuXHRwdXNoOiBwdXNoLFxuXHRzb3J0OiBhcnIuc29ydCxcblx0c3BsaWNlOiBhcnIuc3BsaWNlXG59O1xuXG5qUXVlcnkuZXh0ZW5kID0galF1ZXJ5LmZuLmV4dGVuZCA9IGZ1bmN0aW9uKCkge1xuXHR2YXIgb3B0aW9ucywgbmFtZSwgc3JjLCBjb3B5LCBjb3B5SXNBcnJheSwgY2xvbmUsXG5cdFx0dGFyZ2V0ID0gYXJndW1lbnRzWyAwIF0gfHwge30sXG5cdFx0aSA9IDEsXG5cdFx0bGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCxcblx0XHRkZWVwID0gZmFsc2U7XG5cblx0Ly8gSGFuZGxlIGEgZGVlcCBjb3B5IHNpdHVhdGlvblxuXHRpZiAoIHR5cGVvZiB0YXJnZXQgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdGRlZXAgPSB0YXJnZXQ7XG5cblx0XHQvLyBTa2lwIHRoZSBib29sZWFuIGFuZCB0aGUgdGFyZ2V0XG5cdFx0dGFyZ2V0ID0gYXJndW1lbnRzWyBpIF0gfHwge307XG5cdFx0aSsrO1xuXHR9XG5cblx0Ly8gSGFuZGxlIGNhc2Ugd2hlbiB0YXJnZXQgaXMgYSBzdHJpbmcgb3Igc29tZXRoaW5nIChwb3NzaWJsZSBpbiBkZWVwIGNvcHkpXG5cdGlmICggdHlwZW9mIHRhcmdldCAhPT0gXCJvYmplY3RcIiAmJiAhaXNGdW5jdGlvbiggdGFyZ2V0ICkgKSB7XG5cdFx0dGFyZ2V0ID0ge307XG5cdH1cblxuXHQvLyBFeHRlbmQgalF1ZXJ5IGl0c2VsZiBpZiBvbmx5IG9uZSBhcmd1bWVudCBpcyBwYXNzZWRcblx0aWYgKCBpID09PSBsZW5ndGggKSB7XG5cdFx0dGFyZ2V0ID0gdGhpcztcblx0XHRpLS07XG5cdH1cblxuXHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblxuXHRcdC8vIE9ubHkgZGVhbCB3aXRoIG5vbi1udWxsL3VuZGVmaW5lZCB2YWx1ZXNcblx0XHRpZiAoICggb3B0aW9ucyA9IGFyZ3VtZW50c1sgaSBdICkgIT0gbnVsbCApIHtcblxuXHRcdFx0Ly8gRXh0ZW5kIHRoZSBiYXNlIG9iamVjdFxuXHRcdFx0Zm9yICggbmFtZSBpbiBvcHRpb25zICkge1xuXHRcdFx0XHRzcmMgPSB0YXJnZXRbIG5hbWUgXTtcblx0XHRcdFx0Y29weSA9IG9wdGlvbnNbIG5hbWUgXTtcblxuXHRcdFx0XHQvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wXG5cdFx0XHRcdGlmICggdGFyZ2V0ID09PSBjb3B5ICkge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUmVjdXJzZSBpZiB3ZSdyZSBtZXJnaW5nIHBsYWluIG9iamVjdHMgb3IgYXJyYXlzXG5cdFx0XHRcdGlmICggZGVlcCAmJiBjb3B5ICYmICggalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvcHkgKSB8fFxuXHRcdFx0XHRcdCggY29weUlzQXJyYXkgPSBBcnJheS5pc0FycmF5KCBjb3B5ICkgKSApICkge1xuXG5cdFx0XHRcdFx0aWYgKCBjb3B5SXNBcnJheSApIHtcblx0XHRcdFx0XHRcdGNvcHlJc0FycmF5ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRjbG9uZSA9IHNyYyAmJiBBcnJheS5pc0FycmF5KCBzcmMgKSA/IHNyYyA6IFtdO1xuXG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGNsb25lID0gc3JjICYmIGpRdWVyeS5pc1BsYWluT2JqZWN0KCBzcmMgKSA/IHNyYyA6IHt9O1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIE5ldmVyIG1vdmUgb3JpZ2luYWwgb2JqZWN0cywgY2xvbmUgdGhlbVxuXHRcdFx0XHRcdHRhcmdldFsgbmFtZSBdID0galF1ZXJ5LmV4dGVuZCggZGVlcCwgY2xvbmUsIGNvcHkgKTtcblxuXHRcdFx0XHQvLyBEb24ndCBicmluZyBpbiB1bmRlZmluZWQgdmFsdWVzXG5cdFx0XHRcdH0gZWxzZSBpZiAoIGNvcHkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHR0YXJnZXRbIG5hbWUgXSA9IGNvcHk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBSZXR1cm4gdGhlIG1vZGlmaWVkIG9iamVjdFxuXHRyZXR1cm4gdGFyZ2V0O1xufTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdC8vIFVuaXF1ZSBmb3IgZWFjaCBjb3B5IG9mIGpRdWVyeSBvbiB0aGUgcGFnZVxuXHRleHBhbmRvOiBcImpRdWVyeVwiICsgKCB2ZXJzaW9uICsgTWF0aC5yYW5kb20oKSApLnJlcGxhY2UoIC9cXEQvZywgXCJcIiApLFxuXG5cdC8vIEFzc3VtZSBqUXVlcnkgaXMgcmVhZHkgd2l0aG91dCB0aGUgcmVhZHkgbW9kdWxlXG5cdGlzUmVhZHk6IHRydWUsXG5cblx0ZXJyb3I6IGZ1bmN0aW9uKCBtc2cgKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCBtc2cgKTtcblx0fSxcblxuXHRub29wOiBmdW5jdGlvbigpIHt9LFxuXG5cdGlzUGxhaW5PYmplY3Q6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0dmFyIHByb3RvLCBDdG9yO1xuXG5cdFx0Ly8gRGV0ZWN0IG9idmlvdXMgbmVnYXRpdmVzXG5cdFx0Ly8gVXNlIHRvU3RyaW5nIGluc3RlYWQgb2YgalF1ZXJ5LnR5cGUgdG8gY2F0Y2ggaG9zdCBvYmplY3RzXG5cdFx0aWYgKCAhb2JqIHx8IHRvU3RyaW5nLmNhbGwoIG9iaiApICE9PSBcIltvYmplY3QgT2JqZWN0XVwiICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHByb3RvID0gZ2V0UHJvdG8oIG9iaiApO1xuXG5cdFx0Ly8gT2JqZWN0cyB3aXRoIG5vIHByb3RvdHlwZSAoZS5nLiwgYE9iamVjdC5jcmVhdGUoIG51bGwgKWApIGFyZSBwbGFpblxuXHRcdGlmICggIXByb3RvICkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gT2JqZWN0cyB3aXRoIHByb3RvdHlwZSBhcmUgcGxhaW4gaWZmIHRoZXkgd2VyZSBjb25zdHJ1Y3RlZCBieSBhIGdsb2JhbCBPYmplY3QgZnVuY3Rpb25cblx0XHRDdG9yID0gaGFzT3duLmNhbGwoIHByb3RvLCBcImNvbnN0cnVjdG9yXCIgKSAmJiBwcm90by5jb25zdHJ1Y3Rvcjtcblx0XHRyZXR1cm4gdHlwZW9mIEN0b3IgPT09IFwiZnVuY3Rpb25cIiAmJiBmblRvU3RyaW5nLmNhbGwoIEN0b3IgKSA9PT0gT2JqZWN0RnVuY3Rpb25TdHJpbmc7XG5cdH0sXG5cblx0aXNFbXB0eU9iamVjdDogZnVuY3Rpb24oIG9iaiApIHtcblxuXHRcdC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG5cdFx0Ly8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9lc2xpbnQvZXNsaW50L2lzc3Vlcy82MTI1XG5cdFx0dmFyIG5hbWU7XG5cblx0XHRmb3IgKCBuYW1lIGluIG9iaiApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIHRydWU7XG5cdH0sXG5cblx0Ly8gRXZhbHVhdGVzIGEgc2NyaXB0IGluIGEgZ2xvYmFsIGNvbnRleHRcblx0Z2xvYmFsRXZhbDogZnVuY3Rpb24oIGNvZGUgKSB7XG5cdFx0RE9NRXZhbCggY29kZSApO1xuXHR9LFxuXG5cdGVhY2g6IGZ1bmN0aW9uKCBvYmosIGNhbGxiYWNrICkge1xuXHRcdHZhciBsZW5ndGgsIGkgPSAwO1xuXG5cdFx0aWYgKCBpc0FycmF5TGlrZSggb2JqICkgKSB7XG5cdFx0XHRsZW5ndGggPSBvYmoubGVuZ3RoO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdGlmICggY2FsbGJhY2suY2FsbCggb2JqWyBpIF0sIGksIG9ialsgaSBdICkgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAoIGkgaW4gb2JqICkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrLmNhbGwoIG9ialsgaSBdLCBpLCBvYmpbIGkgXSApID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBvYmo7XG5cdH0sXG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5XG5cdHRyaW06IGZ1bmN0aW9uKCB0ZXh0ICkge1xuXHRcdHJldHVybiB0ZXh0ID09IG51bGwgP1xuXHRcdFx0XCJcIiA6XG5cdFx0XHQoIHRleHQgKyBcIlwiICkucmVwbGFjZSggcnRyaW0sIFwiXCIgKTtcblx0fSxcblxuXHQvLyByZXN1bHRzIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5XG5cdG1ha2VBcnJheTogZnVuY3Rpb24oIGFyciwgcmVzdWx0cyApIHtcblx0XHR2YXIgcmV0ID0gcmVzdWx0cyB8fCBbXTtcblxuXHRcdGlmICggYXJyICE9IG51bGwgKSB7XG5cdFx0XHRpZiAoIGlzQXJyYXlMaWtlKCBPYmplY3QoIGFyciApICkgKSB7XG5cdFx0XHRcdGpRdWVyeS5tZXJnZSggcmV0LFxuXHRcdFx0XHRcdHR5cGVvZiBhcnIgPT09IFwic3RyaW5nXCIgP1xuXHRcdFx0XHRcdFsgYXJyIF0gOiBhcnJcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHB1c2guY2FsbCggcmV0LCBhcnIgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gcmV0O1xuXHR9LFxuXG5cdGluQXJyYXk6IGZ1bmN0aW9uKCBlbGVtLCBhcnIsIGkgKSB7XG5cdFx0cmV0dXJuIGFyciA9PSBudWxsID8gLTEgOiBpbmRleE9mLmNhbGwoIGFyciwgZWxlbSwgaSApO1xuXHR9LFxuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seVxuXHQvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdG1lcmdlOiBmdW5jdGlvbiggZmlyc3QsIHNlY29uZCApIHtcblx0XHR2YXIgbGVuID0gK3NlY29uZC5sZW5ndGgsXG5cdFx0XHRqID0gMCxcblx0XHRcdGkgPSBmaXJzdC5sZW5ndGg7XG5cblx0XHRmb3IgKCA7IGogPCBsZW47IGorKyApIHtcblx0XHRcdGZpcnN0WyBpKysgXSA9IHNlY29uZFsgaiBdO1xuXHRcdH1cblxuXHRcdGZpcnN0Lmxlbmd0aCA9IGk7XG5cblx0XHRyZXR1cm4gZmlyc3Q7XG5cdH0sXG5cblx0Z3JlcDogZnVuY3Rpb24oIGVsZW1zLCBjYWxsYmFjaywgaW52ZXJ0ICkge1xuXHRcdHZhciBjYWxsYmFja0ludmVyc2UsXG5cdFx0XHRtYXRjaGVzID0gW10sXG5cdFx0XHRpID0gMCxcblx0XHRcdGxlbmd0aCA9IGVsZW1zLmxlbmd0aCxcblx0XHRcdGNhbGxiYWNrRXhwZWN0ID0gIWludmVydDtcblxuXHRcdC8vIEdvIHRocm91Z2ggdGhlIGFycmF5LCBvbmx5IHNhdmluZyB0aGUgaXRlbXNcblx0XHQvLyB0aGF0IHBhc3MgdGhlIHZhbGlkYXRvciBmdW5jdGlvblxuXHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXHRcdFx0Y2FsbGJhY2tJbnZlcnNlID0gIWNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpICk7XG5cdFx0XHRpZiAoIGNhbGxiYWNrSW52ZXJzZSAhPT0gY2FsbGJhY2tFeHBlY3QgKSB7XG5cdFx0XHRcdG1hdGNoZXMucHVzaCggZWxlbXNbIGkgXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBtYXRjaGVzO1xuXHR9LFxuXG5cdC8vIGFyZyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ugb25seVxuXHRtYXA6IGZ1bmN0aW9uKCBlbGVtcywgY2FsbGJhY2ssIGFyZyApIHtcblx0XHR2YXIgbGVuZ3RoLCB2YWx1ZSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0cmV0ID0gW107XG5cblx0XHQvLyBHbyB0aHJvdWdoIHRoZSBhcnJheSwgdHJhbnNsYXRpbmcgZWFjaCBvZiB0aGUgaXRlbXMgdG8gdGhlaXIgbmV3IHZhbHVlc1xuXHRcdGlmICggaXNBcnJheUxpa2UoIGVsZW1zICkgKSB7XG5cdFx0XHRsZW5ndGggPSBlbGVtcy5sZW5ndGg7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblx0XHRcdFx0dmFsdWUgPSBjYWxsYmFjayggZWxlbXNbIGkgXSwgaSwgYXJnICk7XG5cblx0XHRcdFx0aWYgKCB2YWx1ZSAhPSBudWxsICkge1xuXHRcdFx0XHRcdHJldC5wdXNoKCB2YWx1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHQvLyBHbyB0aHJvdWdoIGV2ZXJ5IGtleSBvbiB0aGUgb2JqZWN0LFxuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3IgKCBpIGluIGVsZW1zICkge1xuXHRcdFx0XHR2YWx1ZSA9IGNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpLCBhcmcgKTtcblxuXHRcdFx0XHRpZiAoIHZhbHVlICE9IG51bGwgKSB7XG5cdFx0XHRcdFx0cmV0LnB1c2goIHZhbHVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBGbGF0dGVuIGFueSBuZXN0ZWQgYXJyYXlzXG5cdFx0cmV0dXJuIGNvbmNhdC5hcHBseSggW10sIHJldCApO1xuXHR9LFxuXG5cdC8vIEEgZ2xvYmFsIEdVSUQgY291bnRlciBmb3Igb2JqZWN0c1xuXHRndWlkOiAxLFxuXG5cdC8vIGpRdWVyeS5zdXBwb3J0IGlzIG5vdCB1c2VkIGluIENvcmUgYnV0IG90aGVyIHByb2plY3RzIGF0dGFjaCB0aGVpclxuXHQvLyBwcm9wZXJ0aWVzIHRvIGl0IHNvIGl0IG5lZWRzIHRvIGV4aXN0LlxuXHRzdXBwb3J0OiBzdXBwb3J0XG59ICk7XG5cbmlmICggdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICkge1xuXHRqUXVlcnkuZm5bIFN5bWJvbC5pdGVyYXRvciBdID0gYXJyWyBTeW1ib2wuaXRlcmF0b3IgXTtcbn1cblxuLy8gUG9wdWxhdGUgdGhlIGNsYXNzMnR5cGUgbWFwXG5qUXVlcnkuZWFjaCggXCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbFwiLnNwbGl0KCBcIiBcIiApLFxuZnVuY3Rpb24oIGksIG5hbWUgKSB7XG5cdGNsYXNzMnR5cGVbIFwiW29iamVjdCBcIiArIG5hbWUgKyBcIl1cIiBdID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xufSApO1xuXG5mdW5jdGlvbiBpc0FycmF5TGlrZSggb2JqICkge1xuXG5cdC8vIFN1cHBvcnQ6IHJlYWwgaU9TIDguMiBvbmx5IChub3QgcmVwcm9kdWNpYmxlIGluIHNpbXVsYXRvcilcblx0Ly8gYGluYCBjaGVjayB1c2VkIHRvIHByZXZlbnQgSklUIGVycm9yIChnaC0yMTQ1KVxuXHQvLyBoYXNPd24gaXNuJ3QgdXNlZCBoZXJlIGR1ZSB0byBmYWxzZSBuZWdhdGl2ZXNcblx0Ly8gcmVnYXJkaW5nIE5vZGVsaXN0IGxlbmd0aCBpbiBJRVxuXHR2YXIgbGVuZ3RoID0gISFvYmogJiYgXCJsZW5ndGhcIiBpbiBvYmogJiYgb2JqLmxlbmd0aCxcblx0XHR0eXBlID0gdG9UeXBlKCBvYmogKTtcblxuXHRpZiAoIGlzRnVuY3Rpb24oIG9iaiApIHx8IGlzV2luZG93KCBvYmogKSApIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRyZXR1cm4gdHlwZSA9PT0gXCJhcnJheVwiIHx8IGxlbmd0aCA9PT0gMCB8fFxuXHRcdHR5cGVvZiBsZW5ndGggPT09IFwibnVtYmVyXCIgJiYgbGVuZ3RoID4gMCAmJiAoIGxlbmd0aCAtIDEgKSBpbiBvYmo7XG59XG52YXIgU2l6emxlID1cbi8qIVxuICogU2l6emxlIENTUyBTZWxlY3RvciBFbmdpbmUgdjIuMy4zXG4gKiBodHRwczovL3NpenpsZWpzLmNvbS9cbiAqXG4gKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKlxuICogRGF0ZTogMjAxNi0wOC0wOFxuICovXG4oZnVuY3Rpb24oIHdpbmRvdyApIHtcblxudmFyIGksXG5cdHN1cHBvcnQsXG5cdEV4cHIsXG5cdGdldFRleHQsXG5cdGlzWE1MLFxuXHR0b2tlbml6ZSxcblx0Y29tcGlsZSxcblx0c2VsZWN0LFxuXHRvdXRlcm1vc3RDb250ZXh0LFxuXHRzb3J0SW5wdXQsXG5cdGhhc0R1cGxpY2F0ZSxcblxuXHQvLyBMb2NhbCBkb2N1bWVudCB2YXJzXG5cdHNldERvY3VtZW50LFxuXHRkb2N1bWVudCxcblx0ZG9jRWxlbSxcblx0ZG9jdW1lbnRJc0hUTUwsXG5cdHJidWdneVFTQSxcblx0cmJ1Z2d5TWF0Y2hlcyxcblx0bWF0Y2hlcyxcblx0Y29udGFpbnMsXG5cblx0Ly8gSW5zdGFuY2Utc3BlY2lmaWMgZGF0YVxuXHRleHBhbmRvID0gXCJzaXp6bGVcIiArIDEgKiBuZXcgRGF0ZSgpLFxuXHRwcmVmZXJyZWREb2MgPSB3aW5kb3cuZG9jdW1lbnQsXG5cdGRpcnJ1bnMgPSAwLFxuXHRkb25lID0gMCxcblx0Y2xhc3NDYWNoZSA9IGNyZWF0ZUNhY2hlKCksXG5cdHRva2VuQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLFxuXHRjb21waWxlckNhY2hlID0gY3JlYXRlQ2FjaGUoKSxcblx0c29ydE9yZGVyID0gZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0aWYgKCBhID09PSBiICkge1xuXHRcdFx0aGFzRHVwbGljYXRlID0gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIDA7XG5cdH0sXG5cblx0Ly8gSW5zdGFuY2UgbWV0aG9kc1xuXHRoYXNPd24gPSAoe30pLmhhc093blByb3BlcnR5LFxuXHRhcnIgPSBbXSxcblx0cG9wID0gYXJyLnBvcCxcblx0cHVzaF9uYXRpdmUgPSBhcnIucHVzaCxcblx0cHVzaCA9IGFyci5wdXNoLFxuXHRzbGljZSA9IGFyci5zbGljZSxcblx0Ly8gVXNlIGEgc3RyaXBwZWQtZG93biBpbmRleE9mIGFzIGl0J3MgZmFzdGVyIHRoYW4gbmF0aXZlXG5cdC8vIGh0dHBzOi8vanNwZXJmLmNvbS90aG9yLWluZGV4b2YtdnMtZm9yLzVcblx0aW5kZXhPZiA9IGZ1bmN0aW9uKCBsaXN0LCBlbGVtICkge1xuXHRcdHZhciBpID0gMCxcblx0XHRcdGxlbiA9IGxpc3QubGVuZ3RoO1xuXHRcdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0aWYgKCBsaXN0W2ldID09PSBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gaTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIC0xO1xuXHR9LFxuXG5cdGJvb2xlYW5zID0gXCJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZFwiLFxuXG5cdC8vIFJlZ3VsYXIgZXhwcmVzc2lvbnNcblxuXHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXNlbGVjdG9ycy8jd2hpdGVzcGFjZVxuXHR3aGl0ZXNwYWNlID0gXCJbXFxcXHgyMFxcXFx0XFxcXHJcXFxcblxcXFxmXVwiLFxuXG5cdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCN2YWx1ZS1kZWYtaWRlbnRpZmllclxuXHRpZGVudGlmaWVyID0gXCIoPzpcXFxcXFxcXC58W1xcXFx3LV18W15cXDAtXFxcXHhhMF0pK1wiLFxuXG5cdC8vIEF0dHJpYnV0ZSBzZWxlY3RvcnM6IGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jYXR0cmlidXRlLXNlbGVjdG9yc1xuXHRhdHRyaWJ1dGVzID0gXCJcXFxcW1wiICsgd2hpdGVzcGFjZSArIFwiKihcIiArIGlkZW50aWZpZXIgKyBcIikoPzpcIiArIHdoaXRlc3BhY2UgK1xuXHRcdC8vIE9wZXJhdG9yIChjYXB0dXJlIDIpXG5cdFx0XCIqKFsqXiR8IX5dPz0pXCIgKyB3aGl0ZXNwYWNlICtcblx0XHQvLyBcIkF0dHJpYnV0ZSB2YWx1ZXMgbXVzdCBiZSBDU1MgaWRlbnRpZmllcnMgW2NhcHR1cmUgNV0gb3Igc3RyaW5ncyBbY2FwdHVyZSAzIG9yIGNhcHR1cmUgNF1cIlxuXHRcdFwiKig/OicoKD86XFxcXFxcXFwufFteXFxcXFxcXFwnXSkqKSd8XFxcIigoPzpcXFxcXFxcXC58W15cXFxcXFxcXFxcXCJdKSopXFxcInwoXCIgKyBpZGVudGlmaWVyICsgXCIpKXwpXCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcIipcXFxcXVwiLFxuXG5cdHBzZXVkb3MgPSBcIjooXCIgKyBpZGVudGlmaWVyICsgXCIpKD86XFxcXCgoXCIgK1xuXHRcdC8vIFRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHNlbGVjdG9ycyBuZWVkaW5nIHRva2VuaXplIGluIHRoZSBwcmVGaWx0ZXIsIHByZWZlciBhcmd1bWVudHM6XG5cdFx0Ly8gMS4gcXVvdGVkIChjYXB0dXJlIDM7IGNhcHR1cmUgNCBvciBjYXB0dXJlIDUpXG5cdFx0XCIoJygoPzpcXFxcXFxcXC58W15cXFxcXFxcXCddKSopJ3xcXFwiKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcXFxcIl0pKilcXFwiKXxcIiArXG5cdFx0Ly8gMi4gc2ltcGxlIChjYXB0dXJlIDYpXG5cdFx0XCIoKD86XFxcXFxcXFwufFteXFxcXFxcXFwoKVtcXFxcXV18XCIgKyBhdHRyaWJ1dGVzICsgXCIpKil8XCIgK1xuXHRcdC8vIDMuIGFueXRoaW5nIGVsc2UgKGNhcHR1cmUgMilcblx0XHRcIi4qXCIgK1xuXHRcdFwiKVxcXFwpfClcIixcblxuXHQvLyBMZWFkaW5nIGFuZCBub24tZXNjYXBlZCB0cmFpbGluZyB3aGl0ZXNwYWNlLCBjYXB0dXJpbmcgc29tZSBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzIHByZWNlZGluZyB0aGUgbGF0dGVyXG5cdHJ3aGl0ZXNwYWNlID0gbmV3IFJlZ0V4cCggd2hpdGVzcGFjZSArIFwiK1wiLCBcImdcIiApLFxuXHRydHJpbSA9IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiK3woKD86XnxbXlxcXFxcXFxcXSkoPzpcXFxcXFxcXC4pKilcIiArIHdoaXRlc3BhY2UgKyBcIiskXCIsIFwiZ1wiICksXG5cblx0cmNvbW1hID0gbmV3IFJlZ0V4cCggXCJeXCIgKyB3aGl0ZXNwYWNlICsgXCIqLFwiICsgd2hpdGVzcGFjZSArIFwiKlwiICksXG5cdHJjb21iaW5hdG9ycyA9IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiKihbPit+XXxcIiArIHdoaXRlc3BhY2UgKyBcIilcIiArIHdoaXRlc3BhY2UgKyBcIipcIiApLFxuXG5cdHJhdHRyaWJ1dGVRdW90ZXMgPSBuZXcgUmVnRXhwKCBcIj1cIiArIHdoaXRlc3BhY2UgKyBcIiooW15cXFxcXSdcXFwiXSo/KVwiICsgd2hpdGVzcGFjZSArIFwiKlxcXFxdXCIsIFwiZ1wiICksXG5cblx0cnBzZXVkbyA9IG5ldyBSZWdFeHAoIHBzZXVkb3MgKSxcblx0cmlkZW50aWZpZXIgPSBuZXcgUmVnRXhwKCBcIl5cIiArIGlkZW50aWZpZXIgKyBcIiRcIiApLFxuXG5cdG1hdGNoRXhwciA9IHtcblx0XHRcIklEXCI6IG5ldyBSZWdFeHAoIFwiXiMoXCIgKyBpZGVudGlmaWVyICsgXCIpXCIgKSxcblx0XHRcIkNMQVNTXCI6IG5ldyBSZWdFeHAoIFwiXlxcXFwuKFwiICsgaWRlbnRpZmllciArIFwiKVwiICksXG5cdFx0XCJUQUdcIjogbmV3IFJlZ0V4cCggXCJeKFwiICsgaWRlbnRpZmllciArIFwifFsqXSlcIiApLFxuXHRcdFwiQVRUUlwiOiBuZXcgUmVnRXhwKCBcIl5cIiArIGF0dHJpYnV0ZXMgKSxcblx0XHRcIlBTRVVET1wiOiBuZXcgUmVnRXhwKCBcIl5cIiArIHBzZXVkb3MgKSxcblx0XHRcIkNISUxEXCI6IG5ldyBSZWdFeHAoIFwiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFxcXChcIiArIHdoaXRlc3BhY2UgK1xuXHRcdFx0XCIqKGV2ZW58b2RkfCgoWystXXwpKFxcXFxkKilufClcIiArIHdoaXRlc3BhY2UgKyBcIiooPzooWystXXwpXCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcdFwiKihcXFxcZCspfCkpXCIgKyB3aGl0ZXNwYWNlICsgXCIqXFxcXCl8KVwiLCBcImlcIiApLFxuXHRcdFwiYm9vbFwiOiBuZXcgUmVnRXhwKCBcIl4oPzpcIiArIGJvb2xlYW5zICsgXCIpJFwiLCBcImlcIiApLFxuXHRcdC8vIEZvciB1c2UgaW4gbGlicmFyaWVzIGltcGxlbWVudGluZyAuaXMoKVxuXHRcdC8vIFdlIHVzZSB0aGlzIGZvciBQT1MgbWF0Y2hpbmcgaW4gYHNlbGVjdGBcblx0XHRcIm5lZWRzQ29udGV4dFwiOiBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcXFwoXCIgK1xuXHRcdFx0d2hpdGVzcGFjZSArIFwiKigoPzotXFxcXGQpP1xcXFxkKilcIiArIHdoaXRlc3BhY2UgKyBcIipcXFxcKXwpKD89W14tXXwkKVwiLCBcImlcIiApXG5cdH0sXG5cblx0cmlucHV0cyA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksXG5cdHJoZWFkZXIgPSAvXmhcXGQkL2ksXG5cblx0cm5hdGl2ZSA9IC9eW157XStcXHtcXHMqXFxbbmF0aXZlIFxcdy8sXG5cblx0Ly8gRWFzaWx5LXBhcnNlYWJsZS9yZXRyaWV2YWJsZSBJRCBvciBUQUcgb3IgQ0xBU1Mgc2VsZWN0b3JzXG5cdHJxdWlja0V4cHIgPSAvXig/OiMoW1xcdy1dKyl8KFxcdyspfFxcLihbXFx3LV0rKSkkLyxcblxuXHRyc2libGluZyA9IC9bK35dLyxcblxuXHQvLyBDU1MgZXNjYXBlc1xuXHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9zeW5kYXRhLmh0bWwjZXNjYXBlZC1jaGFyYWN0ZXJzXG5cdHJ1bmVzY2FwZSA9IG5ldyBSZWdFeHAoIFwiXFxcXFxcXFwoW1xcXFxkYS1mXXsxLDZ9XCIgKyB3aGl0ZXNwYWNlICsgXCI/fChcIiArIHdoaXRlc3BhY2UgKyBcIil8LilcIiwgXCJpZ1wiICksXG5cdGZ1bmVzY2FwZSA9IGZ1bmN0aW9uKCBfLCBlc2NhcGVkLCBlc2NhcGVkV2hpdGVzcGFjZSApIHtcblx0XHR2YXIgaGlnaCA9IFwiMHhcIiArIGVzY2FwZWQgLSAweDEwMDAwO1xuXHRcdC8vIE5hTiBtZWFucyBub24tY29kZXBvaW50XG5cdFx0Ly8gU3VwcG9ydDogRmlyZWZveDwyNFxuXHRcdC8vIFdvcmthcm91bmQgZXJyb25lb3VzIG51bWVyaWMgaW50ZXJwcmV0YXRpb24gb2YgK1wiMHhcIlxuXHRcdHJldHVybiBoaWdoICE9PSBoaWdoIHx8IGVzY2FwZWRXaGl0ZXNwYWNlID9cblx0XHRcdGVzY2FwZWQgOlxuXHRcdFx0aGlnaCA8IDAgP1xuXHRcdFx0XHQvLyBCTVAgY29kZXBvaW50XG5cdFx0XHRcdFN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggKyAweDEwMDAwICkgOlxuXHRcdFx0XHQvLyBTdXBwbGVtZW50YWwgUGxhbmUgY29kZXBvaW50IChzdXJyb2dhdGUgcGFpcilcblx0XHRcdFx0U3RyaW5nLmZyb21DaGFyQ29kZSggaGlnaCA+PiAxMCB8IDB4RDgwMCwgaGlnaCAmIDB4M0ZGIHwgMHhEQzAwICk7XG5cdH0sXG5cblx0Ly8gQ1NTIHN0cmluZy9pZGVudGlmaWVyIHNlcmlhbGl6YXRpb25cblx0Ly8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNjb21tb24tc2VyaWFsaXppbmctaWRpb21zXG5cdHJjc3Nlc2NhcGUgPSAvKFtcXDAtXFx4MWZcXHg3Zl18Xi0/XFxkKXxeLSR8W15cXDAtXFx4MWZcXHg3Zi1cXHVGRkZGXFx3LV0vZyxcblx0ZmNzc2VzY2FwZSA9IGZ1bmN0aW9uKCBjaCwgYXNDb2RlUG9pbnQgKSB7XG5cdFx0aWYgKCBhc0NvZGVQb2ludCApIHtcblxuXHRcdFx0Ly8gVSswMDAwIE5VTEwgYmVjb21lcyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSXG5cdFx0XHRpZiAoIGNoID09PSBcIlxcMFwiICkge1xuXHRcdFx0XHRyZXR1cm4gXCJcXHVGRkZEXCI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENvbnRyb2wgY2hhcmFjdGVycyBhbmQgKGRlcGVuZGVudCB1cG9uIHBvc2l0aW9uKSBudW1iZXJzIGdldCBlc2NhcGVkIGFzIGNvZGUgcG9pbnRzXG5cdFx0XHRyZXR1cm4gY2guc2xpY2UoIDAsIC0xICkgKyBcIlxcXFxcIiArIGNoLmNoYXJDb2RlQXQoIGNoLmxlbmd0aCAtIDEgKS50b1N0cmluZyggMTYgKSArIFwiIFwiO1xuXHRcdH1cblxuXHRcdC8vIE90aGVyIHBvdGVudGlhbGx5LXNwZWNpYWwgQVNDSUkgY2hhcmFjdGVycyBnZXQgYmFja3NsYXNoLWVzY2FwZWRcblx0XHRyZXR1cm4gXCJcXFxcXCIgKyBjaDtcblx0fSxcblxuXHQvLyBVc2VkIGZvciBpZnJhbWVzXG5cdC8vIFNlZSBzZXREb2N1bWVudCgpXG5cdC8vIFJlbW92aW5nIHRoZSBmdW5jdGlvbiB3cmFwcGVyIGNhdXNlcyBhIFwiUGVybWlzc2lvbiBEZW5pZWRcIlxuXHQvLyBlcnJvciBpbiBJRVxuXHR1bmxvYWRIYW5kbGVyID0gZnVuY3Rpb24oKSB7XG5cdFx0c2V0RG9jdW1lbnQoKTtcblx0fSxcblxuXHRkaXNhYmxlZEFuY2VzdG9yID0gYWRkQ29tYmluYXRvcihcblx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtLmRpc2FibGVkID09PSB0cnVlICYmIChcImZvcm1cIiBpbiBlbGVtIHx8IFwibGFiZWxcIiBpbiBlbGVtKTtcblx0XHR9LFxuXHRcdHsgZGlyOiBcInBhcmVudE5vZGVcIiwgbmV4dDogXCJsZWdlbmRcIiB9XG5cdCk7XG5cbi8vIE9wdGltaXplIGZvciBwdXNoLmFwcGx5KCBfLCBOb2RlTGlzdCApXG50cnkge1xuXHRwdXNoLmFwcGx5KFxuXHRcdChhcnIgPSBzbGljZS5jYWxsKCBwcmVmZXJyZWREb2MuY2hpbGROb2RlcyApKSxcblx0XHRwcmVmZXJyZWREb2MuY2hpbGROb2Rlc1xuXHQpO1xuXHQvLyBTdXBwb3J0OiBBbmRyb2lkPDQuMFxuXHQvLyBEZXRlY3Qgc2lsZW50bHkgZmFpbGluZyBwdXNoLmFwcGx5XG5cdGFyclsgcHJlZmVycmVkRG9jLmNoaWxkTm9kZXMubGVuZ3RoIF0ubm9kZVR5cGU7XG59IGNhdGNoICggZSApIHtcblx0cHVzaCA9IHsgYXBwbHk6IGFyci5sZW5ndGggP1xuXG5cdFx0Ly8gTGV2ZXJhZ2Ugc2xpY2UgaWYgcG9zc2libGVcblx0XHRmdW5jdGlvbiggdGFyZ2V0LCBlbHMgKSB7XG5cdFx0XHRwdXNoX25hdGl2ZS5hcHBseSggdGFyZ2V0LCBzbGljZS5jYWxsKGVscykgKTtcblx0XHR9IDpcblxuXHRcdC8vIFN1cHBvcnQ6IElFPDlcblx0XHQvLyBPdGhlcndpc2UgYXBwZW5kIGRpcmVjdGx5XG5cdFx0ZnVuY3Rpb24oIHRhcmdldCwgZWxzICkge1xuXHRcdFx0dmFyIGogPSB0YXJnZXQubGVuZ3RoLFxuXHRcdFx0XHRpID0gMDtcblx0XHRcdC8vIENhbid0IHRydXN0IE5vZGVMaXN0Lmxlbmd0aFxuXHRcdFx0d2hpbGUgKCAodGFyZ2V0W2orK10gPSBlbHNbaSsrXSkgKSB7fVxuXHRcdFx0dGFyZ2V0Lmxlbmd0aCA9IGogLSAxO1xuXHRcdH1cblx0fTtcbn1cblxuZnVuY3Rpb24gU2l6emxlKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHtcblx0dmFyIG0sIGksIGVsZW0sIG5pZCwgbWF0Y2gsIGdyb3VwcywgbmV3U2VsZWN0b3IsXG5cdFx0bmV3Q29udGV4dCA9IGNvbnRleHQgJiYgY29udGV4dC5vd25lckRvY3VtZW50LFxuXG5cdFx0Ly8gbm9kZVR5cGUgZGVmYXVsdHMgdG8gOSwgc2luY2UgY29udGV4dCBkZWZhdWx0cyB0byBkb2N1bWVudFxuXHRcdG5vZGVUeXBlID0gY29udGV4dCA/IGNvbnRleHQubm9kZVR5cGUgOiA5O1xuXG5cdHJlc3VsdHMgPSByZXN1bHRzIHx8IFtdO1xuXG5cdC8vIFJldHVybiBlYXJseSBmcm9tIGNhbGxzIHdpdGggaW52YWxpZCBzZWxlY3RvciBvciBjb250ZXh0XG5cdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiIHx8ICFzZWxlY3RvciB8fFxuXHRcdG5vZGVUeXBlICE9PSAxICYmIG5vZGVUeXBlICE9PSA5ICYmIG5vZGVUeXBlICE9PSAxMSApIHtcblxuXHRcdHJldHVybiByZXN1bHRzO1xuXHR9XG5cblx0Ly8gVHJ5IHRvIHNob3J0Y3V0IGZpbmQgb3BlcmF0aW9ucyAoYXMgb3Bwb3NlZCB0byBmaWx0ZXJzKSBpbiBIVE1MIGRvY3VtZW50c1xuXHRpZiAoICFzZWVkICkge1xuXG5cdFx0aWYgKCAoIGNvbnRleHQgPyBjb250ZXh0Lm93bmVyRG9jdW1lbnQgfHwgY29udGV4dCA6IHByZWZlcnJlZERvYyApICE9PSBkb2N1bWVudCApIHtcblx0XHRcdHNldERvY3VtZW50KCBjb250ZXh0ICk7XG5cdFx0fVxuXHRcdGNvbnRleHQgPSBjb250ZXh0IHx8IGRvY3VtZW50O1xuXG5cdFx0aWYgKCBkb2N1bWVudElzSFRNTCApIHtcblxuXHRcdFx0Ly8gSWYgdGhlIHNlbGVjdG9yIGlzIHN1ZmZpY2llbnRseSBzaW1wbGUsIHRyeSB1c2luZyBhIFwiZ2V0KkJ5KlwiIERPTSBtZXRob2Rcblx0XHRcdC8vIChleGNlcHRpbmcgRG9jdW1lbnRGcmFnbWVudCBjb250ZXh0LCB3aGVyZSB0aGUgbWV0aG9kcyBkb24ndCBleGlzdClcblx0XHRcdGlmICggbm9kZVR5cGUgIT09IDExICYmIChtYXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKSkgKSB7XG5cblx0XHRcdFx0Ly8gSUQgc2VsZWN0b3Jcblx0XHRcdFx0aWYgKCAobSA9IG1hdGNoWzFdKSApIHtcblxuXHRcdFx0XHRcdC8vIERvY3VtZW50IGNvbnRleHRcblx0XHRcdFx0XHRpZiAoIG5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIG0gKSkgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUsIE9wZXJhLCBXZWJraXRcblx0XHRcdFx0XHRcdFx0Ly8gVE9ETzogaWRlbnRpZnkgdmVyc2lvbnNcblx0XHRcdFx0XHRcdFx0Ly8gZ2V0RWxlbWVudEJ5SWQgY2FuIG1hdGNoIGVsZW1lbnRzIGJ5IG5hbWUgaW5zdGVhZCBvZiBJRFxuXHRcdFx0XHRcdFx0XHRpZiAoIGVsZW0uaWQgPT09IG0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzdWx0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gRWxlbWVudCBjb250ZXh0XG5cdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUsIE9wZXJhLCBXZWJraXRcblx0XHRcdFx0XHRcdC8vIFRPRE86IGlkZW50aWZ5IHZlcnNpb25zXG5cdFx0XHRcdFx0XHQvLyBnZXRFbGVtZW50QnlJZCBjYW4gbWF0Y2ggZWxlbWVudHMgYnkgbmFtZSBpbnN0ZWFkIG9mIElEXG5cdFx0XHRcdFx0XHRpZiAoIG5ld0NvbnRleHQgJiYgKGVsZW0gPSBuZXdDb250ZXh0LmdldEVsZW1lbnRCeUlkKCBtICkpICYmXG5cdFx0XHRcdFx0XHRcdGNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICkgJiZcblx0XHRcdFx0XHRcdFx0ZWxlbS5pZCA9PT0gbSApIHtcblxuXHRcdFx0XHRcdFx0XHRyZXN1bHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFR5cGUgc2VsZWN0b3Jcblx0XHRcdFx0fSBlbHNlIGlmICggbWF0Y2hbMl0gKSB7XG5cdFx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggc2VsZWN0b3IgKSApO1xuXHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXG5cdFx0XHRcdC8vIENsYXNzIHNlbGVjdG9yXG5cdFx0XHRcdH0gZWxzZSBpZiAoIChtID0gbWF0Y2hbM10pICYmIHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJlxuXHRcdFx0XHRcdGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSApIHtcblxuXHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggbSApICk7XG5cdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gVGFrZSBhZHZhbnRhZ2Ugb2YgcXVlcnlTZWxlY3RvckFsbFxuXHRcdFx0aWYgKCBzdXBwb3J0LnFzYSAmJlxuXHRcdFx0XHQhY29tcGlsZXJDYWNoZVsgc2VsZWN0b3IgKyBcIiBcIiBdICYmXG5cdFx0XHRcdCghcmJ1Z2d5UVNBIHx8ICFyYnVnZ3lRU0EudGVzdCggc2VsZWN0b3IgKSkgKSB7XG5cblx0XHRcdFx0aWYgKCBub2RlVHlwZSAhPT0gMSApIHtcblx0XHRcdFx0XHRuZXdDb250ZXh0ID0gY29udGV4dDtcblx0XHRcdFx0XHRuZXdTZWxlY3RvciA9IHNlbGVjdG9yO1xuXG5cdFx0XHRcdC8vIHFTQSBsb29rcyBvdXRzaWRlIEVsZW1lbnQgY29udGV4dCwgd2hpY2ggaXMgbm90IHdoYXQgd2Ugd2FudFxuXHRcdFx0XHQvLyBUaGFua3MgdG8gQW5kcmV3IER1cG9udCBmb3IgdGhpcyB3b3JrYXJvdW5kIHRlY2huaXF1ZVxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PThcblx0XHRcdFx0Ly8gRXhjbHVkZSBvYmplY3QgZWxlbWVudHNcblx0XHRcdFx0fSBlbHNlIGlmICggY29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9PSBcIm9iamVjdFwiICkge1xuXG5cdFx0XHRcdFx0Ly8gQ2FwdHVyZSB0aGUgY29udGV4dCBJRCwgc2V0dGluZyBpdCBmaXJzdCBpZiBuZWNlc3Nhcnlcblx0XHRcdFx0XHRpZiAoIChuaWQgPSBjb250ZXh0LmdldEF0dHJpYnV0ZSggXCJpZFwiICkpICkge1xuXHRcdFx0XHRcdFx0bmlkID0gbmlkLnJlcGxhY2UoIHJjc3Nlc2NhcGUsIGZjc3Nlc2NhcGUgKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29udGV4dC5zZXRBdHRyaWJ1dGUoIFwiaWRcIiwgKG5pZCA9IGV4cGFuZG8pICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gUHJlZml4IGV2ZXJ5IHNlbGVjdG9yIGluIHRoZSBsaXN0XG5cdFx0XHRcdFx0Z3JvdXBzID0gdG9rZW5pemUoIHNlbGVjdG9yICk7XG5cdFx0XHRcdFx0aSA9IGdyb3Vwcy5sZW5ndGg7XG5cdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRncm91cHNbaV0gPSBcIiNcIiArIG5pZCArIFwiIFwiICsgdG9TZWxlY3RvciggZ3JvdXBzW2ldICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG5ld1NlbGVjdG9yID0gZ3JvdXBzLmpvaW4oIFwiLFwiICk7XG5cblx0XHRcdFx0XHQvLyBFeHBhbmQgY29udGV4dCBmb3Igc2libGluZyBzZWxlY3RvcnNcblx0XHRcdFx0XHRuZXdDb250ZXh0ID0gcnNpYmxpbmcudGVzdCggc2VsZWN0b3IgKSAmJiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJlbnROb2RlICkgfHxcblx0XHRcdFx0XHRcdGNvbnRleHQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIG5ld1NlbGVjdG9yICkge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLFxuXHRcdFx0XHRcdFx0XHRuZXdDb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIG5ld1NlbGVjdG9yIClcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0XHR9IGNhdGNoICggcXNhRXJyb3IgKSB7XG5cdFx0XHRcdFx0fSBmaW5hbGx5IHtcblx0XHRcdFx0XHRcdGlmICggbmlkID09PSBleHBhbmRvICkge1xuXHRcdFx0XHRcdFx0XHRjb250ZXh0LnJlbW92ZUF0dHJpYnV0ZSggXCJpZFwiICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQWxsIG90aGVyc1xuXHRyZXR1cm4gc2VsZWN0KCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICksIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUga2V5LXZhbHVlIGNhY2hlcyBvZiBsaW1pdGVkIHNpemVcbiAqIEByZXR1cm5zIHtmdW5jdGlvbihzdHJpbmcsIG9iamVjdCl9IFJldHVybnMgdGhlIE9iamVjdCBkYXRhIGFmdGVyIHN0b3JpbmcgaXQgb24gaXRzZWxmIHdpdGhcbiAqXHRwcm9wZXJ0eSBuYW1lIHRoZSAoc3BhY2Utc3VmZml4ZWQpIHN0cmluZyBhbmQgKGlmIHRoZSBjYWNoZSBpcyBsYXJnZXIgdGhhbiBFeHByLmNhY2hlTGVuZ3RoKVxuICpcdGRlbGV0aW5nIHRoZSBvbGRlc3QgZW50cnlcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQ2FjaGUoKSB7XG5cdHZhciBrZXlzID0gW107XG5cblx0ZnVuY3Rpb24gY2FjaGUoIGtleSwgdmFsdWUgKSB7XG5cdFx0Ly8gVXNlIChrZXkgKyBcIiBcIikgdG8gYXZvaWQgY29sbGlzaW9uIHdpdGggbmF0aXZlIHByb3RvdHlwZSBwcm9wZXJ0aWVzIChzZWUgSXNzdWUgIzE1Nylcblx0XHRpZiAoIGtleXMucHVzaCgga2V5ICsgXCIgXCIgKSA+IEV4cHIuY2FjaGVMZW5ndGggKSB7XG5cdFx0XHQvLyBPbmx5IGtlZXAgdGhlIG1vc3QgcmVjZW50IGVudHJpZXNcblx0XHRcdGRlbGV0ZSBjYWNoZVsga2V5cy5zaGlmdCgpIF07XG5cdFx0fVxuXHRcdHJldHVybiAoY2FjaGVbIGtleSArIFwiIFwiIF0gPSB2YWx1ZSk7XG5cdH1cblx0cmV0dXJuIGNhY2hlO1xufVxuXG4vKipcbiAqIE1hcmsgYSBmdW5jdGlvbiBmb3Igc3BlY2lhbCB1c2UgYnkgU2l6emxlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gbWFya1xuICovXG5mdW5jdGlvbiBtYXJrRnVuY3Rpb24oIGZuICkge1xuXHRmblsgZXhwYW5kbyBdID0gdHJ1ZTtcblx0cmV0dXJuIGZuO1xufVxuXG4vKipcbiAqIFN1cHBvcnQgdGVzdGluZyB1c2luZyBhbiBlbGVtZW50XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBQYXNzZWQgdGhlIGNyZWF0ZWQgZWxlbWVudCBhbmQgcmV0dXJucyBhIGJvb2xlYW4gcmVzdWx0XG4gKi9cbmZ1bmN0aW9uIGFzc2VydCggZm4gKSB7XG5cdHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJmaWVsZHNldFwiKTtcblxuXHR0cnkge1xuXHRcdHJldHVybiAhIWZuKCBlbCApO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9IGZpbmFsbHkge1xuXHRcdC8vIFJlbW92ZSBmcm9tIGl0cyBwYXJlbnQgYnkgZGVmYXVsdFxuXHRcdGlmICggZWwucGFyZW50Tm9kZSApIHtcblx0XHRcdGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIGVsICk7XG5cdFx0fVxuXHRcdC8vIHJlbGVhc2UgbWVtb3J5IGluIElFXG5cdFx0ZWwgPSBudWxsO1xuXHR9XG59XG5cbi8qKlxuICogQWRkcyB0aGUgc2FtZSBoYW5kbGVyIGZvciBhbGwgb2YgdGhlIHNwZWNpZmllZCBhdHRyc1xuICogQHBhcmFtIHtTdHJpbmd9IGF0dHJzIFBpcGUtc2VwYXJhdGVkIGxpc3Qgb2YgYXR0cmlidXRlc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciBUaGUgbWV0aG9kIHRoYXQgd2lsbCBiZSBhcHBsaWVkXG4gKi9cbmZ1bmN0aW9uIGFkZEhhbmRsZSggYXR0cnMsIGhhbmRsZXIgKSB7XG5cdHZhciBhcnIgPSBhdHRycy5zcGxpdChcInxcIiksXG5cdFx0aSA9IGFyci5sZW5ndGg7XG5cblx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0RXhwci5hdHRySGFuZGxlWyBhcnJbaV0gXSA9IGhhbmRsZXI7XG5cdH1cbn1cblxuLyoqXG4gKiBDaGVja3MgZG9jdW1lbnQgb3JkZXIgb2YgdHdvIHNpYmxpbmdzXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGFcbiAqIEBwYXJhbSB7RWxlbWVudH0gYlxuICogQHJldHVybnMge051bWJlcn0gUmV0dXJucyBsZXNzIHRoYW4gMCBpZiBhIHByZWNlZGVzIGIsIGdyZWF0ZXIgdGhhbiAwIGlmIGEgZm9sbG93cyBiXG4gKi9cbmZ1bmN0aW9uIHNpYmxpbmdDaGVjayggYSwgYiApIHtcblx0dmFyIGN1ciA9IGIgJiYgYSxcblx0XHRkaWZmID0gY3VyICYmIGEubm9kZVR5cGUgPT09IDEgJiYgYi5ub2RlVHlwZSA9PT0gMSAmJlxuXHRcdFx0YS5zb3VyY2VJbmRleCAtIGIuc291cmNlSW5kZXg7XG5cblx0Ly8gVXNlIElFIHNvdXJjZUluZGV4IGlmIGF2YWlsYWJsZSBvbiBib3RoIG5vZGVzXG5cdGlmICggZGlmZiApIHtcblx0XHRyZXR1cm4gZGlmZjtcblx0fVxuXG5cdC8vIENoZWNrIGlmIGIgZm9sbG93cyBhXG5cdGlmICggY3VyICkge1xuXHRcdHdoaWxlICggKGN1ciA9IGN1ci5uZXh0U2libGluZykgKSB7XG5cdFx0XHRpZiAoIGN1ciA9PT0gYiApIHtcblx0XHRcdFx0cmV0dXJuIC0xO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBhID8gMSA6IC0xO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgaW5wdXQgdHlwZXNcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUlucHV0UHNldWRvKCB0eXBlICkge1xuXHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0dmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0cmV0dXJuIG5hbWUgPT09IFwiaW5wdXRcIiAmJiBlbGVtLnR5cGUgPT09IHR5cGU7XG5cdH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBidXR0b25zXG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZVxuICovXG5mdW5jdGlvbiBjcmVhdGVCdXR0b25Qc2V1ZG8oIHR5cGUgKSB7XG5cdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHR2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRyZXR1cm4gKG5hbWUgPT09IFwiaW5wdXRcIiB8fCBuYW1lID09PSBcImJ1dHRvblwiKSAmJiBlbGVtLnR5cGUgPT09IHR5cGU7XG5cdH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciA6ZW5hYmxlZC86ZGlzYWJsZWRcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gZGlzYWJsZWQgdHJ1ZSBmb3IgOmRpc2FibGVkOyBmYWxzZSBmb3IgOmVuYWJsZWRcbiAqL1xuZnVuY3Rpb24gY3JlYXRlRGlzYWJsZWRQc2V1ZG8oIGRpc2FibGVkICkge1xuXG5cdC8vIEtub3duIDpkaXNhYmxlZCBmYWxzZSBwb3NpdGl2ZXM6IGZpZWxkc2V0W2Rpc2FibGVkXSA+IGxlZ2VuZDpudGgtb2YtdHlwZShuKzIpIDpjYW4tZGlzYWJsZVxuXHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHQvLyBPbmx5IGNlcnRhaW4gZWxlbWVudHMgY2FuIG1hdGNoIDplbmFibGVkIG9yIDpkaXNhYmxlZFxuXHRcdC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI3NlbGVjdG9yLWVuYWJsZWRcblx0XHQvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNzZWxlY3Rvci1kaXNhYmxlZFxuXHRcdGlmICggXCJmb3JtXCIgaW4gZWxlbSApIHtcblxuXHRcdFx0Ly8gQ2hlY2sgZm9yIGluaGVyaXRlZCBkaXNhYmxlZG5lc3Mgb24gcmVsZXZhbnQgbm9uLWRpc2FibGVkIGVsZW1lbnRzOlxuXHRcdFx0Ly8gKiBsaXN0ZWQgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnRzIGluIGEgZGlzYWJsZWQgZmllbGRzZXRcblx0XHRcdC8vICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNjYXRlZ29yeS1saXN0ZWRcblx0XHRcdC8vICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNjb25jZXB0LWZlLWRpc2FibGVkXG5cdFx0XHQvLyAqIG9wdGlvbiBlbGVtZW50cyBpbiBhIGRpc2FibGVkIG9wdGdyb3VwXG5cdFx0XHQvLyAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm1zLmh0bWwjY29uY2VwdC1vcHRpb24tZGlzYWJsZWRcblx0XHRcdC8vIEFsbCBzdWNoIGVsZW1lbnRzIGhhdmUgYSBcImZvcm1cIiBwcm9wZXJ0eS5cblx0XHRcdGlmICggZWxlbS5wYXJlbnROb2RlICYmIGVsZW0uZGlzYWJsZWQgPT09IGZhbHNlICkge1xuXG5cdFx0XHRcdC8vIE9wdGlvbiBlbGVtZW50cyBkZWZlciB0byBhIHBhcmVudCBvcHRncm91cCBpZiBwcmVzZW50XG5cdFx0XHRcdGlmICggXCJsYWJlbFwiIGluIGVsZW0gKSB7XG5cdFx0XHRcdFx0aWYgKCBcImxhYmVsXCIgaW4gZWxlbS5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGVsZW0ucGFyZW50Tm9kZS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtLmRpc2FibGVkID09PSBkaXNhYmxlZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA2IC0gMTFcblx0XHRcdFx0Ly8gVXNlIHRoZSBpc0Rpc2FibGVkIHNob3J0Y3V0IHByb3BlcnR5IHRvIGNoZWNrIGZvciBkaXNhYmxlZCBmaWVsZHNldCBhbmNlc3RvcnNcblx0XHRcdFx0cmV0dXJuIGVsZW0uaXNEaXNhYmxlZCA9PT0gZGlzYWJsZWQgfHxcblxuXHRcdFx0XHRcdC8vIFdoZXJlIHRoZXJlIGlzIG5vIGlzRGlzYWJsZWQsIGNoZWNrIG1hbnVhbGx5XG5cdFx0XHRcdFx0LyoganNoaW50IC1XMDE4ICovXG5cdFx0XHRcdFx0ZWxlbS5pc0Rpc2FibGVkICE9PSAhZGlzYWJsZWQgJiZcblx0XHRcdFx0XHRcdGRpc2FibGVkQW5jZXN0b3IoIGVsZW0gKSA9PT0gZGlzYWJsZWQ7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBlbGVtLmRpc2FibGVkID09PSBkaXNhYmxlZDtcblxuXHRcdC8vIFRyeSB0byB3aW5ub3cgb3V0IGVsZW1lbnRzIHRoYXQgY2FuJ3QgYmUgZGlzYWJsZWQgYmVmb3JlIHRydXN0aW5nIHRoZSBkaXNhYmxlZCBwcm9wZXJ0eS5cblx0XHQvLyBTb21lIHZpY3RpbXMgZ2V0IGNhdWdodCBpbiBvdXIgbmV0IChsYWJlbCwgbGVnZW5kLCBtZW51LCB0cmFjayksIGJ1dCBpdCBzaG91bGRuJ3Rcblx0XHQvLyBldmVuIGV4aXN0IG9uIHRoZW0sIGxldCBhbG9uZSBoYXZlIGEgYm9vbGVhbiB2YWx1ZS5cblx0XHR9IGVsc2UgaWYgKCBcImxhYmVsXCIgaW4gZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtLmRpc2FibGVkID09PSBkaXNhYmxlZDtcblx0XHR9XG5cblx0XHQvLyBSZW1haW5pbmcgZWxlbWVudHMgYXJlIG5laXRoZXIgOmVuYWJsZWQgbm9yIDpkaXNhYmxlZFxuXHRcdHJldHVybiBmYWxzZTtcblx0fTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIHBvc2l0aW9uYWxzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmblxuICovXG5mdW5jdGlvbiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKCBmbiApIHtcblx0cmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggYXJndW1lbnQgKSB7XG5cdFx0YXJndW1lbnQgPSArYXJndW1lbnQ7XG5cdFx0cmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcyApIHtcblx0XHRcdHZhciBqLFxuXHRcdFx0XHRtYXRjaEluZGV4ZXMgPSBmbiggW10sIHNlZWQubGVuZ3RoLCBhcmd1bWVudCApLFxuXHRcdFx0XHRpID0gbWF0Y2hJbmRleGVzLmxlbmd0aDtcblxuXHRcdFx0Ly8gTWF0Y2ggZWxlbWVudHMgZm91bmQgYXQgdGhlIHNwZWNpZmllZCBpbmRleGVzXG5cdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0aWYgKCBzZWVkWyAoaiA9IG1hdGNoSW5kZXhlc1tpXSkgXSApIHtcblx0XHRcdFx0XHRzZWVkW2pdID0gIShtYXRjaGVzW2pdID0gc2VlZFtqXSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0fSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGEgbm9kZSBmb3IgdmFsaWRpdHkgYXMgYSBTaXp6bGUgY29udGV4dFxuICogQHBhcmFtIHtFbGVtZW50fE9iamVjdD19IGNvbnRleHRcbiAqIEByZXR1cm5zIHtFbGVtZW50fE9iamVjdHxCb29sZWFufSBUaGUgaW5wdXQgbm9kZSBpZiBhY2NlcHRhYmxlLCBvdGhlcndpc2UgYSBmYWxzeSB2YWx1ZVxuICovXG5mdW5jdGlvbiB0ZXN0Q29udGV4dCggY29udGV4dCApIHtcblx0cmV0dXJuIGNvbnRleHQgJiYgdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09IFwidW5kZWZpbmVkXCIgJiYgY29udGV4dDtcbn1cblxuLy8gRXhwb3NlIHN1cHBvcnQgdmFycyBmb3IgY29udmVuaWVuY2VcbnN1cHBvcnQgPSBTaXp6bGUuc3VwcG9ydCA9IHt9O1xuXG4vKipcbiAqIERldGVjdHMgWE1MIG5vZGVzXG4gKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0fSBlbGVtIEFuIGVsZW1lbnQgb3IgYSBkb2N1bWVudFxuICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWZmIGVsZW0gaXMgYSBub24tSFRNTCBYTUwgbm9kZVxuICovXG5pc1hNTCA9IFNpenpsZS5pc1hNTCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHQvLyBkb2N1bWVudEVsZW1lbnQgaXMgdmVyaWZpZWQgZm9yIGNhc2VzIHdoZXJlIGl0IGRvZXNuJ3QgeWV0IGV4aXN0XG5cdC8vIChzdWNoIGFzIGxvYWRpbmcgaWZyYW1lcyBpbiBJRSAtICM0ODMzKVxuXHR2YXIgZG9jdW1lbnRFbGVtZW50ID0gZWxlbSAmJiAoZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0pLmRvY3VtZW50RWxlbWVudDtcblx0cmV0dXJuIGRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVudC5ub2RlTmFtZSAhPT0gXCJIVE1MXCIgOiBmYWxzZTtcbn07XG5cbi8qKlxuICogU2V0cyBkb2N1bWVudC1yZWxhdGVkIHZhcmlhYmxlcyBvbmNlIGJhc2VkIG9uIHRoZSBjdXJyZW50IGRvY3VtZW50XG4gKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0fSBbZG9jXSBBbiBlbGVtZW50IG9yIGRvY3VtZW50IG9iamVjdCB0byB1c2UgdG8gc2V0IHRoZSBkb2N1bWVudFxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY3VycmVudCBkb2N1bWVudFxuICovXG5zZXREb2N1bWVudCA9IFNpenpsZS5zZXREb2N1bWVudCA9IGZ1bmN0aW9uKCBub2RlICkge1xuXHR2YXIgaGFzQ29tcGFyZSwgc3ViV2luZG93LFxuXHRcdGRvYyA9IG5vZGUgPyBub2RlLm93bmVyRG9jdW1lbnQgfHwgbm9kZSA6IHByZWZlcnJlZERvYztcblxuXHQvLyBSZXR1cm4gZWFybHkgaWYgZG9jIGlzIGludmFsaWQgb3IgYWxyZWFkeSBzZWxlY3RlZFxuXHRpZiAoIGRvYyA9PT0gZG9jdW1lbnQgfHwgZG9jLm5vZGVUeXBlICE9PSA5IHx8ICFkb2MuZG9jdW1lbnRFbGVtZW50ICkge1xuXHRcdHJldHVybiBkb2N1bWVudDtcblx0fVxuXG5cdC8vIFVwZGF0ZSBnbG9iYWwgdmFyaWFibGVzXG5cdGRvY3VtZW50ID0gZG9jO1xuXHRkb2NFbGVtID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXHRkb2N1bWVudElzSFRNTCA9ICFpc1hNTCggZG9jdW1lbnQgKTtcblxuXHQvLyBTdXBwb3J0OiBJRSA5LTExLCBFZGdlXG5cdC8vIEFjY2Vzc2luZyBpZnJhbWUgZG9jdW1lbnRzIGFmdGVyIHVubG9hZCB0aHJvd3MgXCJwZXJtaXNzaW9uIGRlbmllZFwiIGVycm9ycyAoalF1ZXJ5ICMxMzkzNilcblx0aWYgKCBwcmVmZXJyZWREb2MgIT09IGRvY3VtZW50ICYmXG5cdFx0KHN1YldpbmRvdyA9IGRvY3VtZW50LmRlZmF1bHRWaWV3KSAmJiBzdWJXaW5kb3cudG9wICE9PSBzdWJXaW5kb3cgKSB7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSAxMSwgRWRnZVxuXHRcdGlmICggc3ViV2luZG93LmFkZEV2ZW50TGlzdGVuZXIgKSB7XG5cdFx0XHRzdWJXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggXCJ1bmxvYWRcIiwgdW5sb2FkSGFuZGxlciwgZmFsc2UgKTtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDkgLSAxMCBvbmx5XG5cdFx0fSBlbHNlIGlmICggc3ViV2luZG93LmF0dGFjaEV2ZW50ICkge1xuXHRcdFx0c3ViV2luZG93LmF0dGFjaEV2ZW50KCBcIm9udW5sb2FkXCIsIHVubG9hZEhhbmRsZXIgKTtcblx0XHR9XG5cdH1cblxuXHQvKiBBdHRyaWJ1dGVzXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvLyBTdXBwb3J0OiBJRTw4XG5cdC8vIFZlcmlmeSB0aGF0IGdldEF0dHJpYnV0ZSByZWFsbHkgcmV0dXJucyBhdHRyaWJ1dGVzIGFuZCBub3QgcHJvcGVydGllc1xuXHQvLyAoZXhjZXB0aW5nIElFOCBib29sZWFucylcblx0c3VwcG9ydC5hdHRyaWJ1dGVzID0gYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0XHRlbC5jbGFzc05hbWUgPSBcImlcIjtcblx0XHRyZXR1cm4gIWVsLmdldEF0dHJpYnV0ZShcImNsYXNzTmFtZVwiKTtcblx0fSk7XG5cblx0LyogZ2V0RWxlbWVudChzKUJ5KlxuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gQ2hlY2sgaWYgZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpIHJldHVybnMgb25seSBlbGVtZW50c1xuXHRzdXBwb3J0LmdldEVsZW1lbnRzQnlUYWdOYW1lID0gYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0XHRlbC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlQ29tbWVudChcIlwiKSApO1xuXHRcdHJldHVybiAhZWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpLmxlbmd0aDtcblx0fSk7XG5cblx0Ly8gU3VwcG9ydDogSUU8OVxuXHRzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPSBybmF0aXZlLnRlc3QoIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgKTtcblxuXHQvLyBTdXBwb3J0OiBJRTwxMFxuXHQvLyBDaGVjayBpZiBnZXRFbGVtZW50QnlJZCByZXR1cm5zIGVsZW1lbnRzIGJ5IG5hbWVcblx0Ly8gVGhlIGJyb2tlbiBnZXRFbGVtZW50QnlJZCBtZXRob2RzIGRvbid0IHBpY2sgdXAgcHJvZ3JhbW1hdGljYWxseS1zZXQgbmFtZXMsXG5cdC8vIHNvIHVzZSBhIHJvdW5kYWJvdXQgZ2V0RWxlbWVudHNCeU5hbWUgdGVzdFxuXHRzdXBwb3J0LmdldEJ5SWQgPSBhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGVsICkuaWQgPSBleHBhbmRvO1xuXHRcdHJldHVybiAhZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUgfHwgIWRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCBleHBhbmRvICkubGVuZ3RoO1xuXHR9KTtcblxuXHQvLyBJRCBmaWx0ZXIgYW5kIGZpbmRcblx0aWYgKCBzdXBwb3J0LmdldEJ5SWQgKSB7XG5cdFx0RXhwci5maWx0ZXJbXCJJRFwiXSA9IGZ1bmN0aW9uKCBpZCApIHtcblx0XHRcdHZhciBhdHRySWQgPSBpZC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoXCJpZFwiKSA9PT0gYXR0cklkO1xuXHRcdFx0fTtcblx0XHR9O1xuXHRcdEV4cHIuZmluZFtcIklEXCJdID0gZnVuY3Rpb24oIGlkLCBjb250ZXh0ICkge1xuXHRcdFx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50QnlJZCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkb2N1bWVudElzSFRNTCApIHtcblx0XHRcdFx0dmFyIGVsZW0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBpZCApO1xuXHRcdFx0XHRyZXR1cm4gZWxlbSA/IFsgZWxlbSBdIDogW107XG5cdFx0XHR9XG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHRFeHByLmZpbHRlcltcIklEXCJdID0gIGZ1bmN0aW9uKCBpZCApIHtcblx0XHRcdHZhciBhdHRySWQgPSBpZC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgbm9kZSA9IHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZU5vZGUgIT09IFwidW5kZWZpbmVkXCIgJiZcblx0XHRcdFx0XHRlbGVtLmdldEF0dHJpYnV0ZU5vZGUoXCJpZFwiKTtcblx0XHRcdFx0cmV0dXJuIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gYXR0cklkO1xuXHRcdFx0fTtcblx0XHR9O1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgNiAtIDcgb25seVxuXHRcdC8vIGdldEVsZW1lbnRCeUlkIGlzIG5vdCByZWxpYWJsZSBhcyBhIGZpbmQgc2hvcnRjdXRcblx0XHRFeHByLmZpbmRbXCJJRFwiXSA9IGZ1bmN0aW9uKCBpZCwgY29udGV4dCApIHtcblx0XHRcdGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQgIT09IFwidW5kZWZpbmVkXCIgJiYgZG9jdW1lbnRJc0hUTUwgKSB7XG5cdFx0XHRcdHZhciBub2RlLCBpLCBlbGVtcyxcblx0XHRcdFx0XHRlbGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggaWQgKTtcblxuXHRcdFx0XHRpZiAoIGVsZW0gKSB7XG5cblx0XHRcdFx0XHQvLyBWZXJpZnkgdGhlIGlkIGF0dHJpYnV0ZVxuXHRcdFx0XHRcdG5vZGUgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoXCJpZFwiKTtcblx0XHRcdFx0XHRpZiAoIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gaWQgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gWyBlbGVtIF07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gRmFsbCBiYWNrIG9uIGdldEVsZW1lbnRzQnlOYW1lXG5cdFx0XHRcdFx0ZWxlbXMgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlOYW1lKCBpZCApO1xuXHRcdFx0XHRcdGkgPSAwO1xuXHRcdFx0XHRcdHdoaWxlICggKGVsZW0gPSBlbGVtc1tpKytdKSApIHtcblx0XHRcdFx0XHRcdG5vZGUgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoXCJpZFwiKTtcblx0XHRcdFx0XHRcdGlmICggbm9kZSAmJiBub2RlLnZhbHVlID09PSBpZCApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIFsgZWxlbSBdO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiBbXTtcblx0XHRcdH1cblx0XHR9O1xuXHR9XG5cblx0Ly8gVGFnXG5cdEV4cHIuZmluZFtcIlRBR1wiXSA9IHN1cHBvcnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgP1xuXHRcdGZ1bmN0aW9uKCB0YWcsIGNvbnRleHQgKSB7XG5cdFx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSBcInVuZGVmaW5lZFwiICkge1xuXHRcdFx0XHRyZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnICk7XG5cblx0XHRcdC8vIERvY3VtZW50RnJhZ21lbnQgbm9kZXMgZG9uJ3QgaGF2ZSBnRUJUTlxuXHRcdFx0fSBlbHNlIGlmICggc3VwcG9ydC5xc2EgKSB7XG5cdFx0XHRcdHJldHVybiBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIHRhZyApO1xuXHRcdFx0fVxuXHRcdH0gOlxuXG5cdFx0ZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHtcblx0XHRcdHZhciBlbGVtLFxuXHRcdFx0XHR0bXAgPSBbXSxcblx0XHRcdFx0aSA9IDAsXG5cdFx0XHRcdC8vIEJ5IGhhcHB5IGNvaW5jaWRlbmNlLCBhIChicm9rZW4pIGdFQlROIGFwcGVhcnMgb24gRG9jdW1lbnRGcmFnbWVudCBub2RlcyB0b29cblx0XHRcdFx0cmVzdWx0cyA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApO1xuXG5cdFx0XHQvLyBGaWx0ZXIgb3V0IHBvc3NpYmxlIGNvbW1lbnRzXG5cdFx0XHRpZiAoIHRhZyA9PT0gXCIqXCIgKSB7XG5cdFx0XHRcdHdoaWxlICggKGVsZW0gPSByZXN1bHRzW2krK10pICkge1xuXHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdFx0XHRcdHRtcC5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHRtcDtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdH07XG5cblx0Ly8gQ2xhc3Ncblx0RXhwci5maW5kW1wiQ0xBU1NcIl0gPSBzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgJiYgZnVuY3Rpb24oIGNsYXNzTmFtZSwgY29udGV4dCApIHtcblx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgIT09IFwidW5kZWZpbmVkXCIgJiYgZG9jdW1lbnRJc0hUTUwgKSB7XG5cdFx0XHRyZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCBjbGFzc05hbWUgKTtcblx0XHR9XG5cdH07XG5cblx0LyogUVNBL21hdGNoZXNTZWxlY3RvclxuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gUVNBIGFuZCBtYXRjaGVzU2VsZWN0b3Igc3VwcG9ydFxuXG5cdC8vIG1hdGNoZXNTZWxlY3Rvcig6YWN0aXZlKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoSUU5L09wZXJhIDExLjUpXG5cdHJidWdneU1hdGNoZXMgPSBbXTtcblxuXHQvLyBxU2EoOmZvY3VzKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoQ2hyb21lIDIxKVxuXHQvLyBXZSBhbGxvdyB0aGlzIGJlY2F1c2Ugb2YgYSBidWcgaW4gSUU4LzkgdGhhdCB0aHJvd3MgYW4gZXJyb3Jcblx0Ly8gd2hlbmV2ZXIgYGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRgIGlzIGFjY2Vzc2VkIG9uIGFuIGlmcmFtZVxuXHQvLyBTbywgd2UgYWxsb3cgOmZvY3VzIHRvIHBhc3MgdGhyb3VnaCBRU0EgYWxsIHRoZSB0aW1lIHRvIGF2b2lkIHRoZSBJRSBlcnJvclxuXHQvLyBTZWUgaHR0cHM6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzEzMzc4XG5cdHJidWdneVFTQSA9IFtdO1xuXG5cdGlmICggKHN1cHBvcnQucXNhID0gcm5hdGl2ZS50ZXN0KCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsICkpICkge1xuXHRcdC8vIEJ1aWxkIFFTQSByZWdleFxuXHRcdC8vIFJlZ2V4IHN0cmF0ZWd5IGFkb3B0ZWQgZnJvbSBEaWVnbyBQZXJpbmlcblx0XHRhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRcdFx0Ly8gU2VsZWN0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcgb24gcHVycG9zZVxuXHRcdFx0Ly8gVGhpcyBpcyB0byB0ZXN0IElFJ3MgdHJlYXRtZW50IG9mIG5vdCBleHBsaWNpdGx5XG5cdFx0XHQvLyBzZXR0aW5nIGEgYm9vbGVhbiBjb250ZW50IGF0dHJpYnV0ZSxcblx0XHRcdC8vIHNpbmNlIGl0cyBwcmVzZW5jZSBzaG91bGQgYmUgZW5vdWdoXG5cdFx0XHQvLyBodHRwczovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIzNTlcblx0XHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGVsICkuaW5uZXJIVE1MID0gXCI8YSBpZD0nXCIgKyBleHBhbmRvICsgXCInPjwvYT5cIiArXG5cdFx0XHRcdFwiPHNlbGVjdCBpZD0nXCIgKyBleHBhbmRvICsgXCItXFxyXFxcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+XCIgK1xuXHRcdFx0XHRcIjxvcHRpb24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+XCI7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOCwgT3BlcmEgMTEtMTIuMTZcblx0XHRcdC8vIE5vdGhpbmcgc2hvdWxkIGJlIHNlbGVjdGVkIHdoZW4gZW1wdHkgc3RyaW5ncyBmb2xsb3cgXj0gb3IgJD0gb3IgKj1cblx0XHRcdC8vIFRoZSB0ZXN0IGF0dHJpYnV0ZSBtdXN0IGJlIHVua25vd24gaW4gT3BlcmEgYnV0IFwic2FmZVwiIGZvciBXaW5SVFxuXHRcdFx0Ly8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9oaDQ2NTM4OC5hc3B4I2F0dHJpYnV0ZV9zZWN0aW9uXG5cdFx0XHRpZiAoIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCJbbXNhbGxvd2NhcHR1cmVePScnXVwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIlsqXiRdPVwiICsgd2hpdGVzcGFjZSArIFwiKig/OicnfFxcXCJcXFwiKVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOFxuXHRcdFx0Ly8gQm9vbGVhbiBhdHRyaWJ1dGVzIGFuZCBcInZhbHVlXCIgYXJlIG5vdCB0cmVhdGVkIGNvcnJlY3RseVxuXHRcdFx0aWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbChcIltzZWxlY3RlZF1cIikubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCJcXFxcW1wiICsgd2hpdGVzcGFjZSArIFwiKig/OnZhbHVlfFwiICsgYm9vbGVhbnMgKyBcIilcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWU8MjksIEFuZHJvaWQ8NC40LCBTYWZhcmk8Ny4wKywgaU9TPDcuMCssIFBoYW50b21KUzwxLjkuOCtcblx0XHRcdGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiW2lkfj1cIiArIGV4cGFuZG8gKyBcIi1dXCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKFwifj1cIik7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFdlYmtpdC9PcGVyYSAtIDpjaGVja2VkIHNob3VsZCByZXR1cm4gc2VsZWN0ZWQgb3B0aW9uIGVsZW1lbnRzXG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hlY2tlZFxuXHRcdFx0Ly8gSUU4IHRocm93cyBlcnJvciBoZXJlIGFuZCB3aWxsIG5vdCBzZWUgbGF0ZXIgdGVzdHNcblx0XHRcdGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCI6Y2hlY2tlZFwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKFwiOmNoZWNrZWRcIik7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IFNhZmFyaSA4KywgaU9TIDgrXG5cdFx0XHQvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2ODUxXG5cdFx0XHQvLyBJbi1wYWdlIGBzZWxlY3RvciNpZCBzaWJsaW5nLWNvbWJpbmF0b3Igc2VsZWN0b3JgIGZhaWxzXG5cdFx0XHRpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKCBcImEjXCIgKyBleHBhbmRvICsgXCIrKlwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaChcIi4jLitbK35dXCIpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0YXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0XHRcdGVsLmlubmVySFRNTCA9IFwiPGEgaHJlZj0nJyBkaXNhYmxlZD0nZGlzYWJsZWQnPjwvYT5cIiArXG5cdFx0XHRcdFwiPHNlbGVjdCBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24vPjwvc2VsZWN0PlwiO1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBXaW5kb3dzIDggTmF0aXZlIEFwcHNcblx0XHRcdC8vIFRoZSB0eXBlIGFuZCBuYW1lIGF0dHJpYnV0ZXMgYXJlIHJlc3RyaWN0ZWQgZHVyaW5nIC5pbm5lckhUTUwgYXNzaWdubWVudFxuXHRcdFx0dmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO1xuXHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCBcInR5cGVcIiwgXCJoaWRkZW5cIiApO1xuXHRcdFx0ZWwuYXBwZW5kQ2hpbGQoIGlucHV0ICkuc2V0QXR0cmlidXRlKCBcIm5hbWVcIiwgXCJEXCIgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUU4XG5cdFx0XHQvLyBFbmZvcmNlIGNhc2Utc2Vuc2l0aXZpdHkgb2YgbmFtZSBhdHRyaWJ1dGVcblx0XHRcdGlmICggZWwucXVlcnlTZWxlY3RvckFsbChcIltuYW1lPWRdXCIpLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwibmFtZVwiICsgd2hpdGVzcGFjZSArIFwiKlsqXiR8IX5dPz1cIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBGRiAzLjUgLSA6ZW5hYmxlZC86ZGlzYWJsZWQgYW5kIGhpZGRlbiBlbGVtZW50cyAoaGlkZGVuIGVsZW1lbnRzIGFyZSBzdGlsbCBlbmFibGVkKVxuXHRcdFx0Ly8gSUU4IHRocm93cyBlcnJvciBoZXJlIGFuZCB3aWxsIG5vdCBzZWUgbGF0ZXIgdGVzdHNcblx0XHRcdGlmICggZWwucXVlcnlTZWxlY3RvckFsbChcIjplbmFibGVkXCIpLmxlbmd0aCAhPT0gMiApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiOmVuYWJsZWRcIiwgXCI6ZGlzYWJsZWRcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRTktMTErXG5cdFx0XHQvLyBJRSdzIDpkaXNhYmxlZCBzZWxlY3RvciBkb2VzIG5vdCBwaWNrIHVwIHRoZSBjaGlsZHJlbiBvZiBkaXNhYmxlZCBmaWVsZHNldHNcblx0XHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGVsICkuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0aWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKFwiOmRpc2FibGVkXCIpLmxlbmd0aCAhPT0gMiApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiOmVuYWJsZWRcIiwgXCI6ZGlzYWJsZWRcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBPcGVyYSAxMC0xMSBkb2VzIG5vdCB0aHJvdyBvbiBwb3N0LWNvbW1hIGludmFsaWQgcHNldWRvc1xuXHRcdFx0ZWwucXVlcnlTZWxlY3RvckFsbChcIiosOnhcIik7XG5cdFx0XHRyYnVnZ3lRU0EucHVzaChcIiwuKjpcIik7XG5cdFx0fSk7XG5cdH1cblxuXHRpZiAoIChzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciA9IHJuYXRpdmUudGVzdCggKG1hdGNoZXMgPSBkb2NFbGVtLm1hdGNoZXMgfHxcblx0XHRkb2NFbGVtLndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fFxuXHRcdGRvY0VsZW0ubW96TWF0Y2hlc1NlbGVjdG9yIHx8XG5cdFx0ZG9jRWxlbS5vTWF0Y2hlc1NlbGVjdG9yIHx8XG5cdFx0ZG9jRWxlbS5tc01hdGNoZXNTZWxlY3RvcikgKSkgKSB7XG5cblx0XHRhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRcdFx0Ly8gQ2hlY2sgdG8gc2VlIGlmIGl0J3MgcG9zc2libGUgdG8gZG8gbWF0Y2hlc1NlbGVjdG9yXG5cdFx0XHQvLyBvbiBhIGRpc2Nvbm5lY3RlZCBub2RlIChJRSA5KVxuXHRcdFx0c3VwcG9ydC5kaXNjb25uZWN0ZWRNYXRjaCA9IG1hdGNoZXMuY2FsbCggZWwsIFwiKlwiICk7XG5cblx0XHRcdC8vIFRoaXMgc2hvdWxkIGZhaWwgd2l0aCBhbiBleGNlcHRpb25cblx0XHRcdC8vIEdlY2tvIGRvZXMgbm90IGVycm9yLCByZXR1cm5zIGZhbHNlIGluc3RlYWRcblx0XHRcdG1hdGNoZXMuY2FsbCggZWwsIFwiW3MhPScnXTp4XCIgKTtcblx0XHRcdHJidWdneU1hdGNoZXMucHVzaCggXCIhPVwiLCBwc2V1ZG9zICk7XG5cdFx0fSk7XG5cdH1cblxuXHRyYnVnZ3lRU0EgPSByYnVnZ3lRU0EubGVuZ3RoICYmIG5ldyBSZWdFeHAoIHJidWdneVFTQS5qb2luKFwifFwiKSApO1xuXHRyYnVnZ3lNYXRjaGVzID0gcmJ1Z2d5TWF0Y2hlcy5sZW5ndGggJiYgbmV3IFJlZ0V4cCggcmJ1Z2d5TWF0Y2hlcy5qb2luKFwifFwiKSApO1xuXG5cdC8qIENvbnRhaW5zXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0aGFzQ29tcGFyZSA9IHJuYXRpdmUudGVzdCggZG9jRWxlbS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiApO1xuXG5cdC8vIEVsZW1lbnQgY29udGFpbnMgYW5vdGhlclxuXHQvLyBQdXJwb3NlZnVsbHkgc2VsZi1leGNsdXNpdmVcblx0Ly8gQXMgaW4sIGFuIGVsZW1lbnQgZG9lcyBub3QgY29udGFpbiBpdHNlbGZcblx0Y29udGFpbnMgPSBoYXNDb21wYXJlIHx8IHJuYXRpdmUudGVzdCggZG9jRWxlbS5jb250YWlucyApID9cblx0XHRmdW5jdGlvbiggYSwgYiApIHtcblx0XHRcdHZhciBhZG93biA9IGEubm9kZVR5cGUgPT09IDkgPyBhLmRvY3VtZW50RWxlbWVudCA6IGEsXG5cdFx0XHRcdGJ1cCA9IGIgJiYgYi5wYXJlbnROb2RlO1xuXHRcdFx0cmV0dXJuIGEgPT09IGJ1cCB8fCAhISggYnVwICYmIGJ1cC5ub2RlVHlwZSA9PT0gMSAmJiAoXG5cdFx0XHRcdGFkb3duLmNvbnRhaW5zID9cblx0XHRcdFx0XHRhZG93bi5jb250YWlucyggYnVwICkgOlxuXHRcdFx0XHRcdGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24gJiYgYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYnVwICkgJiAxNlxuXHRcdFx0KSk7XG5cdFx0fSA6XG5cdFx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0XHRpZiAoIGIgKSB7XG5cdFx0XHRcdHdoaWxlICggKGIgPSBiLnBhcmVudE5vZGUpICkge1xuXHRcdFx0XHRcdGlmICggYiA9PT0gYSApIHtcblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH07XG5cblx0LyogU29ydGluZ1xuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gRG9jdW1lbnQgb3JkZXIgc29ydGluZ1xuXHRzb3J0T3JkZXIgPSBoYXNDb21wYXJlID9cblx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cblx0XHQvLyBGbGFnIGZvciBkdXBsaWNhdGUgcmVtb3ZhbFxuXHRcdGlmICggYSA9PT0gYiApIHtcblx0XHRcdGhhc0R1cGxpY2F0ZSA9IHRydWU7XG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHQvLyBTb3J0IG9uIG1ldGhvZCBleGlzdGVuY2UgaWYgb25seSBvbmUgaW5wdXQgaGFzIGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uXG5cdFx0dmFyIGNvbXBhcmUgPSAhYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAtICFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO1xuXHRcdGlmICggY29tcGFyZSApIHtcblx0XHRcdHJldHVybiBjb21wYXJlO1xuXHRcdH1cblxuXHRcdC8vIENhbGN1bGF0ZSBwb3NpdGlvbiBpZiBib3RoIGlucHV0cyBiZWxvbmcgdG8gdGhlIHNhbWUgZG9jdW1lbnRcblx0XHRjb21wYXJlID0gKCBhLm93bmVyRG9jdW1lbnQgfHwgYSApID09PSAoIGIub3duZXJEb2N1bWVudCB8fCBiICkgP1xuXHRcdFx0YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYiApIDpcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIHdlIGtub3cgdGhleSBhcmUgZGlzY29ubmVjdGVkXG5cdFx0XHQxO1xuXG5cdFx0Ly8gRGlzY29ubmVjdGVkIG5vZGVzXG5cdFx0aWYgKCBjb21wYXJlICYgMSB8fFxuXHRcdFx0KCFzdXBwb3J0LnNvcnREZXRhY2hlZCAmJiBiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBhICkgPT09IGNvbXBhcmUpICkge1xuXG5cdFx0XHQvLyBDaG9vc2UgdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBpcyByZWxhdGVkIHRvIG91ciBwcmVmZXJyZWQgZG9jdW1lbnRcblx0XHRcdGlmICggYSA9PT0gZG9jdW1lbnQgfHwgYS5vd25lckRvY3VtZW50ID09PSBwcmVmZXJyZWREb2MgJiYgY29udGFpbnMocHJlZmVycmVkRG9jLCBhKSApIHtcblx0XHRcdFx0cmV0dXJuIC0xO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBiID09PSBkb2N1bWVudCB8fCBiLm93bmVyRG9jdW1lbnQgPT09IHByZWZlcnJlZERvYyAmJiBjb250YWlucyhwcmVmZXJyZWREb2MsIGIpICkge1xuXHRcdFx0XHRyZXR1cm4gMTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTWFpbnRhaW4gb3JpZ2luYWwgb3JkZXJcblx0XHRcdHJldHVybiBzb3J0SW5wdXQgP1xuXHRcdFx0XHQoIGluZGV4T2YoIHNvcnRJbnB1dCwgYSApIC0gaW5kZXhPZiggc29ydElucHV0LCBiICkgKSA6XG5cdFx0XHRcdDA7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNvbXBhcmUgJiA0ID8gLTEgOiAxO1xuXHR9IDpcblx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0Ly8gRXhpdCBlYXJseSBpZiB0aGUgbm9kZXMgYXJlIGlkZW50aWNhbFxuXHRcdGlmICggYSA9PT0gYiApIHtcblx0XHRcdGhhc0R1cGxpY2F0ZSA9IHRydWU7XG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHR2YXIgY3VyLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRhdXAgPSBhLnBhcmVudE5vZGUsXG5cdFx0XHRidXAgPSBiLnBhcmVudE5vZGUsXG5cdFx0XHRhcCA9IFsgYSBdLFxuXHRcdFx0YnAgPSBbIGIgXTtcblxuXHRcdC8vIFBhcmVudGxlc3Mgbm9kZXMgYXJlIGVpdGhlciBkb2N1bWVudHMgb3IgZGlzY29ubmVjdGVkXG5cdFx0aWYgKCAhYXVwIHx8ICFidXAgKSB7XG5cdFx0XHRyZXR1cm4gYSA9PT0gZG9jdW1lbnQgPyAtMSA6XG5cdFx0XHRcdGIgPT09IGRvY3VtZW50ID8gMSA6XG5cdFx0XHRcdGF1cCA/IC0xIDpcblx0XHRcdFx0YnVwID8gMSA6XG5cdFx0XHRcdHNvcnRJbnB1dCA/XG5cdFx0XHRcdCggaW5kZXhPZiggc29ydElucHV0LCBhICkgLSBpbmRleE9mKCBzb3J0SW5wdXQsIGIgKSApIDpcblx0XHRcdFx0MDtcblxuXHRcdC8vIElmIHRoZSBub2RlcyBhcmUgc2libGluZ3MsIHdlIGNhbiBkbyBhIHF1aWNrIGNoZWNrXG5cdFx0fSBlbHNlIGlmICggYXVwID09PSBidXAgKSB7XG5cdFx0XHRyZXR1cm4gc2libGluZ0NoZWNrKCBhLCBiICk7XG5cdFx0fVxuXG5cdFx0Ly8gT3RoZXJ3aXNlIHdlIG5lZWQgZnVsbCBsaXN0cyBvZiB0aGVpciBhbmNlc3RvcnMgZm9yIGNvbXBhcmlzb25cblx0XHRjdXIgPSBhO1xuXHRcdHdoaWxlICggKGN1ciA9IGN1ci5wYXJlbnROb2RlKSApIHtcblx0XHRcdGFwLnVuc2hpZnQoIGN1ciApO1xuXHRcdH1cblx0XHRjdXIgPSBiO1xuXHRcdHdoaWxlICggKGN1ciA9IGN1ci5wYXJlbnROb2RlKSApIHtcblx0XHRcdGJwLnVuc2hpZnQoIGN1ciApO1xuXHRcdH1cblxuXHRcdC8vIFdhbGsgZG93biB0aGUgdHJlZSBsb29raW5nIGZvciBhIGRpc2NyZXBhbmN5XG5cdFx0d2hpbGUgKCBhcFtpXSA9PT0gYnBbaV0gKSB7XG5cdFx0XHRpKys7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGkgP1xuXHRcdFx0Ly8gRG8gYSBzaWJsaW5nIGNoZWNrIGlmIHRoZSBub2RlcyBoYXZlIGEgY29tbW9uIGFuY2VzdG9yXG5cdFx0XHRzaWJsaW5nQ2hlY2soIGFwW2ldLCBicFtpXSApIDpcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIG5vZGVzIGluIG91ciBkb2N1bWVudCBzb3J0IGZpcnN0XG5cdFx0XHRhcFtpXSA9PT0gcHJlZmVycmVkRG9jID8gLTEgOlxuXHRcdFx0YnBbaV0gPT09IHByZWZlcnJlZERvYyA/IDEgOlxuXHRcdFx0MDtcblx0fTtcblxuXHRyZXR1cm4gZG9jdW1lbnQ7XG59O1xuXG5TaXp6bGUubWF0Y2hlcyA9IGZ1bmN0aW9uKCBleHByLCBlbGVtZW50cyApIHtcblx0cmV0dXJuIFNpenpsZSggZXhwciwgbnVsbCwgbnVsbCwgZWxlbWVudHMgKTtcbn07XG5cblNpenpsZS5tYXRjaGVzU2VsZWN0b3IgPSBmdW5jdGlvbiggZWxlbSwgZXhwciApIHtcblx0Ly8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVlZGVkXG5cdGlmICggKCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxlbSApICE9PSBkb2N1bWVudCApIHtcblx0XHRzZXREb2N1bWVudCggZWxlbSApO1xuXHR9XG5cblx0Ly8gTWFrZSBzdXJlIHRoYXQgYXR0cmlidXRlIHNlbGVjdG9ycyBhcmUgcXVvdGVkXG5cdGV4cHIgPSBleHByLnJlcGxhY2UoIHJhdHRyaWJ1dGVRdW90ZXMsIFwiPSckMSddXCIgKTtcblxuXHRpZiAoIHN1cHBvcnQubWF0Y2hlc1NlbGVjdG9yICYmIGRvY3VtZW50SXNIVE1MICYmXG5cdFx0IWNvbXBpbGVyQ2FjaGVbIGV4cHIgKyBcIiBcIiBdICYmXG5cdFx0KCAhcmJ1Z2d5TWF0Y2hlcyB8fCAhcmJ1Z2d5TWF0Y2hlcy50ZXN0KCBleHByICkgKSAmJlxuXHRcdCggIXJidWdneVFTQSAgICAgfHwgIXJidWdneVFTQS50ZXN0KCBleHByICkgKSApIHtcblxuXHRcdHRyeSB7XG5cdFx0XHR2YXIgcmV0ID0gbWF0Y2hlcy5jYWxsKCBlbGVtLCBleHByICk7XG5cblx0XHRcdC8vIElFIDkncyBtYXRjaGVzU2VsZWN0b3IgcmV0dXJucyBmYWxzZSBvbiBkaXNjb25uZWN0ZWQgbm9kZXNcblx0XHRcdGlmICggcmV0IHx8IHN1cHBvcnQuZGlzY29ubmVjdGVkTWF0Y2ggfHxcblx0XHRcdFx0XHQvLyBBcyB3ZWxsLCBkaXNjb25uZWN0ZWQgbm9kZXMgYXJlIHNhaWQgdG8gYmUgaW4gYSBkb2N1bWVudFxuXHRcdFx0XHRcdC8vIGZyYWdtZW50IGluIElFIDlcblx0XHRcdFx0XHRlbGVtLmRvY3VtZW50ICYmIGVsZW0uZG9jdW1lbnQubm9kZVR5cGUgIT09IDExICkge1xuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGUpIHt9XG5cdH1cblxuXHRyZXR1cm4gU2l6emxlKCBleHByLCBkb2N1bWVudCwgbnVsbCwgWyBlbGVtIF0gKS5sZW5ndGggPiAwO1xufTtcblxuU2l6emxlLmNvbnRhaW5zID0gZnVuY3Rpb24oIGNvbnRleHQsIGVsZW0gKSB7XG5cdC8vIFNldCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZFxuXHRpZiAoICggY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgKSAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0c2V0RG9jdW1lbnQoIGNvbnRleHQgKTtcblx0fVxuXHRyZXR1cm4gY29udGFpbnMoIGNvbnRleHQsIGVsZW0gKTtcbn07XG5cblNpenpsZS5hdHRyID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7XG5cdC8vIFNldCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZFxuXHRpZiAoICggZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0gKSAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0c2V0RG9jdW1lbnQoIGVsZW0gKTtcblx0fVxuXG5cdHZhciBmbiA9IEV4cHIuYXR0ckhhbmRsZVsgbmFtZS50b0xvd2VyQ2FzZSgpIF0sXG5cdFx0Ly8gRG9uJ3QgZ2V0IGZvb2xlZCBieSBPYmplY3QucHJvdG90eXBlIHByb3BlcnRpZXMgKGpRdWVyeSAjMTM4MDcpXG5cdFx0dmFsID0gZm4gJiYgaGFzT3duLmNhbGwoIEV4cHIuYXR0ckhhbmRsZSwgbmFtZS50b0xvd2VyQ2FzZSgpICkgP1xuXHRcdFx0Zm4oIGVsZW0sIG5hbWUsICFkb2N1bWVudElzSFRNTCApIDpcblx0XHRcdHVuZGVmaW5lZDtcblxuXHRyZXR1cm4gdmFsICE9PSB1bmRlZmluZWQgP1xuXHRcdHZhbCA6XG5cdFx0c3VwcG9ydC5hdHRyaWJ1dGVzIHx8ICFkb2N1bWVudElzSFRNTCA/XG5cdFx0XHRlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApIDpcblx0XHRcdCh2YWwgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUobmFtZSkpICYmIHZhbC5zcGVjaWZpZWQgP1xuXHRcdFx0XHR2YWwudmFsdWUgOlxuXHRcdFx0XHRudWxsO1xufTtcblxuU2l6emxlLmVzY2FwZSA9IGZ1bmN0aW9uKCBzZWwgKSB7XG5cdHJldHVybiAoc2VsICsgXCJcIikucmVwbGFjZSggcmNzc2VzY2FwZSwgZmNzc2VzY2FwZSApO1xufTtcblxuU2l6emxlLmVycm9yID0gZnVuY3Rpb24oIG1zZyApIHtcblx0dGhyb3cgbmV3IEVycm9yKCBcIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246IFwiICsgbXNnICk7XG59O1xuXG4vKipcbiAqIERvY3VtZW50IHNvcnRpbmcgYW5kIHJlbW92aW5nIGR1cGxpY2F0ZXNcbiAqIEBwYXJhbSB7QXJyYXlMaWtlfSByZXN1bHRzXG4gKi9cblNpenpsZS51bmlxdWVTb3J0ID0gZnVuY3Rpb24oIHJlc3VsdHMgKSB7XG5cdHZhciBlbGVtLFxuXHRcdGR1cGxpY2F0ZXMgPSBbXSxcblx0XHRqID0gMCxcblx0XHRpID0gMDtcblxuXHQvLyBVbmxlc3Mgd2UgKmtub3cqIHdlIGNhbiBkZXRlY3QgZHVwbGljYXRlcywgYXNzdW1lIHRoZWlyIHByZXNlbmNlXG5cdGhhc0R1cGxpY2F0ZSA9ICFzdXBwb3J0LmRldGVjdER1cGxpY2F0ZXM7XG5cdHNvcnRJbnB1dCA9ICFzdXBwb3J0LnNvcnRTdGFibGUgJiYgcmVzdWx0cy5zbGljZSggMCApO1xuXHRyZXN1bHRzLnNvcnQoIHNvcnRPcmRlciApO1xuXG5cdGlmICggaGFzRHVwbGljYXRlICkge1xuXHRcdHdoaWxlICggKGVsZW0gPSByZXN1bHRzW2krK10pICkge1xuXHRcdFx0aWYgKCBlbGVtID09PSByZXN1bHRzWyBpIF0gKSB7XG5cdFx0XHRcdGogPSBkdXBsaWNhdGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0d2hpbGUgKCBqLS0gKSB7XG5cdFx0XHRyZXN1bHRzLnNwbGljZSggZHVwbGljYXRlc1sgaiBdLCAxICk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ2xlYXIgaW5wdXQgYWZ0ZXIgc29ydGluZyB0byByZWxlYXNlIG9iamVjdHNcblx0Ly8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvc2l6emxlL3B1bGwvMjI1XG5cdHNvcnRJbnB1dCA9IG51bGw7XG5cblx0cmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gZm9yIHJldHJpZXZpbmcgdGhlIHRleHQgdmFsdWUgb2YgYW4gYXJyYXkgb2YgRE9NIG5vZGVzXG4gKiBAcGFyYW0ge0FycmF5fEVsZW1lbnR9IGVsZW1cbiAqL1xuZ2V0VGV4dCA9IFNpenpsZS5nZXRUZXh0ID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdHZhciBub2RlLFxuXHRcdHJldCA9IFwiXCIsXG5cdFx0aSA9IDAsXG5cdFx0bm9kZVR5cGUgPSBlbGVtLm5vZGVUeXBlO1xuXG5cdGlmICggIW5vZGVUeXBlICkge1xuXHRcdC8vIElmIG5vIG5vZGVUeXBlLCB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIGFuIGFycmF5XG5cdFx0d2hpbGUgKCAobm9kZSA9IGVsZW1baSsrXSkgKSB7XG5cdFx0XHQvLyBEbyBub3QgdHJhdmVyc2UgY29tbWVudCBub2Rlc1xuXHRcdFx0cmV0ICs9IGdldFRleHQoIG5vZGUgKTtcblx0XHR9XG5cdH0gZWxzZSBpZiAoIG5vZGVUeXBlID09PSAxIHx8IG5vZGVUeXBlID09PSA5IHx8IG5vZGVUeXBlID09PSAxMSApIHtcblx0XHQvLyBVc2UgdGV4dENvbnRlbnQgZm9yIGVsZW1lbnRzXG5cdFx0Ly8gaW5uZXJUZXh0IHVzYWdlIHJlbW92ZWQgZm9yIGNvbnNpc3RlbmN5IG9mIG5ldyBsaW5lcyAoalF1ZXJ5ICMxMTE1Mylcblx0XHRpZiAoIHR5cGVvZiBlbGVtLnRleHRDb250ZW50ID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIGVsZW0udGV4dENvbnRlbnQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFRyYXZlcnNlIGl0cyBjaGlsZHJlblxuXHRcdFx0Zm9yICggZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsgZWxlbTsgZWxlbSA9IGVsZW0ubmV4dFNpYmxpbmcgKSB7XG5cdFx0XHRcdHJldCArPSBnZXRUZXh0KCBlbGVtICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGVsc2UgaWYgKCBub2RlVHlwZSA9PT0gMyB8fCBub2RlVHlwZSA9PT0gNCApIHtcblx0XHRyZXR1cm4gZWxlbS5ub2RlVmFsdWU7XG5cdH1cblx0Ly8gRG8gbm90IGluY2x1ZGUgY29tbWVudCBvciBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGVzXG5cblx0cmV0dXJuIHJldDtcbn07XG5cbkV4cHIgPSBTaXp6bGUuc2VsZWN0b3JzID0ge1xuXG5cdC8vIENhbiBiZSBhZGp1c3RlZCBieSB0aGUgdXNlclxuXHRjYWNoZUxlbmd0aDogNTAsXG5cblx0Y3JlYXRlUHNldWRvOiBtYXJrRnVuY3Rpb24sXG5cblx0bWF0Y2g6IG1hdGNoRXhwcixcblxuXHRhdHRySGFuZGxlOiB7fSxcblxuXHRmaW5kOiB7fSxcblxuXHRyZWxhdGl2ZToge1xuXHRcdFwiPlwiOiB7IGRpcjogXCJwYXJlbnROb2RlXCIsIGZpcnN0OiB0cnVlIH0sXG5cdFx0XCIgXCI6IHsgZGlyOiBcInBhcmVudE5vZGVcIiB9LFxuXHRcdFwiK1wiOiB7IGRpcjogXCJwcmV2aW91c1NpYmxpbmdcIiwgZmlyc3Q6IHRydWUgfSxcblx0XHRcIn5cIjogeyBkaXI6IFwicHJldmlvdXNTaWJsaW5nXCIgfVxuXHR9LFxuXG5cdHByZUZpbHRlcjoge1xuXHRcdFwiQVRUUlwiOiBmdW5jdGlvbiggbWF0Y2ggKSB7XG5cdFx0XHRtYXRjaFsxXSA9IG1hdGNoWzFdLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cblx0XHRcdC8vIE1vdmUgdGhlIGdpdmVuIHZhbHVlIHRvIG1hdGNoWzNdIHdoZXRoZXIgcXVvdGVkIG9yIHVucXVvdGVkXG5cdFx0XHRtYXRjaFszXSA9ICggbWF0Y2hbM10gfHwgbWF0Y2hbNF0gfHwgbWF0Y2hbNV0gfHwgXCJcIiApLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cblx0XHRcdGlmICggbWF0Y2hbMl0gPT09IFwifj1cIiApIHtcblx0XHRcdFx0bWF0Y2hbM10gPSBcIiBcIiArIG1hdGNoWzNdICsgXCIgXCI7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBtYXRjaC5zbGljZSggMCwgNCApO1xuXHRcdH0sXG5cblx0XHRcIkNISUxEXCI6IGZ1bmN0aW9uKCBtYXRjaCApIHtcblx0XHRcdC8qIG1hdGNoZXMgZnJvbSBtYXRjaEV4cHJbXCJDSElMRFwiXVxuXHRcdFx0XHQxIHR5cGUgKG9ubHl8bnRofC4uLilcblx0XHRcdFx0MiB3aGF0IChjaGlsZHxvZi10eXBlKVxuXHRcdFx0XHQzIGFyZ3VtZW50IChldmVufG9kZHxcXGQqfFxcZCpuKFsrLV1cXGQrKT98Li4uKVxuXHRcdFx0XHQ0IHhuLWNvbXBvbmVudCBvZiB4bit5IGFyZ3VtZW50IChbKy1dP1xcZCpufClcblx0XHRcdFx0NSBzaWduIG9mIHhuLWNvbXBvbmVudFxuXHRcdFx0XHQ2IHggb2YgeG4tY29tcG9uZW50XG5cdFx0XHRcdDcgc2lnbiBvZiB5LWNvbXBvbmVudFxuXHRcdFx0XHQ4IHkgb2YgeS1jb21wb25lbnRcblx0XHRcdCovXG5cdFx0XHRtYXRjaFsxXSA9IG1hdGNoWzFdLnRvTG93ZXJDYXNlKCk7XG5cblx0XHRcdGlmICggbWF0Y2hbMV0uc2xpY2UoIDAsIDMgKSA9PT0gXCJudGhcIiApIHtcblx0XHRcdFx0Ly8gbnRoLSogcmVxdWlyZXMgYXJndW1lbnRcblx0XHRcdFx0aWYgKCAhbWF0Y2hbM10gKSB7XG5cdFx0XHRcdFx0U2l6emxlLmVycm9yKCBtYXRjaFswXSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gbnVtZXJpYyB4IGFuZCB5IHBhcmFtZXRlcnMgZm9yIEV4cHIuZmlsdGVyLkNISUxEXG5cdFx0XHRcdC8vIHJlbWVtYmVyIHRoYXQgZmFsc2UvdHJ1ZSBjYXN0IHJlc3BlY3RpdmVseSB0byAwLzFcblx0XHRcdFx0bWF0Y2hbNF0gPSArKCBtYXRjaFs0XSA/IG1hdGNoWzVdICsgKG1hdGNoWzZdIHx8IDEpIDogMiAqICggbWF0Y2hbM10gPT09IFwiZXZlblwiIHx8IG1hdGNoWzNdID09PSBcIm9kZFwiICkgKTtcblx0XHRcdFx0bWF0Y2hbNV0gPSArKCAoIG1hdGNoWzddICsgbWF0Y2hbOF0gKSB8fCBtYXRjaFszXSA9PT0gXCJvZGRcIiApO1xuXG5cdFx0XHQvLyBvdGhlciB0eXBlcyBwcm9oaWJpdCBhcmd1bWVudHNcblx0XHRcdH0gZWxzZSBpZiAoIG1hdGNoWzNdICkge1xuXHRcdFx0XHRTaXp6bGUuZXJyb3IoIG1hdGNoWzBdICk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBtYXRjaDtcblx0XHR9LFxuXG5cdFx0XCJQU0VVRE9cIjogZnVuY3Rpb24oIG1hdGNoICkge1xuXHRcdFx0dmFyIGV4Y2Vzcyxcblx0XHRcdFx0dW5xdW90ZWQgPSAhbWF0Y2hbNl0gJiYgbWF0Y2hbMl07XG5cblx0XHRcdGlmICggbWF0Y2hFeHByW1wiQ0hJTERcIl0udGVzdCggbWF0Y2hbMF0gKSApIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFjY2VwdCBxdW90ZWQgYXJndW1lbnRzIGFzLWlzXG5cdFx0XHRpZiAoIG1hdGNoWzNdICkge1xuXHRcdFx0XHRtYXRjaFsyXSA9IG1hdGNoWzRdIHx8IG1hdGNoWzVdIHx8IFwiXCI7XG5cblx0XHRcdC8vIFN0cmlwIGV4Y2VzcyBjaGFyYWN0ZXJzIGZyb20gdW5xdW90ZWQgYXJndW1lbnRzXG5cdFx0XHR9IGVsc2UgaWYgKCB1bnF1b3RlZCAmJiBycHNldWRvLnRlc3QoIHVucXVvdGVkICkgJiZcblx0XHRcdFx0Ly8gR2V0IGV4Y2VzcyBmcm9tIHRva2VuaXplIChyZWN1cnNpdmVseSlcblx0XHRcdFx0KGV4Y2VzcyA9IHRva2VuaXplKCB1bnF1b3RlZCwgdHJ1ZSApKSAmJlxuXHRcdFx0XHQvLyBhZHZhbmNlIHRvIHRoZSBuZXh0IGNsb3NpbmcgcGFyZW50aGVzaXNcblx0XHRcdFx0KGV4Y2VzcyA9IHVucXVvdGVkLmluZGV4T2YoIFwiKVwiLCB1bnF1b3RlZC5sZW5ndGggLSBleGNlc3MgKSAtIHVucXVvdGVkLmxlbmd0aCkgKSB7XG5cblx0XHRcdFx0Ly8gZXhjZXNzIGlzIGEgbmVnYXRpdmUgaW5kZXhcblx0XHRcdFx0bWF0Y2hbMF0gPSBtYXRjaFswXS5zbGljZSggMCwgZXhjZXNzICk7XG5cdFx0XHRcdG1hdGNoWzJdID0gdW5xdW90ZWQuc2xpY2UoIDAsIGV4Y2VzcyApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZXR1cm4gb25seSBjYXB0dXJlcyBuZWVkZWQgYnkgdGhlIHBzZXVkbyBmaWx0ZXIgbWV0aG9kICh0eXBlIGFuZCBhcmd1bWVudClcblx0XHRcdHJldHVybiBtYXRjaC5zbGljZSggMCwgMyApO1xuXHRcdH1cblx0fSxcblxuXHRmaWx0ZXI6IHtcblxuXHRcdFwiVEFHXCI6IGZ1bmN0aW9uKCBub2RlTmFtZVNlbGVjdG9yICkge1xuXHRcdFx0dmFyIG5vZGVOYW1lID0gbm9kZU5hbWVTZWxlY3Rvci5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gbm9kZU5hbWVTZWxlY3RvciA9PT0gXCIqXCIgP1xuXHRcdFx0XHRmdW5jdGlvbigpIHsgcmV0dXJuIHRydWU7IH0gOlxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRyZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5vZGVOYW1lO1xuXHRcdFx0XHR9O1xuXHRcdH0sXG5cblx0XHRcIkNMQVNTXCI6IGZ1bmN0aW9uKCBjbGFzc05hbWUgKSB7XG5cdFx0XHR2YXIgcGF0dGVybiA9IGNsYXNzQ2FjaGVbIGNsYXNzTmFtZSArIFwiIFwiIF07XG5cblx0XHRcdHJldHVybiBwYXR0ZXJuIHx8XG5cdFx0XHRcdChwYXR0ZXJuID0gbmV3IFJlZ0V4cCggXCIoXnxcIiArIHdoaXRlc3BhY2UgKyBcIilcIiArIGNsYXNzTmFtZSArIFwiKFwiICsgd2hpdGVzcGFjZSArIFwifCQpXCIgKSkgJiZcblx0XHRcdFx0Y2xhc3NDYWNoZSggY2xhc3NOYW1lLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRyZXR1cm4gcGF0dGVybi50ZXN0KCB0eXBlb2YgZWxlbS5jbGFzc05hbWUgPT09IFwic3RyaW5nXCIgJiYgZWxlbS5jbGFzc05hbWUgfHwgdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlICE9PSBcInVuZGVmaW5lZFwiICYmIGVsZW0uZ2V0QXR0cmlidXRlKFwiY2xhc3NcIikgfHwgXCJcIiApO1xuXHRcdFx0XHR9KTtcblx0XHR9LFxuXG5cdFx0XCJBVFRSXCI6IGZ1bmN0aW9uKCBuYW1lLCBvcGVyYXRvciwgY2hlY2sgKSB7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciByZXN1bHQgPSBTaXp6bGUuYXR0ciggZWxlbSwgbmFtZSApO1xuXG5cdFx0XHRcdGlmICggcmVzdWx0ID09IG51bGwgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9wZXJhdG9yID09PSBcIiE9XCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCAhb3BlcmF0b3IgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXN1bHQgKz0gXCJcIjtcblxuXHRcdFx0XHRyZXR1cm4gb3BlcmF0b3IgPT09IFwiPVwiID8gcmVzdWx0ID09PSBjaGVjayA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwiIT1cIiA/IHJlc3VsdCAhPT0gY2hlY2sgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIl49XCIgPyBjaGVjayAmJiByZXN1bHQuaW5kZXhPZiggY2hlY2sgKSA9PT0gMCA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwiKj1cIiA/IGNoZWNrICYmIHJlc3VsdC5pbmRleE9mKCBjaGVjayApID4gLTEgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIiQ9XCIgPyBjaGVjayAmJiByZXN1bHQuc2xpY2UoIC1jaGVjay5sZW5ndGggKSA9PT0gY2hlY2sgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIn49XCIgPyAoIFwiIFwiICsgcmVzdWx0LnJlcGxhY2UoIHJ3aGl0ZXNwYWNlLCBcIiBcIiApICsgXCIgXCIgKS5pbmRleE9mKCBjaGVjayApID4gLTEgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcInw9XCIgPyByZXN1bHQgPT09IGNoZWNrIHx8IHJlc3VsdC5zbGljZSggMCwgY2hlY2subGVuZ3RoICsgMSApID09PSBjaGVjayArIFwiLVwiIDpcblx0XHRcdFx0XHRmYWxzZTtcblx0XHRcdH07XG5cdFx0fSxcblxuXHRcdFwiQ0hJTERcIjogZnVuY3Rpb24oIHR5cGUsIHdoYXQsIGFyZ3VtZW50LCBmaXJzdCwgbGFzdCApIHtcblx0XHRcdHZhciBzaW1wbGUgPSB0eXBlLnNsaWNlKCAwLCAzICkgIT09IFwibnRoXCIsXG5cdFx0XHRcdGZvcndhcmQgPSB0eXBlLnNsaWNlKCAtNCApICE9PSBcImxhc3RcIixcblx0XHRcdFx0b2ZUeXBlID0gd2hhdCA9PT0gXCJvZi10eXBlXCI7XG5cblx0XHRcdHJldHVybiBmaXJzdCA9PT0gMSAmJiBsYXN0ID09PSAwID9cblxuXHRcdFx0XHQvLyBTaG9ydGN1dCBmb3IgOm50aC0qKG4pXG5cdFx0XHRcdGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRcdHJldHVybiAhIWVsZW0ucGFyZW50Tm9kZTtcblx0XHRcdFx0fSA6XG5cblx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdFx0XHR2YXIgY2FjaGUsIHVuaXF1ZUNhY2hlLCBvdXRlckNhY2hlLCBub2RlLCBub2RlSW5kZXgsIHN0YXJ0LFxuXHRcdFx0XHRcdFx0ZGlyID0gc2ltcGxlICE9PSBmb3J3YXJkID8gXCJuZXh0U2libGluZ1wiIDogXCJwcmV2aW91c1NpYmxpbmdcIixcblx0XHRcdFx0XHRcdHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZSxcblx0XHRcdFx0XHRcdG5hbWUgPSBvZlR5cGUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLFxuXHRcdFx0XHRcdFx0dXNlQ2FjaGUgPSAheG1sICYmICFvZlR5cGUsXG5cdFx0XHRcdFx0XHRkaWZmID0gZmFsc2U7XG5cblx0XHRcdFx0XHRpZiAoIHBhcmVudCApIHtcblxuXHRcdFx0XHRcdFx0Ly8gOihmaXJzdHxsYXN0fG9ubHkpLShjaGlsZHxvZi10eXBlKVxuXHRcdFx0XHRcdFx0aWYgKCBzaW1wbGUgKSB7XG5cdFx0XHRcdFx0XHRcdHdoaWxlICggZGlyICkge1xuXHRcdFx0XHRcdFx0XHRcdG5vZGUgPSBlbGVtO1xuXHRcdFx0XHRcdFx0XHRcdHdoaWxlICggKG5vZGUgPSBub2RlWyBkaXIgXSkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIG9mVHlwZSA/XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZSA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vZGUubm9kZVR5cGUgPT09IDEgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHQvLyBSZXZlcnNlIGRpcmVjdGlvbiBmb3IgOm9ubHktKiAoaWYgd2UgaGF2ZW4ndCB5ZXQgZG9uZSBzbylcblx0XHRcdFx0XHRcdFx0XHRzdGFydCA9IGRpciA9IHR5cGUgPT09IFwib25seVwiICYmICFzdGFydCAmJiBcIm5leHRTaWJsaW5nXCI7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHN0YXJ0ID0gWyBmb3J3YXJkID8gcGFyZW50LmZpcnN0Q2hpbGQgOiBwYXJlbnQubGFzdENoaWxkIF07XG5cblx0XHRcdFx0XHRcdC8vIG5vbi14bWwgOm50aC1jaGlsZCguLi4pIHN0b3JlcyBjYWNoZSBkYXRhIG9uIGBwYXJlbnRgXG5cdFx0XHRcdFx0XHRpZiAoIGZvcndhcmQgJiYgdXNlQ2FjaGUgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gU2VlayBgZWxlbWAgZnJvbSBhIHByZXZpb3VzbHktY2FjaGVkIGluZGV4XG5cblx0XHRcdFx0XHRcdFx0Ly8gLi4uaW4gYSBnemlwLWZyaWVuZGx5IHdheVxuXHRcdFx0XHRcdFx0XHRub2RlID0gcGFyZW50O1xuXHRcdFx0XHRcdFx0XHRvdXRlckNhY2hlID0gbm9kZVsgZXhwYW5kbyBdIHx8IChub2RlWyBleHBhbmRvIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPDkgb25seVxuXHRcdFx0XHRcdFx0XHQvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSlcblx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHxcblx0XHRcdFx0XHRcdFx0XHQob3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHRcdGNhY2hlID0gdW5pcXVlQ2FjaGVbIHR5cGUgXSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0bm9kZUluZGV4ID0gY2FjaGVbIDAgXSA9PT0gZGlycnVucyAmJiBjYWNoZVsgMSBdO1xuXHRcdFx0XHRcdFx0XHRkaWZmID0gbm9kZUluZGV4ICYmIGNhY2hlWyAyIF07XG5cdFx0XHRcdFx0XHRcdG5vZGUgPSBub2RlSW5kZXggJiYgcGFyZW50LmNoaWxkTm9kZXNbIG5vZGVJbmRleCBdO1xuXG5cdFx0XHRcdFx0XHRcdHdoaWxlICggKG5vZGUgPSArK25vZGVJbmRleCAmJiBub2RlICYmIG5vZGVbIGRpciBdIHx8XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBGYWxsYmFjayB0byBzZWVraW5nIGBlbGVtYCBmcm9tIHRoZSBzdGFydFxuXHRcdFx0XHRcdFx0XHRcdChkaWZmID0gbm9kZUluZGV4ID0gMCkgfHwgc3RhcnQucG9wKCkpICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gV2hlbiBmb3VuZCwgY2FjaGUgaW5kZXhlcyBvbiBgcGFyZW50YCBhbmQgYnJlYWtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIG5vZGUubm9kZVR5cGUgPT09IDEgJiYgKytkaWZmICYmIG5vZGUgPT09IGVsZW0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZVsgdHlwZSBdID0gWyBkaXJydW5zLCBub2RlSW5kZXgsIGRpZmYgXTtcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHQvLyBVc2UgcHJldmlvdXNseS1jYWNoZWQgZWxlbWVudCBpbmRleCBpZiBhdmFpbGFibGVcblx0XHRcdFx0XHRcdFx0aWYgKCB1c2VDYWNoZSApIHtcblx0XHRcdFx0XHRcdFx0XHQvLyAuLi5pbiBhIGd6aXAtZnJpZW5kbHkgd2F5XG5cdFx0XHRcdFx0XHRcdFx0bm9kZSA9IGVsZW07XG5cdFx0XHRcdFx0XHRcdFx0b3V0ZXJDYWNoZSA9IG5vZGVbIGV4cGFuZG8gXSB8fCAobm9kZVsgZXhwYW5kbyBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPDkgb25seVxuXHRcdFx0XHRcdFx0XHRcdC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KVxuXHRcdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHQob3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHRcdFx0Y2FjaGUgPSB1bmlxdWVDYWNoZVsgdHlwZSBdIHx8IFtdO1xuXHRcdFx0XHRcdFx0XHRcdG5vZGVJbmRleCA9IGNhY2hlWyAwIF0gPT09IGRpcnJ1bnMgJiYgY2FjaGVbIDEgXTtcblx0XHRcdFx0XHRcdFx0XHRkaWZmID0gbm9kZUluZGV4O1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Ly8geG1sIDpudGgtY2hpbGQoLi4uKVxuXHRcdFx0XHRcdFx0XHQvLyBvciA6bnRoLWxhc3QtY2hpbGQoLi4uKSBvciA6bnRoKC1sYXN0KT8tb2YtdHlwZSguLi4pXG5cdFx0XHRcdFx0XHRcdGlmICggZGlmZiA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gVXNlIHRoZSBzYW1lIGxvb3AgYXMgYWJvdmUgdG8gc2VlayBgZWxlbWAgZnJvbSB0aGUgc3RhcnRcblx0XHRcdFx0XHRcdFx0XHR3aGlsZSAoIChub2RlID0gKytub2RlSW5kZXggJiYgbm9kZSAmJiBub2RlWyBkaXIgXSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0KGRpZmYgPSBub2RlSW5kZXggPSAwKSB8fCBzdGFydC5wb3AoKSkgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdGlmICggKCBvZlR5cGUgP1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUgOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRub2RlLm5vZGVUeXBlID09PSAxICkgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0KytkaWZmICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIENhY2hlIHRoZSBpbmRleCBvZiBlYWNoIGVuY291bnRlcmVkIGVsZW1lbnRcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCB1c2VDYWNoZSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvdXRlckNhY2hlID0gbm9kZVsgZXhwYW5kbyBdIHx8IChub2RlWyBleHBhbmRvIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8OSBvbmx5XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gRGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZVsgdHlwZSBdID0gWyBkaXJydW5zLCBkaWZmIF07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIG5vZGUgPT09IGVsZW0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gSW5jb3Jwb3JhdGUgdGhlIG9mZnNldCwgdGhlbiBjaGVjayBhZ2FpbnN0IGN5Y2xlIHNpemVcblx0XHRcdFx0XHRcdGRpZmYgLT0gbGFzdDtcblx0XHRcdFx0XHRcdHJldHVybiBkaWZmID09PSBmaXJzdCB8fCAoIGRpZmYgJSBmaXJzdCA9PT0gMCAmJiBkaWZmIC8gZmlyc3QgPj0gMCApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHR9LFxuXG5cdFx0XCJQU0VVRE9cIjogZnVuY3Rpb24oIHBzZXVkbywgYXJndW1lbnQgKSB7XG5cdFx0XHQvLyBwc2V1ZG8tY2xhc3MgbmFtZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmVcblx0XHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jcHNldWRvLWNsYXNzZXNcblx0XHRcdC8vIFByaW9yaXRpemUgYnkgY2FzZSBzZW5zaXRpdml0eSBpbiBjYXNlIGN1c3RvbSBwc2V1ZG9zIGFyZSBhZGRlZCB3aXRoIHVwcGVyY2FzZSBsZXR0ZXJzXG5cdFx0XHQvLyBSZW1lbWJlciB0aGF0IHNldEZpbHRlcnMgaW5oZXJpdHMgZnJvbSBwc2V1ZG9zXG5cdFx0XHR2YXIgYXJncyxcblx0XHRcdFx0Zm4gPSBFeHByLnBzZXVkb3NbIHBzZXVkbyBdIHx8IEV4cHIuc2V0RmlsdGVyc1sgcHNldWRvLnRvTG93ZXJDYXNlKCkgXSB8fFxuXHRcdFx0XHRcdFNpenpsZS5lcnJvciggXCJ1bnN1cHBvcnRlZCBwc2V1ZG86IFwiICsgcHNldWRvICk7XG5cblx0XHRcdC8vIFRoZSB1c2VyIG1heSB1c2UgY3JlYXRlUHNldWRvIHRvIGluZGljYXRlIHRoYXRcblx0XHRcdC8vIGFyZ3VtZW50cyBhcmUgbmVlZGVkIHRvIGNyZWF0ZSB0aGUgZmlsdGVyIGZ1bmN0aW9uXG5cdFx0XHQvLyBqdXN0IGFzIFNpenpsZSBkb2VzXG5cdFx0XHRpZiAoIGZuWyBleHBhbmRvIF0gKSB7XG5cdFx0XHRcdHJldHVybiBmbiggYXJndW1lbnQgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQnV0IG1haW50YWluIHN1cHBvcnQgZm9yIG9sZCBzaWduYXR1cmVzXG5cdFx0XHRpZiAoIGZuLmxlbmd0aCA+IDEgKSB7XG5cdFx0XHRcdGFyZ3MgPSBbIHBzZXVkbywgcHNldWRvLCBcIlwiLCBhcmd1bWVudCBdO1xuXHRcdFx0XHRyZXR1cm4gRXhwci5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KCBwc2V1ZG8udG9Mb3dlckNhc2UoKSApID9cblx0XHRcdFx0XHRtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMgKSB7XG5cdFx0XHRcdFx0XHR2YXIgaWR4LFxuXHRcdFx0XHRcdFx0XHRtYXRjaGVkID0gZm4oIHNlZWQsIGFyZ3VtZW50ICksXG5cdFx0XHRcdFx0XHRcdGkgPSBtYXRjaGVkLmxlbmd0aDtcblx0XHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0XHRpZHggPSBpbmRleE9mKCBzZWVkLCBtYXRjaGVkW2ldICk7XG5cdFx0XHRcdFx0XHRcdHNlZWRbIGlkeCBdID0gISggbWF0Y2hlc1sgaWR4IF0gPSBtYXRjaGVkW2ldICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSkgOlxuXHRcdFx0XHRcdGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZuKCBlbGVtLCAwLCBhcmdzICk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGZuO1xuXHRcdH1cblx0fSxcblxuXHRwc2V1ZG9zOiB7XG5cdFx0Ly8gUG90ZW50aWFsbHkgY29tcGxleCBwc2V1ZG9zXG5cdFx0XCJub3RcIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRcdC8vIFRyaW0gdGhlIHNlbGVjdG9yIHBhc3NlZCB0byBjb21waWxlXG5cdFx0XHQvLyB0byBhdm9pZCB0cmVhdGluZyBsZWFkaW5nIGFuZCB0cmFpbGluZ1xuXHRcdFx0Ly8gc3BhY2VzIGFzIGNvbWJpbmF0b3JzXG5cdFx0XHR2YXIgaW5wdXQgPSBbXSxcblx0XHRcdFx0cmVzdWx0cyA9IFtdLFxuXHRcdFx0XHRtYXRjaGVyID0gY29tcGlsZSggc2VsZWN0b3IucmVwbGFjZSggcnRyaW0sIFwiJDFcIiApICk7XG5cblx0XHRcdHJldHVybiBtYXRjaGVyWyBleHBhbmRvIF0gP1xuXHRcdFx0XHRtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMsIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdFx0XHR2YXIgZWxlbSxcblx0XHRcdFx0XHRcdHVubWF0Y2hlZCA9IG1hdGNoZXIoIHNlZWQsIG51bGwsIHhtbCwgW10gKSxcblx0XHRcdFx0XHRcdGkgPSBzZWVkLmxlbmd0aDtcblxuXHRcdFx0XHRcdC8vIE1hdGNoIGVsZW1lbnRzIHVubWF0Y2hlZCBieSBgbWF0Y2hlcmBcblx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdGlmICggKGVsZW0gPSB1bm1hdGNoZWRbaV0pICkge1xuXHRcdFx0XHRcdFx0XHRzZWVkW2ldID0gIShtYXRjaGVzW2ldID0gZWxlbSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSA6XG5cdFx0XHRcdGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHRcdFx0aW5wdXRbMF0gPSBlbGVtO1xuXHRcdFx0XHRcdG1hdGNoZXIoIGlucHV0LCBudWxsLCB4bWwsIHJlc3VsdHMgKTtcblx0XHRcdFx0XHQvLyBEb24ndCBrZWVwIHRoZSBlbGVtZW50IChpc3N1ZSAjMjk5KVxuXHRcdFx0XHRcdGlucHV0WzBdID0gbnVsbDtcblx0XHRcdFx0XHRyZXR1cm4gIXJlc3VsdHMucG9wKCk7XG5cdFx0XHRcdH07XG5cdFx0fSksXG5cblx0XHRcImhhc1wiOiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gU2l6emxlKCBzZWxlY3RvciwgZWxlbSApLmxlbmd0aCA+IDA7XG5cdFx0XHR9O1xuXHRcdH0pLFxuXG5cdFx0XCJjb250YWluc1wiOiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHRleHQgKSB7XG5cdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gKCBlbGVtLnRleHRDb250ZW50IHx8IGVsZW0uaW5uZXJUZXh0IHx8IGdldFRleHQoIGVsZW0gKSApLmluZGV4T2YoIHRleHQgKSA+IC0xO1xuXHRcdFx0fTtcblx0XHR9KSxcblxuXHRcdC8vIFwiV2hldGhlciBhbiBlbGVtZW50IGlzIHJlcHJlc2VudGVkIGJ5IGEgOmxhbmcoKSBzZWxlY3RvclxuXHRcdC8vIGlzIGJhc2VkIHNvbGVseSBvbiB0aGUgZWxlbWVudCdzIGxhbmd1YWdlIHZhbHVlXG5cdFx0Ly8gYmVpbmcgZXF1YWwgdG8gdGhlIGlkZW50aWZpZXIgQyxcblx0XHQvLyBvciBiZWdpbm5pbmcgd2l0aCB0aGUgaWRlbnRpZmllciBDIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IFwiLVwiLlxuXHRcdC8vIFRoZSBtYXRjaGluZyBvZiBDIGFnYWluc3QgdGhlIGVsZW1lbnQncyBsYW5ndWFnZSB2YWx1ZSBpcyBwZXJmb3JtZWQgY2FzZS1pbnNlbnNpdGl2ZWx5LlxuXHRcdC8vIFRoZSBpZGVudGlmaWVyIEMgZG9lcyBub3QgaGF2ZSB0byBiZSBhIHZhbGlkIGxhbmd1YWdlIG5hbWUuXCJcblx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2xhbmctcHNldWRvXG5cdFx0XCJsYW5nXCI6IG1hcmtGdW5jdGlvbiggZnVuY3Rpb24oIGxhbmcgKSB7XG5cdFx0XHQvLyBsYW5nIHZhbHVlIG11c3QgYmUgYSB2YWxpZCBpZGVudGlmaWVyXG5cdFx0XHRpZiAoICFyaWRlbnRpZmllci50ZXN0KGxhbmcgfHwgXCJcIikgKSB7XG5cdFx0XHRcdFNpenpsZS5lcnJvciggXCJ1bnN1cHBvcnRlZCBsYW5nOiBcIiArIGxhbmcgKTtcblx0XHRcdH1cblx0XHRcdGxhbmcgPSBsYW5nLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICkudG9Mb3dlckNhc2UoKTtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0dmFyIGVsZW1MYW5nO1xuXHRcdFx0XHRkbyB7XG5cdFx0XHRcdFx0aWYgKCAoZWxlbUxhbmcgPSBkb2N1bWVudElzSFRNTCA/XG5cdFx0XHRcdFx0XHRlbGVtLmxhbmcgOlxuXHRcdFx0XHRcdFx0ZWxlbS5nZXRBdHRyaWJ1dGUoXCJ4bWw6bGFuZ1wiKSB8fCBlbGVtLmdldEF0dHJpYnV0ZShcImxhbmdcIikpICkge1xuXG5cdFx0XHRcdFx0XHRlbGVtTGFuZyA9IGVsZW1MYW5nLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZWxlbUxhbmcgPT09IGxhbmcgfHwgZWxlbUxhbmcuaW5kZXhPZiggbGFuZyArIFwiLVwiICkgPT09IDA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IHdoaWxlICggKGVsZW0gPSBlbGVtLnBhcmVudE5vZGUpICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fTtcblx0XHR9KSxcblxuXHRcdC8vIE1pc2NlbGxhbmVvdXNcblx0XHRcInRhcmdldFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHZhciBoYXNoID0gd2luZG93LmxvY2F0aW9uICYmIHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuXHRcdFx0cmV0dXJuIGhhc2ggJiYgaGFzaC5zbGljZSggMSApID09PSBlbGVtLmlkO1xuXHRcdH0sXG5cblx0XHRcInJvb3RcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbSA9PT0gZG9jRWxlbTtcblx0XHR9LFxuXG5cdFx0XCJmb2N1c1wiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmICghZG9jdW1lbnQuaGFzRm9jdXMgfHwgZG9jdW1lbnQuaGFzRm9jdXMoKSkgJiYgISEoZWxlbS50eXBlIHx8IGVsZW0uaHJlZiB8fCB+ZWxlbS50YWJJbmRleCk7XG5cdFx0fSxcblxuXHRcdC8vIEJvb2xlYW4gcHJvcGVydGllc1xuXHRcdFwiZW5hYmxlZFwiOiBjcmVhdGVEaXNhYmxlZFBzZXVkbyggZmFsc2UgKSxcblx0XHRcImRpc2FibGVkXCI6IGNyZWF0ZURpc2FibGVkUHNldWRvKCB0cnVlICksXG5cblx0XHRcImNoZWNrZWRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHQvLyBJbiBDU1MzLCA6Y2hlY2tlZCBzaG91bGQgcmV0dXJuIGJvdGggY2hlY2tlZCBhbmQgc2VsZWN0ZWQgZWxlbWVudHNcblx0XHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTEvUkVDLWNzczMtc2VsZWN0b3JzLTIwMTEwOTI5LyNjaGVja2VkXG5cdFx0XHR2YXIgbm9kZU5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gKG5vZGVOYW1lID09PSBcImlucHV0XCIgJiYgISFlbGVtLmNoZWNrZWQpIHx8IChub2RlTmFtZSA9PT0gXCJvcHRpb25cIiAmJiAhIWVsZW0uc2VsZWN0ZWQpO1xuXHRcdH0sXG5cblx0XHRcInNlbGVjdGVkXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0Ly8gQWNjZXNzaW5nIHRoaXMgcHJvcGVydHkgbWFrZXMgc2VsZWN0ZWQtYnktZGVmYXVsdFxuXHRcdFx0Ly8gb3B0aW9ucyBpbiBTYWZhcmkgd29yayBwcm9wZXJseVxuXHRcdFx0aWYgKCBlbGVtLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdGVsZW0ucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZWxlbS5zZWxlY3RlZCA9PT0gdHJ1ZTtcblx0XHR9LFxuXG5cdFx0Ly8gQ29udGVudHNcblx0XHRcImVtcHR5XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNlbXB0eS1wc2V1ZG9cblx0XHRcdC8vIDplbXB0eSBpcyBuZWdhdGVkIGJ5IGVsZW1lbnQgKDEpIG9yIGNvbnRlbnQgbm9kZXMgKHRleHQ6IDM7IGNkYXRhOiA0OyBlbnRpdHkgcmVmOiA1KSxcblx0XHRcdC8vICAgYnV0IG5vdCBieSBvdGhlcnMgKGNvbW1lbnQ6IDg7IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb246IDc7IGV0Yy4pXG5cdFx0XHQvLyBub2RlVHlwZSA8IDYgd29ya3MgYmVjYXVzZSBhdHRyaWJ1dGVzICgyKSBkbyBub3QgYXBwZWFyIGFzIGNoaWxkcmVuXG5cdFx0XHRmb3IgKCBlbGVtID0gZWxlbS5maXJzdENoaWxkOyBlbGVtOyBlbGVtID0gZWxlbS5uZXh0U2libGluZyApIHtcblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlIDwgNiApIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0sXG5cblx0XHRcInBhcmVudFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiAhRXhwci5wc2V1ZG9zW1wiZW1wdHlcIl0oIGVsZW0gKTtcblx0XHR9LFxuXG5cdFx0Ly8gRWxlbWVudC9pbnB1dCB0eXBlc1xuXHRcdFwiaGVhZGVyXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIHJoZWFkZXIudGVzdCggZWxlbS5ub2RlTmFtZSApO1xuXHRcdH0sXG5cblx0XHRcImlucHV0XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIHJpbnB1dHMudGVzdCggZWxlbS5ub2RlTmFtZSApO1xuXHRcdH0sXG5cblx0XHRcImJ1dHRvblwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuIG5hbWUgPT09IFwiaW5wdXRcIiAmJiBlbGVtLnR5cGUgPT09IFwiYnV0dG9uXCIgfHwgbmFtZSA9PT0gXCJidXR0b25cIjtcblx0XHR9LFxuXG5cdFx0XCJ0ZXh0XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIGF0dHI7XG5cdFx0XHRyZXR1cm4gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImlucHV0XCIgJiZcblx0XHRcdFx0ZWxlbS50eXBlID09PSBcInRleHRcIiAmJlxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IElFPDhcblx0XHRcdFx0Ly8gTmV3IEhUTUw1IGF0dHJpYnV0ZSB2YWx1ZXMgKGUuZy4sIFwic2VhcmNoXCIpIGFwcGVhciB3aXRoIGVsZW0udHlwZSA9PT0gXCJ0ZXh0XCJcblx0XHRcdFx0KCAoYXR0ciA9IGVsZW0uZ2V0QXR0cmlidXRlKFwidHlwZVwiKSkgPT0gbnVsbCB8fCBhdHRyLnRvTG93ZXJDYXNlKCkgPT09IFwidGV4dFwiICk7XG5cdFx0fSxcblxuXHRcdC8vIFBvc2l0aW9uLWluLWNvbGxlY3Rpb25cblx0XHRcImZpcnN0XCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gWyAwIF07XG5cdFx0fSksXG5cblx0XHRcImxhc3RcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4gWyBsZW5ndGggLSAxIF07XG5cdFx0fSksXG5cblx0XHRcImVxXCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHtcblx0XHRcdHJldHVybiBbIGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJndW1lbnQgXTtcblx0XHR9KSxcblxuXHRcdFwiZXZlblwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHtcblx0XHRcdHZhciBpID0gMDtcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSArPSAyICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9KSxcblxuXHRcdFwib2RkXCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkge1xuXHRcdFx0dmFyIGkgPSAxO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpICs9IDIgKSB7XG5cdFx0XHRcdG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWF0Y2hJbmRleGVzO1xuXHRcdH0pLFxuXG5cdFx0XCJsdFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7XG5cdFx0XHR2YXIgaSA9IGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJndW1lbnQ7XG5cdFx0XHRmb3IgKCA7IC0taSA+PSAwOyApIHtcblx0XHRcdFx0bWF0Y2hJbmRleGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtYXRjaEluZGV4ZXM7XG5cdFx0fSksXG5cblx0XHRcImd0XCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHtcblx0XHRcdHZhciBpID0gYXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudDtcblx0XHRcdGZvciAoIDsgKytpIDwgbGVuZ3RoOyApIHtcblx0XHRcdFx0bWF0Y2hJbmRleGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtYXRjaEluZGV4ZXM7XG5cdFx0fSlcblx0fVxufTtcblxuRXhwci5wc2V1ZG9zW1wibnRoXCJdID0gRXhwci5wc2V1ZG9zW1wiZXFcIl07XG5cbi8vIEFkZCBidXR0b24vaW5wdXQgdHlwZSBwc2V1ZG9zXG5mb3IgKCBpIGluIHsgcmFkaW86IHRydWUsIGNoZWNrYm94OiB0cnVlLCBmaWxlOiB0cnVlLCBwYXNzd29yZDogdHJ1ZSwgaW1hZ2U6IHRydWUgfSApIHtcblx0RXhwci5wc2V1ZG9zWyBpIF0gPSBjcmVhdGVJbnB1dFBzZXVkbyggaSApO1xufVxuZm9yICggaSBpbiB7IHN1Ym1pdDogdHJ1ZSwgcmVzZXQ6IHRydWUgfSApIHtcblx0RXhwci5wc2V1ZG9zWyBpIF0gPSBjcmVhdGVCdXR0b25Qc2V1ZG8oIGkgKTtcbn1cblxuLy8gRWFzeSBBUEkgZm9yIGNyZWF0aW5nIG5ldyBzZXRGaWx0ZXJzXG5mdW5jdGlvbiBzZXRGaWx0ZXJzKCkge31cbnNldEZpbHRlcnMucHJvdG90eXBlID0gRXhwci5maWx0ZXJzID0gRXhwci5wc2V1ZG9zO1xuRXhwci5zZXRGaWx0ZXJzID0gbmV3IHNldEZpbHRlcnMoKTtcblxudG9rZW5pemUgPSBTaXp6bGUudG9rZW5pemUgPSBmdW5jdGlvbiggc2VsZWN0b3IsIHBhcnNlT25seSApIHtcblx0dmFyIG1hdGNoZWQsIG1hdGNoLCB0b2tlbnMsIHR5cGUsXG5cdFx0c29GYXIsIGdyb3VwcywgcHJlRmlsdGVycyxcblx0XHRjYWNoZWQgPSB0b2tlbkNhY2hlWyBzZWxlY3RvciArIFwiIFwiIF07XG5cblx0aWYgKCBjYWNoZWQgKSB7XG5cdFx0cmV0dXJuIHBhcnNlT25seSA/IDAgOiBjYWNoZWQuc2xpY2UoIDAgKTtcblx0fVxuXG5cdHNvRmFyID0gc2VsZWN0b3I7XG5cdGdyb3VwcyA9IFtdO1xuXHRwcmVGaWx0ZXJzID0gRXhwci5wcmVGaWx0ZXI7XG5cblx0d2hpbGUgKCBzb0ZhciApIHtcblxuXHRcdC8vIENvbW1hIGFuZCBmaXJzdCBydW5cblx0XHRpZiAoICFtYXRjaGVkIHx8IChtYXRjaCA9IHJjb21tYS5leGVjKCBzb0ZhciApKSApIHtcblx0XHRcdGlmICggbWF0Y2ggKSB7XG5cdFx0XHRcdC8vIERvbid0IGNvbnN1bWUgdHJhaWxpbmcgY29tbWFzIGFzIHZhbGlkXG5cdFx0XHRcdHNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoWzBdLmxlbmd0aCApIHx8IHNvRmFyO1xuXHRcdFx0fVxuXHRcdFx0Z3JvdXBzLnB1c2goICh0b2tlbnMgPSBbXSkgKTtcblx0XHR9XG5cblx0XHRtYXRjaGVkID0gZmFsc2U7XG5cblx0XHQvLyBDb21iaW5hdG9yc1xuXHRcdGlmICggKG1hdGNoID0gcmNvbWJpbmF0b3JzLmV4ZWMoIHNvRmFyICkpICkge1xuXHRcdFx0bWF0Y2hlZCA9IG1hdGNoLnNoaWZ0KCk7XG5cdFx0XHR0b2tlbnMucHVzaCh7XG5cdFx0XHRcdHZhbHVlOiBtYXRjaGVkLFxuXHRcdFx0XHQvLyBDYXN0IGRlc2NlbmRhbnQgY29tYmluYXRvcnMgdG8gc3BhY2Vcblx0XHRcdFx0dHlwZTogbWF0Y2hbMF0ucmVwbGFjZSggcnRyaW0sIFwiIFwiIClcblx0XHRcdH0pO1xuXHRcdFx0c29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hlZC5sZW5ndGggKTtcblx0XHR9XG5cblx0XHQvLyBGaWx0ZXJzXG5cdFx0Zm9yICggdHlwZSBpbiBFeHByLmZpbHRlciApIHtcblx0XHRcdGlmICggKG1hdGNoID0gbWF0Y2hFeHByWyB0eXBlIF0uZXhlYyggc29GYXIgKSkgJiYgKCFwcmVGaWx0ZXJzWyB0eXBlIF0gfHxcblx0XHRcdFx0KG1hdGNoID0gcHJlRmlsdGVyc1sgdHlwZSBdKCBtYXRjaCApKSkgKSB7XG5cdFx0XHRcdG1hdGNoZWQgPSBtYXRjaC5zaGlmdCgpO1xuXHRcdFx0XHR0b2tlbnMucHVzaCh7XG5cdFx0XHRcdFx0dmFsdWU6IG1hdGNoZWQsXG5cdFx0XHRcdFx0dHlwZTogdHlwZSxcblx0XHRcdFx0XHRtYXRjaGVzOiBtYXRjaFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0c29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hlZC5sZW5ndGggKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoICFtYXRjaGVkICkge1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIGludmFsaWQgZXhjZXNzXG5cdC8vIGlmIHdlJ3JlIGp1c3QgcGFyc2luZ1xuXHQvLyBPdGhlcndpc2UsIHRocm93IGFuIGVycm9yIG9yIHJldHVybiB0b2tlbnNcblx0cmV0dXJuIHBhcnNlT25seSA/XG5cdFx0c29GYXIubGVuZ3RoIDpcblx0XHRzb0ZhciA/XG5cdFx0XHRTaXp6bGUuZXJyb3IoIHNlbGVjdG9yICkgOlxuXHRcdFx0Ly8gQ2FjaGUgdGhlIHRva2Vuc1xuXHRcdFx0dG9rZW5DYWNoZSggc2VsZWN0b3IsIGdyb3VwcyApLnNsaWNlKCAwICk7XG59O1xuXG5mdW5jdGlvbiB0b1NlbGVjdG9yKCB0b2tlbnMgKSB7XG5cdHZhciBpID0gMCxcblx0XHRsZW4gPSB0b2tlbnMubGVuZ3RoLFxuXHRcdHNlbGVjdG9yID0gXCJcIjtcblx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0c2VsZWN0b3IgKz0gdG9rZW5zW2ldLnZhbHVlO1xuXHR9XG5cdHJldHVybiBzZWxlY3Rvcjtcbn1cblxuZnVuY3Rpb24gYWRkQ29tYmluYXRvciggbWF0Y2hlciwgY29tYmluYXRvciwgYmFzZSApIHtcblx0dmFyIGRpciA9IGNvbWJpbmF0b3IuZGlyLFxuXHRcdHNraXAgPSBjb21iaW5hdG9yLm5leHQsXG5cdFx0a2V5ID0gc2tpcCB8fCBkaXIsXG5cdFx0Y2hlY2tOb25FbGVtZW50cyA9IGJhc2UgJiYga2V5ID09PSBcInBhcmVudE5vZGVcIixcblx0XHRkb25lTmFtZSA9IGRvbmUrKztcblxuXHRyZXR1cm4gY29tYmluYXRvci5maXJzdCA/XG5cdFx0Ly8gQ2hlY2sgYWdhaW5zdCBjbG9zZXN0IGFuY2VzdG9yL3ByZWNlZGluZyBlbGVtZW50XG5cdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7XG5cdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkge1xuXHRcdFx0XHRcdHJldHVybiBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0gOlxuXG5cdFx0Ly8gQ2hlY2sgYWdhaW5zdCBhbGwgYW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnRzXG5cdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHZhciBvbGRDYWNoZSwgdW5pcXVlQ2FjaGUsIG91dGVyQ2FjaGUsXG5cdFx0XHRcdG5ld0NhY2hlID0gWyBkaXJydW5zLCBkb25lTmFtZSBdO1xuXG5cdFx0XHQvLyBXZSBjYW4ndCBzZXQgYXJiaXRyYXJ5IGRhdGEgb24gWE1MIG5vZGVzLCBzbyB0aGV5IGRvbid0IGJlbmVmaXQgZnJvbSBjb21iaW5hdG9yIGNhY2hpbmdcblx0XHRcdGlmICggeG1sICkge1xuXHRcdFx0XHR3aGlsZSAoIChlbGVtID0gZWxlbVsgZGlyIF0pICkge1xuXHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkge1xuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR3aGlsZSAoIChlbGVtID0gZWxlbVsgZGlyIF0pICkge1xuXHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkge1xuXHRcdFx0XHRcdFx0b3V0ZXJDYWNoZSA9IGVsZW1bIGV4cGFuZG8gXSB8fCAoZWxlbVsgZXhwYW5kbyBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8OSBvbmx5XG5cdFx0XHRcdFx0XHQvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSlcblx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgZWxlbS51bmlxdWVJRCBdIHx8IChvdXRlckNhY2hlWyBlbGVtLnVuaXF1ZUlEIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdGlmICggc2tpcCAmJiBza2lwID09PSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgKSB7XG5cdFx0XHRcdFx0XHRcdGVsZW0gPSBlbGVtWyBkaXIgXSB8fCBlbGVtO1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmICggKG9sZENhY2hlID0gdW5pcXVlQ2FjaGVbIGtleSBdKSAmJlxuXHRcdFx0XHRcdFx0XHRvbGRDYWNoZVsgMCBdID09PSBkaXJydW5zICYmIG9sZENhY2hlWyAxIF0gPT09IGRvbmVOYW1lICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIEFzc2lnbiB0byBuZXdDYWNoZSBzbyByZXN1bHRzIGJhY2stcHJvcGFnYXRlIHRvIHByZXZpb3VzIGVsZW1lbnRzXG5cdFx0XHRcdFx0XHRcdHJldHVybiAobmV3Q2FjaGVbIDIgXSA9IG9sZENhY2hlWyAyIF0pO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Ly8gUmV1c2UgbmV3Y2FjaGUgc28gcmVzdWx0cyBiYWNrLXByb3BhZ2F0ZSB0byBwcmV2aW91cyBlbGVtZW50c1xuXHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZVsga2V5IF0gPSBuZXdDYWNoZTtcblxuXHRcdFx0XHRcdFx0XHQvLyBBIG1hdGNoIG1lYW5zIHdlJ3JlIGRvbmU7IGEgZmFpbCBtZWFucyB3ZSBoYXZlIHRvIGtlZXAgY2hlY2tpbmdcblx0XHRcdFx0XHRcdFx0aWYgKCAobmV3Q2FjaGVbIDIgXSA9IG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApKSApIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH07XG59XG5cbmZ1bmN0aW9uIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApIHtcblx0cmV0dXJuIG1hdGNoZXJzLmxlbmd0aCA+IDEgP1xuXHRcdGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHR2YXIgaSA9IG1hdGNoZXJzLmxlbmd0aDtcblx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRpZiAoICFtYXRjaGVyc1tpXSggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IDpcblx0XHRtYXRjaGVyc1swXTtcbn1cblxuZnVuY3Rpb24gbXVsdGlwbGVDb250ZXh0cyggc2VsZWN0b3IsIGNvbnRleHRzLCByZXN1bHRzICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bGVuID0gY29udGV4dHMubGVuZ3RoO1xuXHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRTaXp6bGUoIHNlbGVjdG9yLCBjb250ZXh0c1tpXSwgcmVzdWx0cyApO1xuXHR9XG5cdHJldHVybiByZXN1bHRzO1xufVxuXG5mdW5jdGlvbiBjb25kZW5zZSggdW5tYXRjaGVkLCBtYXAsIGZpbHRlciwgY29udGV4dCwgeG1sICkge1xuXHR2YXIgZWxlbSxcblx0XHRuZXdVbm1hdGNoZWQgPSBbXSxcblx0XHRpID0gMCxcblx0XHRsZW4gPSB1bm1hdGNoZWQubGVuZ3RoLFxuXHRcdG1hcHBlZCA9IG1hcCAhPSBudWxsO1xuXG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdGlmICggKGVsZW0gPSB1bm1hdGNoZWRbaV0pICkge1xuXHRcdFx0aWYgKCAhZmlsdGVyIHx8IGZpbHRlciggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7XG5cdFx0XHRcdG5ld1VubWF0Y2hlZC5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdGlmICggbWFwcGVkICkge1xuXHRcdFx0XHRcdG1hcC5wdXNoKCBpICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gbmV3VW5tYXRjaGVkO1xufVxuXG5mdW5jdGlvbiBzZXRNYXRjaGVyKCBwcmVGaWx0ZXIsIHNlbGVjdG9yLCBtYXRjaGVyLCBwb3N0RmlsdGVyLCBwb3N0RmluZGVyLCBwb3N0U2VsZWN0b3IgKSB7XG5cdGlmICggcG9zdEZpbHRlciAmJiAhcG9zdEZpbHRlclsgZXhwYW5kbyBdICkge1xuXHRcdHBvc3RGaWx0ZXIgPSBzZXRNYXRjaGVyKCBwb3N0RmlsdGVyICk7XG5cdH1cblx0aWYgKCBwb3N0RmluZGVyICYmICFwb3N0RmluZGVyWyBleHBhbmRvIF0gKSB7XG5cdFx0cG9zdEZpbmRlciA9IHNldE1hdGNoZXIoIHBvc3RGaW5kZXIsIHBvc3RTZWxlY3RvciApO1xuXHR9XG5cdHJldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIHJlc3VsdHMsIGNvbnRleHQsIHhtbCApIHtcblx0XHR2YXIgdGVtcCwgaSwgZWxlbSxcblx0XHRcdHByZU1hcCA9IFtdLFxuXHRcdFx0cG9zdE1hcCA9IFtdLFxuXHRcdFx0cHJlZXhpc3RpbmcgPSByZXN1bHRzLmxlbmd0aCxcblxuXHRcdFx0Ly8gR2V0IGluaXRpYWwgZWxlbWVudHMgZnJvbSBzZWVkIG9yIGNvbnRleHRcblx0XHRcdGVsZW1zID0gc2VlZCB8fCBtdWx0aXBsZUNvbnRleHRzKCBzZWxlY3RvciB8fCBcIipcIiwgY29udGV4dC5ub2RlVHlwZSA/IFsgY29udGV4dCBdIDogY29udGV4dCwgW10gKSxcblxuXHRcdFx0Ly8gUHJlZmlsdGVyIHRvIGdldCBtYXRjaGVyIGlucHV0LCBwcmVzZXJ2aW5nIGEgbWFwIGZvciBzZWVkLXJlc3VsdHMgc3luY2hyb25pemF0aW9uXG5cdFx0XHRtYXRjaGVySW4gPSBwcmVGaWx0ZXIgJiYgKCBzZWVkIHx8ICFzZWxlY3RvciApID9cblx0XHRcdFx0Y29uZGVuc2UoIGVsZW1zLCBwcmVNYXAsIHByZUZpbHRlciwgY29udGV4dCwgeG1sICkgOlxuXHRcdFx0XHRlbGVtcyxcblxuXHRcdFx0bWF0Y2hlck91dCA9IG1hdGNoZXIgP1xuXHRcdFx0XHQvLyBJZiB3ZSBoYXZlIGEgcG9zdEZpbmRlciwgb3IgZmlsdGVyZWQgc2VlZCwgb3Igbm9uLXNlZWQgcG9zdEZpbHRlciBvciBwcmVleGlzdGluZyByZXN1bHRzLFxuXHRcdFx0XHRwb3N0RmluZGVyIHx8ICggc2VlZCA/IHByZUZpbHRlciA6IHByZWV4aXN0aW5nIHx8IHBvc3RGaWx0ZXIgKSA/XG5cblx0XHRcdFx0XHQvLyAuLi5pbnRlcm1lZGlhdGUgcHJvY2Vzc2luZyBpcyBuZWNlc3Nhcnlcblx0XHRcdFx0XHRbXSA6XG5cblx0XHRcdFx0XHQvLyAuLi5vdGhlcndpc2UgdXNlIHJlc3VsdHMgZGlyZWN0bHlcblx0XHRcdFx0XHRyZXN1bHRzIDpcblx0XHRcdFx0bWF0Y2hlckluO1xuXG5cdFx0Ly8gRmluZCBwcmltYXJ5IG1hdGNoZXNcblx0XHRpZiAoIG1hdGNoZXIgKSB7XG5cdFx0XHRtYXRjaGVyKCBtYXRjaGVySW4sIG1hdGNoZXJPdXQsIGNvbnRleHQsIHhtbCApO1xuXHRcdH1cblxuXHRcdC8vIEFwcGx5IHBvc3RGaWx0ZXJcblx0XHRpZiAoIHBvc3RGaWx0ZXIgKSB7XG5cdFx0XHR0ZW1wID0gY29uZGVuc2UoIG1hdGNoZXJPdXQsIHBvc3RNYXAgKTtcblx0XHRcdHBvc3RGaWx0ZXIoIHRlbXAsIFtdLCBjb250ZXh0LCB4bWwgKTtcblxuXHRcdFx0Ly8gVW4tbWF0Y2ggZmFpbGluZyBlbGVtZW50cyBieSBtb3ZpbmcgdGhlbSBiYWNrIHRvIG1hdGNoZXJJblxuXHRcdFx0aSA9IHRlbXAubGVuZ3RoO1xuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGlmICggKGVsZW0gPSB0ZW1wW2ldKSApIHtcblx0XHRcdFx0XHRtYXRjaGVyT3V0WyBwb3N0TWFwW2ldIF0gPSAhKG1hdGNoZXJJblsgcG9zdE1hcFtpXSBdID0gZWxlbSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoIHNlZWQgKSB7XG5cdFx0XHRpZiAoIHBvc3RGaW5kZXIgfHwgcHJlRmlsdGVyICkge1xuXHRcdFx0XHRpZiAoIHBvc3RGaW5kZXIgKSB7XG5cdFx0XHRcdFx0Ly8gR2V0IHRoZSBmaW5hbCBtYXRjaGVyT3V0IGJ5IGNvbmRlbnNpbmcgdGhpcyBpbnRlcm1lZGlhdGUgaW50byBwb3N0RmluZGVyIGNvbnRleHRzXG5cdFx0XHRcdFx0dGVtcCA9IFtdO1xuXHRcdFx0XHRcdGkgPSBtYXRjaGVyT3V0Lmxlbmd0aDtcblx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdGlmICggKGVsZW0gPSBtYXRjaGVyT3V0W2ldKSApIHtcblx0XHRcdFx0XHRcdFx0Ly8gUmVzdG9yZSBtYXRjaGVySW4gc2luY2UgZWxlbSBpcyBub3QgeWV0IGEgZmluYWwgbWF0Y2hcblx0XHRcdFx0XHRcdFx0dGVtcC5wdXNoKCAobWF0Y2hlckluW2ldID0gZWxlbSkgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cG9zdEZpbmRlciggbnVsbCwgKG1hdGNoZXJPdXQgPSBbXSksIHRlbXAsIHhtbCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gTW92ZSBtYXRjaGVkIGVsZW1lbnRzIGZyb20gc2VlZCB0byByZXN1bHRzIHRvIGtlZXAgdGhlbSBzeW5jaHJvbml6ZWRcblx0XHRcdFx0aSA9IG1hdGNoZXJPdXQubGVuZ3RoO1xuXHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRpZiAoIChlbGVtID0gbWF0Y2hlck91dFtpXSkgJiZcblx0XHRcdFx0XHRcdCh0ZW1wID0gcG9zdEZpbmRlciA/IGluZGV4T2YoIHNlZWQsIGVsZW0gKSA6IHByZU1hcFtpXSkgPiAtMSApIHtcblxuXHRcdFx0XHRcdFx0c2VlZFt0ZW1wXSA9ICEocmVzdWx0c1t0ZW1wXSA9IGVsZW0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0Ly8gQWRkIGVsZW1lbnRzIHRvIHJlc3VsdHMsIHRocm91Z2ggcG9zdEZpbmRlciBpZiBkZWZpbmVkXG5cdFx0fSBlbHNlIHtcblx0XHRcdG1hdGNoZXJPdXQgPSBjb25kZW5zZShcblx0XHRcdFx0bWF0Y2hlck91dCA9PT0gcmVzdWx0cyA/XG5cdFx0XHRcdFx0bWF0Y2hlck91dC5zcGxpY2UoIHByZWV4aXN0aW5nLCBtYXRjaGVyT3V0Lmxlbmd0aCApIDpcblx0XHRcdFx0XHRtYXRjaGVyT3V0XG5cdFx0XHQpO1xuXHRcdFx0aWYgKCBwb3N0RmluZGVyICkge1xuXHRcdFx0XHRwb3N0RmluZGVyKCBudWxsLCByZXN1bHRzLCBtYXRjaGVyT3V0LCB4bWwgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIG1hdGNoZXJPdXQgKTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xufVxuXG5mdW5jdGlvbiBtYXRjaGVyRnJvbVRva2VucyggdG9rZW5zICkge1xuXHR2YXIgY2hlY2tDb250ZXh0LCBtYXRjaGVyLCBqLFxuXHRcdGxlbiA9IHRva2Vucy5sZW5ndGgsXG5cdFx0bGVhZGluZ1JlbGF0aXZlID0gRXhwci5yZWxhdGl2ZVsgdG9rZW5zWzBdLnR5cGUgXSxcblx0XHRpbXBsaWNpdFJlbGF0aXZlID0gbGVhZGluZ1JlbGF0aXZlIHx8IEV4cHIucmVsYXRpdmVbXCIgXCJdLFxuXHRcdGkgPSBsZWFkaW5nUmVsYXRpdmUgPyAxIDogMCxcblxuXHRcdC8vIFRoZSBmb3VuZGF0aW9uYWwgbWF0Y2hlciBlbnN1cmVzIHRoYXQgZWxlbWVudHMgYXJlIHJlYWNoYWJsZSBmcm9tIHRvcC1sZXZlbCBjb250ZXh0KHMpXG5cdFx0bWF0Y2hDb250ZXh0ID0gYWRkQ29tYmluYXRvciggZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbSA9PT0gY2hlY2tDb250ZXh0O1xuXHRcdH0sIGltcGxpY2l0UmVsYXRpdmUsIHRydWUgKSxcblx0XHRtYXRjaEFueUNvbnRleHQgPSBhZGRDb21iaW5hdG9yKCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBpbmRleE9mKCBjaGVja0NvbnRleHQsIGVsZW0gKSA+IC0xO1xuXHRcdH0sIGltcGxpY2l0UmVsYXRpdmUsIHRydWUgKSxcblx0XHRtYXRjaGVycyA9IFsgZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHZhciByZXQgPSAoICFsZWFkaW5nUmVsYXRpdmUgJiYgKCB4bWwgfHwgY29udGV4dCAhPT0gb3V0ZXJtb3N0Q29udGV4dCApICkgfHwgKFxuXHRcdFx0XHQoY2hlY2tDb250ZXh0ID0gY29udGV4dCkubm9kZVR5cGUgP1xuXHRcdFx0XHRcdG1hdGNoQ29udGV4dCggZWxlbSwgY29udGV4dCwgeG1sICkgOlxuXHRcdFx0XHRcdG1hdGNoQW55Q29udGV4dCggZWxlbSwgY29udGV4dCwgeG1sICkgKTtcblx0XHRcdC8vIEF2b2lkIGhhbmdpbmcgb250byBlbGVtZW50IChpc3N1ZSAjMjk5KVxuXHRcdFx0Y2hlY2tDb250ZXh0ID0gbnVsbDtcblx0XHRcdHJldHVybiByZXQ7XG5cdFx0fSBdO1xuXG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdGlmICggKG1hdGNoZXIgPSBFeHByLnJlbGF0aXZlWyB0b2tlbnNbaV0udHlwZSBdKSApIHtcblx0XHRcdG1hdGNoZXJzID0gWyBhZGRDb21iaW5hdG9yKGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApLCBtYXRjaGVyKSBdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRtYXRjaGVyID0gRXhwci5maWx0ZXJbIHRva2Vuc1tpXS50eXBlIF0uYXBwbHkoIG51bGwsIHRva2Vuc1tpXS5tYXRjaGVzICk7XG5cblx0XHRcdC8vIFJldHVybiBzcGVjaWFsIHVwb24gc2VlaW5nIGEgcG9zaXRpb25hbCBtYXRjaGVyXG5cdFx0XHRpZiAoIG1hdGNoZXJbIGV4cGFuZG8gXSApIHtcblx0XHRcdFx0Ly8gRmluZCB0aGUgbmV4dCByZWxhdGl2ZSBvcGVyYXRvciAoaWYgYW55KSBmb3IgcHJvcGVyIGhhbmRsaW5nXG5cdFx0XHRcdGogPSArK2k7XG5cdFx0XHRcdGZvciAoIDsgaiA8IGxlbjsgaisrICkge1xuXHRcdFx0XHRcdGlmICggRXhwci5yZWxhdGl2ZVsgdG9rZW5zW2pdLnR5cGUgXSApIHtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gc2V0TWF0Y2hlcihcblx0XHRcdFx0XHRpID4gMSAmJiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSxcblx0XHRcdFx0XHRpID4gMSAmJiB0b1NlbGVjdG9yKFxuXHRcdFx0XHRcdFx0Ly8gSWYgdGhlIHByZWNlZGluZyB0b2tlbiB3YXMgYSBkZXNjZW5kYW50IGNvbWJpbmF0b3IsIGluc2VydCBhbiBpbXBsaWNpdCBhbnktZWxlbWVudCBgKmBcblx0XHRcdFx0XHRcdHRva2Vucy5zbGljZSggMCwgaSAtIDEgKS5jb25jYXQoeyB2YWx1ZTogdG9rZW5zWyBpIC0gMiBdLnR5cGUgPT09IFwiIFwiID8gXCIqXCIgOiBcIlwiIH0pXG5cdFx0XHRcdFx0KS5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICksXG5cdFx0XHRcdFx0bWF0Y2hlcixcblx0XHRcdFx0XHRpIDwgaiAmJiBtYXRjaGVyRnJvbVRva2VucyggdG9rZW5zLnNsaWNlKCBpLCBqICkgKSxcblx0XHRcdFx0XHRqIDwgbGVuICYmIG1hdGNoZXJGcm9tVG9rZW5zKCAodG9rZW5zID0gdG9rZW5zLnNsaWNlKCBqICkpICksXG5cdFx0XHRcdFx0aiA8IGxlbiAmJiB0b1NlbGVjdG9yKCB0b2tlbnMgKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0bWF0Y2hlcnMucHVzaCggbWF0Y2hlciApO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKTtcbn1cblxuZnVuY3Rpb24gbWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzKCBlbGVtZW50TWF0Y2hlcnMsIHNldE1hdGNoZXJzICkge1xuXHR2YXIgYnlTZXQgPSBzZXRNYXRjaGVycy5sZW5ndGggPiAwLFxuXHRcdGJ5RWxlbWVudCA9IGVsZW1lbnRNYXRjaGVycy5sZW5ndGggPiAwLFxuXHRcdHN1cGVyTWF0Y2hlciA9IGZ1bmN0aW9uKCBzZWVkLCBjb250ZXh0LCB4bWwsIHJlc3VsdHMsIG91dGVybW9zdCApIHtcblx0XHRcdHZhciBlbGVtLCBqLCBtYXRjaGVyLFxuXHRcdFx0XHRtYXRjaGVkQ291bnQgPSAwLFxuXHRcdFx0XHRpID0gXCIwXCIsXG5cdFx0XHRcdHVubWF0Y2hlZCA9IHNlZWQgJiYgW10sXG5cdFx0XHRcdHNldE1hdGNoZWQgPSBbXSxcblx0XHRcdFx0Y29udGV4dEJhY2t1cCA9IG91dGVybW9zdENvbnRleHQsXG5cdFx0XHRcdC8vIFdlIG11c3QgYWx3YXlzIGhhdmUgZWl0aGVyIHNlZWQgZWxlbWVudHMgb3Igb3V0ZXJtb3N0IGNvbnRleHRcblx0XHRcdFx0ZWxlbXMgPSBzZWVkIHx8IGJ5RWxlbWVudCAmJiBFeHByLmZpbmRbXCJUQUdcIl0oIFwiKlwiLCBvdXRlcm1vc3QgKSxcblx0XHRcdFx0Ly8gVXNlIGludGVnZXIgZGlycnVucyBpZmYgdGhpcyBpcyB0aGUgb3V0ZXJtb3N0IG1hdGNoZXJcblx0XHRcdFx0ZGlycnVuc1VuaXF1ZSA9IChkaXJydW5zICs9IGNvbnRleHRCYWNrdXAgPT0gbnVsbCA/IDEgOiBNYXRoLnJhbmRvbSgpIHx8IDAuMSksXG5cdFx0XHRcdGxlbiA9IGVsZW1zLmxlbmd0aDtcblxuXHRcdFx0aWYgKCBvdXRlcm1vc3QgKSB7XG5cdFx0XHRcdG91dGVybW9zdENvbnRleHQgPSBjb250ZXh0ID09PSBkb2N1bWVudCB8fCBjb250ZXh0IHx8IG91dGVybW9zdDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIGVsZW1lbnRzIHBhc3NpbmcgZWxlbWVudE1hdGNoZXJzIGRpcmVjdGx5IHRvIHJlc3VsdHNcblx0XHRcdC8vIFN1cHBvcnQ6IElFPDksIFNhZmFyaVxuXHRcdFx0Ly8gVG9sZXJhdGUgTm9kZUxpc3QgcHJvcGVydGllcyAoSUU6IFwibGVuZ3RoXCI7IFNhZmFyaTogPG51bWJlcj4pIG1hdGNoaW5nIGVsZW1lbnRzIGJ5IGlkXG5cdFx0XHRmb3IgKCA7IGkgIT09IGxlbiAmJiAoZWxlbSA9IGVsZW1zW2ldKSAhPSBudWxsOyBpKysgKSB7XG5cdFx0XHRcdGlmICggYnlFbGVtZW50ICYmIGVsZW0gKSB7XG5cdFx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdFx0aWYgKCAhY29udGV4dCAmJiBlbGVtLm93bmVyRG9jdW1lbnQgIT09IGRvY3VtZW50ICkge1xuXHRcdFx0XHRcdFx0c2V0RG9jdW1lbnQoIGVsZW0gKTtcblx0XHRcdFx0XHRcdHhtbCA9ICFkb2N1bWVudElzSFRNTDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0d2hpbGUgKCAobWF0Y2hlciA9IGVsZW1lbnRNYXRjaGVyc1tqKytdKSApIHtcblx0XHRcdFx0XHRcdGlmICggbWF0Y2hlciggZWxlbSwgY29udGV4dCB8fCBkb2N1bWVudCwgeG1sKSApIHtcblx0XHRcdFx0XHRcdFx0cmVzdWx0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIG91dGVybW9zdCApIHtcblx0XHRcdFx0XHRcdGRpcnJ1bnMgPSBkaXJydW5zVW5pcXVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFRyYWNrIHVubWF0Y2hlZCBlbGVtZW50cyBmb3Igc2V0IGZpbHRlcnNcblx0XHRcdFx0aWYgKCBieVNldCApIHtcblx0XHRcdFx0XHQvLyBUaGV5IHdpbGwgaGF2ZSBnb25lIHRocm91Z2ggYWxsIHBvc3NpYmxlIG1hdGNoZXJzXG5cdFx0XHRcdFx0aWYgKCAoZWxlbSA9ICFtYXRjaGVyICYmIGVsZW0pICkge1xuXHRcdFx0XHRcdFx0bWF0Y2hlZENvdW50LS07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gTGVuZ3RoZW4gdGhlIGFycmF5IGZvciBldmVyeSBlbGVtZW50LCBtYXRjaGVkIG9yIG5vdFxuXHRcdFx0XHRcdGlmICggc2VlZCApIHtcblx0XHRcdFx0XHRcdHVubWF0Y2hlZC5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIGBpYCBpcyBub3cgdGhlIGNvdW50IG9mIGVsZW1lbnRzIHZpc2l0ZWQgYWJvdmUsIGFuZCBhZGRpbmcgaXQgdG8gYG1hdGNoZWRDb3VudGBcblx0XHRcdC8vIG1ha2VzIHRoZSBsYXR0ZXIgbm9ubmVnYXRpdmUuXG5cdFx0XHRtYXRjaGVkQ291bnQgKz0gaTtcblxuXHRcdFx0Ly8gQXBwbHkgc2V0IGZpbHRlcnMgdG8gdW5tYXRjaGVkIGVsZW1lbnRzXG5cdFx0XHQvLyBOT1RFOiBUaGlzIGNhbiBiZSBza2lwcGVkIGlmIHRoZXJlIGFyZSBubyB1bm1hdGNoZWQgZWxlbWVudHMgKGkuZS4sIGBtYXRjaGVkQ291bnRgXG5cdFx0XHQvLyBlcXVhbHMgYGlgKSwgdW5sZXNzIHdlIGRpZG4ndCB2aXNpdCBfYW55XyBlbGVtZW50cyBpbiB0aGUgYWJvdmUgbG9vcCBiZWNhdXNlIHdlIGhhdmVcblx0XHRcdC8vIG5vIGVsZW1lbnQgbWF0Y2hlcnMgYW5kIG5vIHNlZWQuXG5cdFx0XHQvLyBJbmNyZW1lbnRpbmcgYW4gaW5pdGlhbGx5LXN0cmluZyBcIjBcIiBgaWAgYWxsb3dzIGBpYCB0byByZW1haW4gYSBzdHJpbmcgb25seSBpbiB0aGF0XG5cdFx0XHQvLyBjYXNlLCB3aGljaCB3aWxsIHJlc3VsdCBpbiBhIFwiMDBcIiBgbWF0Y2hlZENvdW50YCB0aGF0IGRpZmZlcnMgZnJvbSBgaWAgYnV0IGlzIGFsc29cblx0XHRcdC8vIG51bWVyaWNhbGx5IHplcm8uXG5cdFx0XHRpZiAoIGJ5U2V0ICYmIGkgIT09IG1hdGNoZWRDb3VudCApIHtcblx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdHdoaWxlICggKG1hdGNoZXIgPSBzZXRNYXRjaGVyc1tqKytdKSApIHtcblx0XHRcdFx0XHRtYXRjaGVyKCB1bm1hdGNoZWQsIHNldE1hdGNoZWQsIGNvbnRleHQsIHhtbCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCBzZWVkICkge1xuXHRcdFx0XHRcdC8vIFJlaW50ZWdyYXRlIGVsZW1lbnQgbWF0Y2hlcyB0byBlbGltaW5hdGUgdGhlIG5lZWQgZm9yIHNvcnRpbmdcblx0XHRcdFx0XHRpZiAoIG1hdGNoZWRDb3VudCA+IDAgKSB7XG5cdFx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdFx0aWYgKCAhKHVubWF0Y2hlZFtpXSB8fCBzZXRNYXRjaGVkW2ldKSApIHtcblx0XHRcdFx0XHRcdFx0XHRzZXRNYXRjaGVkW2ldID0gcG9wLmNhbGwoIHJlc3VsdHMgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIERpc2NhcmQgaW5kZXggcGxhY2Vob2xkZXIgdmFsdWVzIHRvIGdldCBvbmx5IGFjdHVhbCBtYXRjaGVzXG5cdFx0XHRcdFx0c2V0TWF0Y2hlZCA9IGNvbmRlbnNlKCBzZXRNYXRjaGVkICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBBZGQgbWF0Y2hlcyB0byByZXN1bHRzXG5cdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIHNldE1hdGNoZWQgKTtcblxuXHRcdFx0XHQvLyBTZWVkbGVzcyBzZXQgbWF0Y2hlcyBzdWNjZWVkaW5nIG11bHRpcGxlIHN1Y2Nlc3NmdWwgbWF0Y2hlcnMgc3RpcHVsYXRlIHNvcnRpbmdcblx0XHRcdFx0aWYgKCBvdXRlcm1vc3QgJiYgIXNlZWQgJiYgc2V0TWF0Y2hlZC5sZW5ndGggPiAwICYmXG5cdFx0XHRcdFx0KCBtYXRjaGVkQ291bnQgKyBzZXRNYXRjaGVycy5sZW5ndGggKSA+IDEgKSB7XG5cblx0XHRcdFx0XHRTaXp6bGUudW5pcXVlU29ydCggcmVzdWx0cyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIE92ZXJyaWRlIG1hbmlwdWxhdGlvbiBvZiBnbG9iYWxzIGJ5IG5lc3RlZCBtYXRjaGVyc1xuXHRcdFx0aWYgKCBvdXRlcm1vc3QgKSB7XG5cdFx0XHRcdGRpcnJ1bnMgPSBkaXJydW5zVW5pcXVlO1xuXHRcdFx0XHRvdXRlcm1vc3RDb250ZXh0ID0gY29udGV4dEJhY2t1cDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHVubWF0Y2hlZDtcblx0XHR9O1xuXG5cdHJldHVybiBieVNldCA/XG5cdFx0bWFya0Z1bmN0aW9uKCBzdXBlck1hdGNoZXIgKSA6XG5cdFx0c3VwZXJNYXRjaGVyO1xufVxuXG5jb21waWxlID0gU2l6emxlLmNvbXBpbGUgPSBmdW5jdGlvbiggc2VsZWN0b3IsIG1hdGNoIC8qIEludGVybmFsIFVzZSBPbmx5ICovICkge1xuXHR2YXIgaSxcblx0XHRzZXRNYXRjaGVycyA9IFtdLFxuXHRcdGVsZW1lbnRNYXRjaGVycyA9IFtdLFxuXHRcdGNhY2hlZCA9IGNvbXBpbGVyQ2FjaGVbIHNlbGVjdG9yICsgXCIgXCIgXTtcblxuXHRpZiAoICFjYWNoZWQgKSB7XG5cdFx0Ly8gR2VuZXJhdGUgYSBmdW5jdGlvbiBvZiByZWN1cnNpdmUgZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgdG8gY2hlY2sgZWFjaCBlbGVtZW50XG5cdFx0aWYgKCAhbWF0Y2ggKSB7XG5cdFx0XHRtYXRjaCA9IHRva2VuaXplKCBzZWxlY3RvciApO1xuXHRcdH1cblx0XHRpID0gbWF0Y2gubGVuZ3RoO1xuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0Y2FjaGVkID0gbWF0Y2hlckZyb21Ub2tlbnMoIG1hdGNoW2ldICk7XG5cdFx0XHRpZiAoIGNhY2hlZFsgZXhwYW5kbyBdICkge1xuXHRcdFx0XHRzZXRNYXRjaGVycy5wdXNoKCBjYWNoZWQgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGVsZW1lbnRNYXRjaGVycy5wdXNoKCBjYWNoZWQgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDYWNoZSB0aGUgY29tcGlsZWQgZnVuY3Rpb25cblx0XHRjYWNoZWQgPSBjb21waWxlckNhY2hlKCBzZWxlY3RvciwgbWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzKCBlbGVtZW50TWF0Y2hlcnMsIHNldE1hdGNoZXJzICkgKTtcblxuXHRcdC8vIFNhdmUgc2VsZWN0b3IgYW5kIHRva2VuaXphdGlvblxuXHRcdGNhY2hlZC5zZWxlY3RvciA9IHNlbGVjdG9yO1xuXHR9XG5cdHJldHVybiBjYWNoZWQ7XG59O1xuXG4vKipcbiAqIEEgbG93LWxldmVsIHNlbGVjdGlvbiBmdW5jdGlvbiB0aGF0IHdvcmtzIHdpdGggU2l6emxlJ3MgY29tcGlsZWRcbiAqICBzZWxlY3RvciBmdW5jdGlvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfEZ1bmN0aW9ufSBzZWxlY3RvciBBIHNlbGVjdG9yIG9yIGEgcHJlLWNvbXBpbGVkXG4gKiAgc2VsZWN0b3IgZnVuY3Rpb24gYnVpbHQgd2l0aCBTaXp6bGUuY29tcGlsZVxuICogQHBhcmFtIHtFbGVtZW50fSBjb250ZXh0XG4gKiBAcGFyYW0ge0FycmF5fSBbcmVzdWx0c11cbiAqIEBwYXJhbSB7QXJyYXl9IFtzZWVkXSBBIHNldCBvZiBlbGVtZW50cyB0byBtYXRjaCBhZ2FpbnN0XG4gKi9cbnNlbGVjdCA9IFNpenpsZS5zZWxlY3QgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKSB7XG5cdHZhciBpLCB0b2tlbnMsIHRva2VuLCB0eXBlLCBmaW5kLFxuXHRcdGNvbXBpbGVkID0gdHlwZW9mIHNlbGVjdG9yID09PSBcImZ1bmN0aW9uXCIgJiYgc2VsZWN0b3IsXG5cdFx0bWF0Y2ggPSAhc2VlZCAmJiB0b2tlbml6ZSggKHNlbGVjdG9yID0gY29tcGlsZWQuc2VsZWN0b3IgfHwgc2VsZWN0b3IpICk7XG5cblx0cmVzdWx0cyA9IHJlc3VsdHMgfHwgW107XG5cblx0Ly8gVHJ5IHRvIG1pbmltaXplIG9wZXJhdGlvbnMgaWYgdGhlcmUgaXMgb25seSBvbmUgc2VsZWN0b3IgaW4gdGhlIGxpc3QgYW5kIG5vIHNlZWRcblx0Ly8gKHRoZSBsYXR0ZXIgb2Ygd2hpY2ggZ3VhcmFudGVlcyB1cyBjb250ZXh0KVxuXHRpZiAoIG1hdGNoLmxlbmd0aCA9PT0gMSApIHtcblxuXHRcdC8vIFJlZHVjZSBjb250ZXh0IGlmIHRoZSBsZWFkaW5nIGNvbXBvdW5kIHNlbGVjdG9yIGlzIGFuIElEXG5cdFx0dG9rZW5zID0gbWF0Y2hbMF0gPSBtYXRjaFswXS5zbGljZSggMCApO1xuXHRcdGlmICggdG9rZW5zLmxlbmd0aCA+IDIgJiYgKHRva2VuID0gdG9rZW5zWzBdKS50eXBlID09PSBcIklEXCIgJiZcblx0XHRcdFx0Y29udGV4dC5ub2RlVHlwZSA9PT0gOSAmJiBkb2N1bWVudElzSFRNTCAmJiBFeHByLnJlbGF0aXZlWyB0b2tlbnNbMV0udHlwZSBdICkge1xuXG5cdFx0XHRjb250ZXh0ID0gKCBFeHByLmZpbmRbXCJJRFwiXSggdG9rZW4ubWF0Y2hlc1swXS5yZXBsYWNlKHJ1bmVzY2FwZSwgZnVuZXNjYXBlKSwgY29udGV4dCApIHx8IFtdIClbMF07XG5cdFx0XHRpZiAoICFjb250ZXh0ICkge1xuXHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblxuXHRcdFx0Ly8gUHJlY29tcGlsZWQgbWF0Y2hlcnMgd2lsbCBzdGlsbCB2ZXJpZnkgYW5jZXN0cnksIHNvIHN0ZXAgdXAgYSBsZXZlbFxuXHRcdFx0fSBlbHNlIGlmICggY29tcGlsZWQgKSB7XG5cdFx0XHRcdGNvbnRleHQgPSBjb250ZXh0LnBhcmVudE5vZGU7XG5cdFx0XHR9XG5cblx0XHRcdHNlbGVjdG9yID0gc2VsZWN0b3Iuc2xpY2UoIHRva2Vucy5zaGlmdCgpLnZhbHVlLmxlbmd0aCApO1xuXHRcdH1cblxuXHRcdC8vIEZldGNoIGEgc2VlZCBzZXQgZm9yIHJpZ2h0LXRvLWxlZnQgbWF0Y2hpbmdcblx0XHRpID0gbWF0Y2hFeHByW1wibmVlZHNDb250ZXh0XCJdLnRlc3QoIHNlbGVjdG9yICkgPyAwIDogdG9rZW5zLmxlbmd0aDtcblx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdHRva2VuID0gdG9rZW5zW2ldO1xuXG5cdFx0XHQvLyBBYm9ydCBpZiB3ZSBoaXQgYSBjb21iaW5hdG9yXG5cdFx0XHRpZiAoIEV4cHIucmVsYXRpdmVbICh0eXBlID0gdG9rZW4udHlwZSkgXSApIHtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIChmaW5kID0gRXhwci5maW5kWyB0eXBlIF0pICkge1xuXHRcdFx0XHQvLyBTZWFyY2gsIGV4cGFuZGluZyBjb250ZXh0IGZvciBsZWFkaW5nIHNpYmxpbmcgY29tYmluYXRvcnNcblx0XHRcdFx0aWYgKCAoc2VlZCA9IGZpbmQoXG5cdFx0XHRcdFx0dG9rZW4ubWF0Y2hlc1swXS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLFxuXHRcdFx0XHRcdHJzaWJsaW5nLnRlc3QoIHRva2Vuc1swXS50eXBlICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8IGNvbnRleHRcblx0XHRcdFx0KSkgKSB7XG5cblx0XHRcdFx0XHQvLyBJZiBzZWVkIGlzIGVtcHR5IG9yIG5vIHRva2VucyByZW1haW4sIHdlIGNhbiByZXR1cm4gZWFybHlcblx0XHRcdFx0XHR0b2tlbnMuc3BsaWNlKCBpLCAxICk7XG5cdFx0XHRcdFx0c2VsZWN0b3IgPSBzZWVkLmxlbmd0aCAmJiB0b1NlbGVjdG9yKCB0b2tlbnMgKTtcblx0XHRcdFx0XHRpZiAoICFzZWxlY3RvciApIHtcblx0XHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIHNlZWQgKTtcblx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ29tcGlsZSBhbmQgZXhlY3V0ZSBhIGZpbHRlcmluZyBmdW5jdGlvbiBpZiBvbmUgaXMgbm90IHByb3ZpZGVkXG5cdC8vIFByb3ZpZGUgYG1hdGNoYCB0byBhdm9pZCByZXRva2VuaXphdGlvbiBpZiB3ZSBtb2RpZmllZCB0aGUgc2VsZWN0b3IgYWJvdmVcblx0KCBjb21waWxlZCB8fCBjb21waWxlKCBzZWxlY3RvciwgbWF0Y2ggKSApKFxuXHRcdHNlZWQsXG5cdFx0Y29udGV4dCxcblx0XHQhZG9jdW1lbnRJc0hUTUwsXG5cdFx0cmVzdWx0cyxcblx0XHQhY29udGV4dCB8fCByc2libGluZy50ZXN0KCBzZWxlY3RvciApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fCBjb250ZXh0XG5cdCk7XG5cdHJldHVybiByZXN1bHRzO1xufTtcblxuLy8gT25lLXRpbWUgYXNzaWdubWVudHNcblxuLy8gU29ydCBzdGFiaWxpdHlcbnN1cHBvcnQuc29ydFN0YWJsZSA9IGV4cGFuZG8uc3BsaXQoXCJcIikuc29ydCggc29ydE9yZGVyICkuam9pbihcIlwiKSA9PT0gZXhwYW5kbztcblxuLy8gU3VwcG9ydDogQ2hyb21lIDE0LTM1K1xuLy8gQWx3YXlzIGFzc3VtZSBkdXBsaWNhdGVzIGlmIHRoZXkgYXJlbid0IHBhc3NlZCB0byB0aGUgY29tcGFyaXNvbiBmdW5jdGlvblxuc3VwcG9ydC5kZXRlY3REdXBsaWNhdGVzID0gISFoYXNEdXBsaWNhdGU7XG5cbi8vIEluaXRpYWxpemUgYWdhaW5zdCB0aGUgZGVmYXVsdCBkb2N1bWVudFxuc2V0RG9jdW1lbnQoKTtcblxuLy8gU3VwcG9ydDogV2Via2l0PDUzNy4zMiAtIFNhZmFyaSA2LjAuMy9DaHJvbWUgMjUgKGZpeGVkIGluIENocm9tZSAyNylcbi8vIERldGFjaGVkIG5vZGVzIGNvbmZvdW5kaW5nbHkgZm9sbG93ICplYWNoIG90aGVyKlxuc3VwcG9ydC5zb3J0RGV0YWNoZWQgPSBhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHQvLyBTaG91bGQgcmV0dXJuIDEsIGJ1dCByZXR1cm5zIDQgKGZvbGxvd2luZylcblx0cmV0dXJuIGVsLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZmllbGRzZXRcIikgKSAmIDE7XG59KTtcblxuLy8gU3VwcG9ydDogSUU8OFxuLy8gUHJldmVudCBhdHRyaWJ1dGUvcHJvcGVydHkgXCJpbnRlcnBvbGF0aW9uXCJcbi8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM1MzY0MjklMjhWUy44NSUyOS5hc3B4XG5pZiAoICFhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRlbC5pbm5lckhUTUwgPSBcIjxhIGhyZWY9JyMnPjwvYT5cIjtcblx0cmV0dXJuIGVsLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKSA9PT0gXCIjXCIgO1xufSkgKSB7XG5cdGFkZEhhbmRsZSggXCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoXCIsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHtcblx0XHRpZiAoICFpc1hNTCApIHtcblx0XHRcdHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSwgbmFtZS50b0xvd2VyQ2FzZSgpID09PSBcInR5cGVcIiA/IDEgOiAyICk7XG5cdFx0fVxuXHR9KTtcbn1cblxuLy8gU3VwcG9ydDogSUU8OVxuLy8gVXNlIGRlZmF1bHRWYWx1ZSBpbiBwbGFjZSBvZiBnZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiKVxuaWYgKCAhc3VwcG9ydC5hdHRyaWJ1dGVzIHx8ICFhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRlbC5pbm5lckhUTUwgPSBcIjxpbnB1dC8+XCI7XG5cdGVsLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCBcInZhbHVlXCIsIFwiXCIgKTtcblx0cmV0dXJuIGVsLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCBcInZhbHVlXCIgKSA9PT0gXCJcIjtcbn0pICkge1xuXHRhZGRIYW5kbGUoIFwidmFsdWVcIiwgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdGlmICggIWlzWE1MICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbnB1dFwiICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZGVmYXVsdFZhbHVlO1xuXHRcdH1cblx0fSk7XG59XG5cbi8vIFN1cHBvcnQ6IElFPDlcbi8vIFVzZSBnZXRBdHRyaWJ1dGVOb2RlIHRvIGZldGNoIGJvb2xlYW5zIHdoZW4gZ2V0QXR0cmlidXRlIGxpZXNcbmlmICggIWFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdHJldHVybiBlbC5nZXRBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKSA9PSBudWxsO1xufSkgKSB7XG5cdGFkZEhhbmRsZSggYm9vbGVhbnMsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHtcblx0XHR2YXIgdmFsO1xuXHRcdGlmICggIWlzWE1MICkge1xuXHRcdFx0cmV0dXJuIGVsZW1bIG5hbWUgXSA9PT0gdHJ1ZSA/IG5hbWUudG9Mb3dlckNhc2UoKSA6XG5cdFx0XHRcdFx0KHZhbCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggbmFtZSApKSAmJiB2YWwuc3BlY2lmaWVkID9cblx0XHRcdFx0XHR2YWwudmFsdWUgOlxuXHRcdFx0XHRudWxsO1xuXHRcdH1cblx0fSk7XG59XG5cbnJldHVybiBTaXp6bGU7XG5cbn0pKCB3aW5kb3cgKTtcblxuXG5cbmpRdWVyeS5maW5kID0gU2l6emxlO1xualF1ZXJ5LmV4cHIgPSBTaXp6bGUuc2VsZWN0b3JzO1xuXG4vLyBEZXByZWNhdGVkXG5qUXVlcnkuZXhwclsgXCI6XCIgXSA9IGpRdWVyeS5leHByLnBzZXVkb3M7XG5qUXVlcnkudW5pcXVlU29ydCA9IGpRdWVyeS51bmlxdWUgPSBTaXp6bGUudW5pcXVlU29ydDtcbmpRdWVyeS50ZXh0ID0gU2l6emxlLmdldFRleHQ7XG5qUXVlcnkuaXNYTUxEb2MgPSBTaXp6bGUuaXNYTUw7XG5qUXVlcnkuY29udGFpbnMgPSBTaXp6bGUuY29udGFpbnM7XG5qUXVlcnkuZXNjYXBlU2VsZWN0b3IgPSBTaXp6bGUuZXNjYXBlO1xuXG5cblxuXG52YXIgZGlyID0gZnVuY3Rpb24oIGVsZW0sIGRpciwgdW50aWwgKSB7XG5cdHZhciBtYXRjaGVkID0gW10sXG5cdFx0dHJ1bmNhdGUgPSB1bnRpbCAhPT0gdW5kZWZpbmVkO1xuXG5cdHdoaWxlICggKCBlbGVtID0gZWxlbVsgZGlyIF0gKSAmJiBlbGVtLm5vZGVUeXBlICE9PSA5ICkge1xuXHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdGlmICggdHJ1bmNhdGUgJiYgalF1ZXJ5KCBlbGVtICkuaXMoIHVudGlsICkgKSB7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0bWF0Y2hlZC5wdXNoKCBlbGVtICk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBtYXRjaGVkO1xufTtcblxuXG52YXIgc2libGluZ3MgPSBmdW5jdGlvbiggbiwgZWxlbSApIHtcblx0dmFyIG1hdGNoZWQgPSBbXTtcblxuXHRmb3IgKCA7IG47IG4gPSBuLm5leHRTaWJsaW5nICkge1xuXHRcdGlmICggbi5ub2RlVHlwZSA9PT0gMSAmJiBuICE9PSBlbGVtICkge1xuXHRcdFx0bWF0Y2hlZC5wdXNoKCBuICk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG1hdGNoZWQ7XG59O1xuXG5cbnZhciBybmVlZHNDb250ZXh0ID0galF1ZXJ5LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0O1xuXG5cblxuZnVuY3Rpb24gbm9kZU5hbWUoIGVsZW0sIG5hbWUgKSB7XG5cbiAgcmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lLnRvTG93ZXJDYXNlKCk7XG5cbn07XG52YXIgcnNpbmdsZVRhZyA9ICggL148KFthLXpdW15cXC9cXDA+OlxceDIwXFx0XFxyXFxuXFxmXSopW1xceDIwXFx0XFxyXFxuXFxmXSpcXC8/Pig/OjxcXC9cXDE+fCkkL2kgKTtcblxuXG5cbi8vIEltcGxlbWVudCB0aGUgaWRlbnRpY2FsIGZ1bmN0aW9uYWxpdHkgZm9yIGZpbHRlciBhbmQgbm90XG5mdW5jdGlvbiB3aW5ub3coIGVsZW1lbnRzLCBxdWFsaWZpZXIsIG5vdCApIHtcblx0aWYgKCBpc0Z1bmN0aW9uKCBxdWFsaWZpZXIgKSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSwgaSApIHtcblx0XHRcdHJldHVybiAhIXF1YWxpZmllci5jYWxsKCBlbGVtLCBpLCBlbGVtICkgIT09IG5vdDtcblx0XHR9ICk7XG5cdH1cblxuXHQvLyBTaW5nbGUgZWxlbWVudFxuXHRpZiAoIHF1YWxpZmllci5ub2RlVHlwZSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiAoIGVsZW0gPT09IHF1YWxpZmllciApICE9PSBub3Q7XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gQXJyYXlsaWtlIG9mIGVsZW1lbnRzIChqUXVlcnksIGFyZ3VtZW50cywgQXJyYXkpXG5cdGlmICggdHlwZW9mIHF1YWxpZmllciAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiAoIGluZGV4T2YuY2FsbCggcXVhbGlmaWVyLCBlbGVtICkgPiAtMSApICE9PSBub3Q7XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gRmlsdGVyZWQgZGlyZWN0bHkgZm9yIGJvdGggc2ltcGxlIGFuZCBjb21wbGV4IHNlbGVjdG9yc1xuXHRyZXR1cm4galF1ZXJ5LmZpbHRlciggcXVhbGlmaWVyLCBlbGVtZW50cywgbm90ICk7XG59XG5cbmpRdWVyeS5maWx0ZXIgPSBmdW5jdGlvbiggZXhwciwgZWxlbXMsIG5vdCApIHtcblx0dmFyIGVsZW0gPSBlbGVtc1sgMCBdO1xuXG5cdGlmICggbm90ICkge1xuXHRcdGV4cHIgPSBcIjpub3QoXCIgKyBleHByICsgXCIpXCI7XG5cdH1cblxuXHRpZiAoIGVsZW1zLmxlbmd0aCA9PT0gMSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdHJldHVybiBqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoIGVsZW0sIGV4cHIgKSA/IFsgZWxlbSBdIDogW107XG5cdH1cblxuXHRyZXR1cm4galF1ZXJ5LmZpbmQubWF0Y2hlcyggZXhwciwgalF1ZXJ5LmdyZXAoIGVsZW1zLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZWxlbS5ub2RlVHlwZSA9PT0gMTtcblx0fSApICk7XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGZpbmQ6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR2YXIgaSwgcmV0LFxuXHRcdFx0bGVuID0gdGhpcy5sZW5ndGgsXG5cdFx0XHRzZWxmID0gdGhpcztcblxuXHRcdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkoIHNlbGVjdG9yICkuZmlsdGVyKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0Zm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0XHRpZiAoIGpRdWVyeS5jb250YWlucyggc2VsZlsgaSBdLCB0aGlzICkgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gKSApO1xuXHRcdH1cblxuXHRcdHJldCA9IHRoaXMucHVzaFN0YWNrKCBbXSApO1xuXG5cdFx0Zm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdGpRdWVyeS5maW5kKCBzZWxlY3Rvciwgc2VsZlsgaSBdLCByZXQgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbGVuID4gMSA/IGpRdWVyeS51bmlxdWVTb3J0KCByZXQgKSA6IHJldDtcblx0fSxcblx0ZmlsdGVyOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCB3aW5ub3coIHRoaXMsIHNlbGVjdG9yIHx8IFtdLCBmYWxzZSApICk7XG5cdH0sXG5cdG5vdDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggd2lubm93KCB0aGlzLCBzZWxlY3RvciB8fCBbXSwgdHJ1ZSApICk7XG5cdH0sXG5cdGlzOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuICEhd2lubm93KFxuXHRcdFx0dGhpcyxcblxuXHRcdFx0Ly8gSWYgdGhpcyBpcyBhIHBvc2l0aW9uYWwvcmVsYXRpdmUgc2VsZWN0b3IsIGNoZWNrIG1lbWJlcnNoaXAgaW4gdGhlIHJldHVybmVkIHNldFxuXHRcdFx0Ly8gc28gJChcInA6Zmlyc3RcIikuaXMoXCJwOmxhc3RcIikgd29uJ3QgcmV0dXJuIHRydWUgZm9yIGEgZG9jIHdpdGggdHdvIFwicFwiLlxuXHRcdFx0dHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiICYmIHJuZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3IgKSA/XG5cdFx0XHRcdGpRdWVyeSggc2VsZWN0b3IgKSA6XG5cdFx0XHRcdHNlbGVjdG9yIHx8IFtdLFxuXHRcdFx0ZmFsc2Vcblx0XHQpLmxlbmd0aDtcblx0fVxufSApO1xuXG5cbi8vIEluaXRpYWxpemUgYSBqUXVlcnkgb2JqZWN0XG5cblxuLy8gQSBjZW50cmFsIHJlZmVyZW5jZSB0byB0aGUgcm9vdCBqUXVlcnkoZG9jdW1lbnQpXG52YXIgcm9vdGpRdWVyeSxcblxuXHQvLyBBIHNpbXBsZSB3YXkgdG8gY2hlY2sgZm9yIEhUTUwgc3RyaW5nc1xuXHQvLyBQcmlvcml0aXplICNpZCBvdmVyIDx0YWc+IHRvIGF2b2lkIFhTUyB2aWEgbG9jYXRpb24uaGFzaCAoIzk1MjEpXG5cdC8vIFN0cmljdCBIVE1MIHJlY29nbml0aW9uICgjMTEyOTA6IG11c3Qgc3RhcnQgd2l0aCA8KVxuXHQvLyBTaG9ydGN1dCBzaW1wbGUgI2lkIGNhc2UgZm9yIHNwZWVkXG5cdHJxdWlja0V4cHIgPSAvXig/OlxccyooPFtcXHdcXFddKz4pW14+XSp8IyhbXFx3LV0rKSkkLyxcblxuXHRpbml0ID0galF1ZXJ5LmZuLmluaXQgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHJvb3QgKSB7XG5cdFx0dmFyIG1hdGNoLCBlbGVtO1xuXG5cdFx0Ly8gSEFORExFOiAkKFwiXCIpLCAkKG51bGwpLCAkKHVuZGVmaW5lZCksICQoZmFsc2UpXG5cdFx0aWYgKCAhc2VsZWN0b3IgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9XG5cblx0XHQvLyBNZXRob2QgaW5pdCgpIGFjY2VwdHMgYW4gYWx0ZXJuYXRlIHJvb3RqUXVlcnlcblx0XHQvLyBzbyBtaWdyYXRlIGNhbiBzdXBwb3J0IGpRdWVyeS5zdWIgKGdoLTIxMDEpXG5cdFx0cm9vdCA9IHJvb3QgfHwgcm9vdGpRdWVyeTtcblxuXHRcdC8vIEhhbmRsZSBIVE1MIHN0cmluZ3Ncblx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGlmICggc2VsZWN0b3JbIDAgXSA9PT0gXCI8XCIgJiZcblx0XHRcdFx0c2VsZWN0b3JbIHNlbGVjdG9yLmxlbmd0aCAtIDEgXSA9PT0gXCI+XCIgJiZcblx0XHRcdFx0c2VsZWN0b3IubGVuZ3RoID49IDMgKSB7XG5cblx0XHRcdFx0Ly8gQXNzdW1lIHRoYXQgc3RyaW5ncyB0aGF0IHN0YXJ0IGFuZCBlbmQgd2l0aCA8PiBhcmUgSFRNTCBhbmQgc2tpcCB0aGUgcmVnZXggY2hlY2tcblx0XHRcdFx0bWF0Y2ggPSBbIG51bGwsIHNlbGVjdG9yLCBudWxsIF07XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG1hdGNoID0gcnF1aWNrRXhwci5leGVjKCBzZWxlY3RvciApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBNYXRjaCBodG1sIG9yIG1ha2Ugc3VyZSBubyBjb250ZXh0IGlzIHNwZWNpZmllZCBmb3IgI2lkXG5cdFx0XHRpZiAoIG1hdGNoICYmICggbWF0Y2hbIDEgXSB8fCAhY29udGV4dCApICkge1xuXG5cdFx0XHRcdC8vIEhBTkRMRTogJChodG1sKSAtPiAkKGFycmF5KVxuXHRcdFx0XHRpZiAoIG1hdGNoWyAxIF0gKSB7XG5cdFx0XHRcdFx0Y29udGV4dCA9IGNvbnRleHQgaW5zdGFuY2VvZiBqUXVlcnkgPyBjb250ZXh0WyAwIF0gOiBjb250ZXh0O1xuXG5cdFx0XHRcdFx0Ly8gT3B0aW9uIHRvIHJ1biBzY3JpcHRzIGlzIHRydWUgZm9yIGJhY2stY29tcGF0XG5cdFx0XHRcdFx0Ly8gSW50ZW50aW9uYWxseSBsZXQgdGhlIGVycm9yIGJlIHRocm93biBpZiBwYXJzZUhUTUwgaXMgbm90IHByZXNlbnRcblx0XHRcdFx0XHRqUXVlcnkubWVyZ2UoIHRoaXMsIGpRdWVyeS5wYXJzZUhUTUwoXG5cdFx0XHRcdFx0XHRtYXRjaFsgMSBdLFxuXHRcdFx0XHRcdFx0Y29udGV4dCAmJiBjb250ZXh0Lm5vZGVUeXBlID8gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgOiBkb2N1bWVudCxcblx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHQpICk7XG5cblx0XHRcdFx0XHQvLyBIQU5ETEU6ICQoaHRtbCwgcHJvcHMpXG5cdFx0XHRcdFx0aWYgKCByc2luZ2xlVGFnLnRlc3QoIG1hdGNoWyAxIF0gKSAmJiBqUXVlcnkuaXNQbGFpbk9iamVjdCggY29udGV4dCApICkge1xuXHRcdFx0XHRcdFx0Zm9yICggbWF0Y2ggaW4gY29udGV4dCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBQcm9wZXJ0aWVzIG9mIGNvbnRleHQgYXJlIGNhbGxlZCBhcyBtZXRob2RzIGlmIHBvc3NpYmxlXG5cdFx0XHRcdFx0XHRcdGlmICggaXNGdW5jdGlvbiggdGhpc1sgbWF0Y2ggXSApICkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXNbIG1hdGNoIF0oIGNvbnRleHRbIG1hdGNoIF0gKTtcblxuXHRcdFx0XHRcdFx0XHQvLyAuLi5hbmQgb3RoZXJ3aXNlIHNldCBhcyBhdHRyaWJ1dGVzXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5hdHRyKCBtYXRjaCwgY29udGV4dFsgbWF0Y2ggXSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cblx0XHRcdFx0Ly8gSEFORExFOiAkKCNpZClcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIG1hdGNoWyAyIF0gKTtcblxuXHRcdFx0XHRcdGlmICggZWxlbSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gSW5qZWN0IHRoZSBlbGVtZW50IGRpcmVjdGx5IGludG8gdGhlIGpRdWVyeSBvYmplY3Rcblx0XHRcdFx0XHRcdHRoaXNbIDAgXSA9IGVsZW07XG5cdFx0XHRcdFx0XHR0aGlzLmxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9XG5cblx0XHRcdC8vIEhBTkRMRTogJChleHByLCAkKC4uLikpXG5cdFx0XHR9IGVsc2UgaWYgKCAhY29udGV4dCB8fCBjb250ZXh0LmpxdWVyeSApIHtcblx0XHRcdFx0cmV0dXJuICggY29udGV4dCB8fCByb290ICkuZmluZCggc2VsZWN0b3IgKTtcblxuXHRcdFx0Ly8gSEFORExFOiAkKGV4cHIsIGNvbnRleHQpXG5cdFx0XHQvLyAod2hpY2ggaXMganVzdCBlcXVpdmFsZW50IHRvOiAkKGNvbnRleHQpLmZpbmQoZXhwcilcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmNvbnN0cnVjdG9yKCBjb250ZXh0ICkuZmluZCggc2VsZWN0b3IgKTtcblx0XHRcdH1cblxuXHRcdC8vIEhBTkRMRTogJChET01FbGVtZW50KVxuXHRcdH0gZWxzZSBpZiAoIHNlbGVjdG9yLm5vZGVUeXBlICkge1xuXHRcdFx0dGhpc1sgMCBdID0gc2VsZWN0b3I7XG5cdFx0XHR0aGlzLmxlbmd0aCA9IDE7XG5cdFx0XHRyZXR1cm4gdGhpcztcblxuXHRcdC8vIEhBTkRMRTogJChmdW5jdGlvbilcblx0XHQvLyBTaG9ydGN1dCBmb3IgZG9jdW1lbnQgcmVhZHlcblx0XHR9IGVsc2UgaWYgKCBpc0Z1bmN0aW9uKCBzZWxlY3RvciApICkge1xuXHRcdFx0cmV0dXJuIHJvb3QucmVhZHkgIT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdHJvb3QucmVhZHkoIHNlbGVjdG9yICkgOlxuXG5cdFx0XHRcdC8vIEV4ZWN1dGUgaW1tZWRpYXRlbHkgaWYgcmVhZHkgaXMgbm90IHByZXNlbnRcblx0XHRcdFx0c2VsZWN0b3IoIGpRdWVyeSApO1xuXHRcdH1cblxuXHRcdHJldHVybiBqUXVlcnkubWFrZUFycmF5KCBzZWxlY3RvciwgdGhpcyApO1xuXHR9O1xuXG4vLyBHaXZlIHRoZSBpbml0IGZ1bmN0aW9uIHRoZSBqUXVlcnkgcHJvdG90eXBlIGZvciBsYXRlciBpbnN0YW50aWF0aW9uXG5pbml0LnByb3RvdHlwZSA9IGpRdWVyeS5mbjtcblxuLy8gSW5pdGlhbGl6ZSBjZW50cmFsIHJlZmVyZW5jZVxucm9vdGpRdWVyeSA9IGpRdWVyeSggZG9jdW1lbnQgKTtcblxuXG52YXIgcnBhcmVudHNwcmV2ID0gL14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sXG5cblx0Ly8gTWV0aG9kcyBndWFyYW50ZWVkIHRvIHByb2R1Y2UgYSB1bmlxdWUgc2V0IHdoZW4gc3RhcnRpbmcgZnJvbSBhIHVuaXF1ZSBzZXRcblx0Z3VhcmFudGVlZFVuaXF1ZSA9IHtcblx0XHRjaGlsZHJlbjogdHJ1ZSxcblx0XHRjb250ZW50czogdHJ1ZSxcblx0XHRuZXh0OiB0cnVlLFxuXHRcdHByZXY6IHRydWVcblx0fTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRoYXM6IGZ1bmN0aW9uKCB0YXJnZXQgKSB7XG5cdFx0dmFyIHRhcmdldHMgPSBqUXVlcnkoIHRhcmdldCwgdGhpcyApLFxuXHRcdFx0bCA9IHRhcmdldHMubGVuZ3RoO1xuXG5cdFx0cmV0dXJuIHRoaXMuZmlsdGVyKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBpID0gMDtcblx0XHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0aWYgKCBqUXVlcnkuY29udGFpbnMoIHRoaXMsIHRhcmdldHNbIGkgXSApICkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGNsb3Nlc3Q6IGZ1bmN0aW9uKCBzZWxlY3RvcnMsIGNvbnRleHQgKSB7XG5cdFx0dmFyIGN1cixcblx0XHRcdGkgPSAwLFxuXHRcdFx0bCA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0bWF0Y2hlZCA9IFtdLFxuXHRcdFx0dGFyZ2V0cyA9IHR5cGVvZiBzZWxlY3RvcnMgIT09IFwic3RyaW5nXCIgJiYgalF1ZXJ5KCBzZWxlY3RvcnMgKTtcblxuXHRcdC8vIFBvc2l0aW9uYWwgc2VsZWN0b3JzIG5ldmVyIG1hdGNoLCBzaW5jZSB0aGVyZSdzIG5vIF9zZWxlY3Rpb25fIGNvbnRleHRcblx0XHRpZiAoICFybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9ycyApICkge1xuXHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRmb3IgKCBjdXIgPSB0aGlzWyBpIF07IGN1ciAmJiBjdXIgIT09IGNvbnRleHQ7IGN1ciA9IGN1ci5wYXJlbnROb2RlICkge1xuXG5cdFx0XHRcdFx0Ly8gQWx3YXlzIHNraXAgZG9jdW1lbnQgZnJhZ21lbnRzXG5cdFx0XHRcdFx0aWYgKCBjdXIubm9kZVR5cGUgPCAxMSAmJiAoIHRhcmdldHMgP1xuXHRcdFx0XHRcdFx0dGFyZ2V0cy5pbmRleCggY3VyICkgPiAtMSA6XG5cblx0XHRcdFx0XHRcdC8vIERvbid0IHBhc3Mgbm9uLWVsZW1lbnRzIHRvIFNpenpsZVxuXHRcdFx0XHRcdFx0Y3VyLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRcdFx0XHRcdGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggY3VyLCBzZWxlY3RvcnMgKSApICkge1xuXG5cdFx0XHRcdFx0XHRtYXRjaGVkLnB1c2goIGN1ciApO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBtYXRjaGVkLmxlbmd0aCA+IDEgPyBqUXVlcnkudW5pcXVlU29ydCggbWF0Y2hlZCApIDogbWF0Y2hlZCApO1xuXHR9LFxuXG5cdC8vIERldGVybWluZSB0aGUgcG9zaXRpb24gb2YgYW4gZWxlbWVudCB3aXRoaW4gdGhlIHNldFxuXHRpbmRleDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHQvLyBObyBhcmd1bWVudCwgcmV0dXJuIGluZGV4IGluIHBhcmVudFxuXHRcdGlmICggIWVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gKCB0aGlzWyAwIF0gJiYgdGhpc1sgMCBdLnBhcmVudE5vZGUgKSA/IHRoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoIDogLTE7XG5cdFx0fVxuXG5cdFx0Ly8gSW5kZXggaW4gc2VsZWN0b3Jcblx0XHRpZiAoIHR5cGVvZiBlbGVtID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIGluZGV4T2YuY2FsbCggalF1ZXJ5KCBlbGVtICksIHRoaXNbIDAgXSApO1xuXHRcdH1cblxuXHRcdC8vIExvY2F0ZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRlc2lyZWQgZWxlbWVudFxuXHRcdHJldHVybiBpbmRleE9mLmNhbGwoIHRoaXMsXG5cblx0XHRcdC8vIElmIGl0IHJlY2VpdmVzIGEgalF1ZXJ5IG9iamVjdCwgdGhlIGZpcnN0IGVsZW1lbnQgaXMgdXNlZFxuXHRcdFx0ZWxlbS5qcXVlcnkgPyBlbGVtWyAwIF0gOiBlbGVtXG5cdFx0KTtcblx0fSxcblxuXHRhZGQ6IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soXG5cdFx0XHRqUXVlcnkudW5pcXVlU29ydChcblx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCB0aGlzLmdldCgpLCBqUXVlcnkoIHNlbGVjdG9yLCBjb250ZXh0ICkgKVxuXHRcdFx0KVxuXHRcdCk7XG5cdH0sXG5cblx0YWRkQmFjazogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiB0aGlzLmFkZCggc2VsZWN0b3IgPT0gbnVsbCA/XG5cdFx0XHR0aGlzLnByZXZPYmplY3QgOiB0aGlzLnByZXZPYmplY3QuZmlsdGVyKCBzZWxlY3RvciApXG5cdFx0KTtcblx0fVxufSApO1xuXG5mdW5jdGlvbiBzaWJsaW5nKCBjdXIsIGRpciApIHtcblx0d2hpbGUgKCAoIGN1ciA9IGN1clsgZGlyIF0gKSAmJiBjdXIubm9kZVR5cGUgIT09IDEgKSB7fVxuXHRyZXR1cm4gY3VyO1xufVxuXG5qUXVlcnkuZWFjaCgge1xuXHRwYXJlbnQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7XG5cdFx0cmV0dXJuIHBhcmVudCAmJiBwYXJlbnQubm9kZVR5cGUgIT09IDExID8gcGFyZW50IDogbnVsbDtcblx0fSxcblx0cGFyZW50czogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJwYXJlbnROb2RlXCIgKTtcblx0fSxcblx0cGFyZW50c1VudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJwYXJlbnROb2RlXCIsIHVudGlsICk7XG5cdH0sXG5cdG5leHQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBzaWJsaW5nKCBlbGVtLCBcIm5leHRTaWJsaW5nXCIgKTtcblx0fSxcblx0cHJldjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIHNpYmxpbmcoIGVsZW0sIFwicHJldmlvdXNTaWJsaW5nXCIgKTtcblx0fSxcblx0bmV4dEFsbDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJuZXh0U2libGluZ1wiICk7XG5cdH0sXG5cdHByZXZBbGw6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBkaXIoIGVsZW0sIFwicHJldmlvdXNTaWJsaW5nXCIgKTtcblx0fSxcblx0bmV4dFVudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJuZXh0U2libGluZ1wiLCB1bnRpbCApO1xuXHR9LFxuXHRwcmV2VW50aWw6IGZ1bmN0aW9uKCBlbGVtLCBpLCB1bnRpbCApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcInByZXZpb3VzU2libGluZ1wiLCB1bnRpbCApO1xuXHR9LFxuXHRzaWJsaW5nczogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIHNpYmxpbmdzKCAoIGVsZW0ucGFyZW50Tm9kZSB8fCB7fSApLmZpcnN0Q2hpbGQsIGVsZW0gKTtcblx0fSxcblx0Y2hpbGRyZW46IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBzaWJsaW5ncyggZWxlbS5maXJzdENoaWxkICk7XG5cdH0sXG5cdGNvbnRlbnRzOiBmdW5jdGlvbiggZWxlbSApIHtcbiAgICAgICAgaWYgKCBub2RlTmFtZSggZWxlbSwgXCJpZnJhbWVcIiApICkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW0uY29udGVudERvY3VtZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3VwcG9ydDogSUUgOSAtIDExIG9ubHksIGlPUyA3IG9ubHksIEFuZHJvaWQgQnJvd3NlciA8PTQuMyBvbmx5XG4gICAgICAgIC8vIFRyZWF0IHRoZSB0ZW1wbGF0ZSBlbGVtZW50IGFzIGEgcmVndWxhciBvbmUgaW4gYnJvd3NlcnMgdGhhdFxuICAgICAgICAvLyBkb24ndCBzdXBwb3J0IGl0LlxuICAgICAgICBpZiAoIG5vZGVOYW1lKCBlbGVtLCBcInRlbXBsYXRlXCIgKSApIHtcbiAgICAgICAgICAgIGVsZW0gPSBlbGVtLmNvbnRlbnQgfHwgZWxlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBqUXVlcnkubWVyZ2UoIFtdLCBlbGVtLmNoaWxkTm9kZXMgKTtcblx0fVxufSwgZnVuY3Rpb24oIG5hbWUsIGZuICkge1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCB1bnRpbCwgc2VsZWN0b3IgKSB7XG5cdFx0dmFyIG1hdGNoZWQgPSBqUXVlcnkubWFwKCB0aGlzLCBmbiwgdW50aWwgKTtcblxuXHRcdGlmICggbmFtZS5zbGljZSggLTUgKSAhPT0gXCJVbnRpbFwiICkge1xuXHRcdFx0c2VsZWN0b3IgPSB1bnRpbDtcblx0XHR9XG5cblx0XHRpZiAoIHNlbGVjdG9yICYmIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdG1hdGNoZWQgPSBqUXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgbWF0Y2hlZCApO1xuXHRcdH1cblxuXHRcdGlmICggdGhpcy5sZW5ndGggPiAxICkge1xuXG5cdFx0XHQvLyBSZW1vdmUgZHVwbGljYXRlc1xuXHRcdFx0aWYgKCAhZ3VhcmFudGVlZFVuaXF1ZVsgbmFtZSBdICkge1xuXHRcdFx0XHRqUXVlcnkudW5pcXVlU29ydCggbWF0Y2hlZCApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZXZlcnNlIG9yZGVyIGZvciBwYXJlbnRzKiBhbmQgcHJldi1kZXJpdmF0aXZlc1xuXHRcdFx0aWYgKCBycGFyZW50c3ByZXYudGVzdCggbmFtZSApICkge1xuXHRcdFx0XHRtYXRjaGVkLnJldmVyc2UoKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIG1hdGNoZWQgKTtcblx0fTtcbn0gKTtcbnZhciBybm90aHRtbHdoaXRlID0gKCAvW15cXHgyMFxcdFxcclxcblxcZl0rL2cgKTtcblxuXG5cbi8vIENvbnZlcnQgU3RyaW5nLWZvcm1hdHRlZCBvcHRpb25zIGludG8gT2JqZWN0LWZvcm1hdHRlZCBvbmVzXG5mdW5jdGlvbiBjcmVhdGVPcHRpb25zKCBvcHRpb25zICkge1xuXHR2YXIgb2JqZWN0ID0ge307XG5cdGpRdWVyeS5lYWNoKCBvcHRpb25zLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW10sIGZ1bmN0aW9uKCBfLCBmbGFnICkge1xuXHRcdG9iamVjdFsgZmxhZyBdID0gdHJ1ZTtcblx0fSApO1xuXHRyZXR1cm4gb2JqZWN0O1xufVxuXG4vKlxuICogQ3JlYXRlIGEgY2FsbGJhY2sgbGlzdCB1c2luZyB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6XG4gKlxuICpcdG9wdGlvbnM6IGFuIG9wdGlvbmFsIGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIG9wdGlvbnMgdGhhdCB3aWxsIGNoYW5nZSBob3dcbiAqXHRcdFx0dGhlIGNhbGxiYWNrIGxpc3QgYmVoYXZlcyBvciBhIG1vcmUgdHJhZGl0aW9uYWwgb3B0aW9uIG9iamVjdFxuICpcbiAqIEJ5IGRlZmF1bHQgYSBjYWxsYmFjayBsaXN0IHdpbGwgYWN0IGxpa2UgYW4gZXZlbnQgY2FsbGJhY2sgbGlzdCBhbmQgY2FuIGJlXG4gKiBcImZpcmVkXCIgbXVsdGlwbGUgdGltZXMuXG4gKlxuICogUG9zc2libGUgb3B0aW9uczpcbiAqXG4gKlx0b25jZTpcdFx0XHR3aWxsIGVuc3VyZSB0aGUgY2FsbGJhY2sgbGlzdCBjYW4gb25seSBiZSBmaXJlZCBvbmNlIChsaWtlIGEgRGVmZXJyZWQpXG4gKlxuICpcdG1lbW9yeTpcdFx0XHR3aWxsIGtlZXAgdHJhY2sgb2YgcHJldmlvdXMgdmFsdWVzIGFuZCB3aWxsIGNhbGwgYW55IGNhbGxiYWNrIGFkZGVkXG4gKlx0XHRcdFx0XHRhZnRlciB0aGUgbGlzdCBoYXMgYmVlbiBmaXJlZCByaWdodCBhd2F5IHdpdGggdGhlIGxhdGVzdCBcIm1lbW9yaXplZFwiXG4gKlx0XHRcdFx0XHR2YWx1ZXMgKGxpa2UgYSBEZWZlcnJlZClcbiAqXG4gKlx0dW5pcXVlOlx0XHRcdHdpbGwgZW5zdXJlIGEgY2FsbGJhY2sgY2FuIG9ubHkgYmUgYWRkZWQgb25jZSAobm8gZHVwbGljYXRlIGluIHRoZSBsaXN0KVxuICpcbiAqXHRzdG9wT25GYWxzZTpcdGludGVycnVwdCBjYWxsaW5ncyB3aGVuIGEgY2FsbGJhY2sgcmV0dXJucyBmYWxzZVxuICpcbiAqL1xualF1ZXJ5LkNhbGxiYWNrcyA9IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXG5cdC8vIENvbnZlcnQgb3B0aW9ucyBmcm9tIFN0cmluZy1mb3JtYXR0ZWQgdG8gT2JqZWN0LWZvcm1hdHRlZCBpZiBuZWVkZWRcblx0Ly8gKHdlIGNoZWNrIGluIGNhY2hlIGZpcnN0KVxuXHRvcHRpb25zID0gdHlwZW9mIG9wdGlvbnMgPT09IFwic3RyaW5nXCIgP1xuXHRcdGNyZWF0ZU9wdGlvbnMoIG9wdGlvbnMgKSA6XG5cdFx0alF1ZXJ5LmV4dGVuZCgge30sIG9wdGlvbnMgKTtcblxuXHR2YXIgLy8gRmxhZyB0byBrbm93IGlmIGxpc3QgaXMgY3VycmVudGx5IGZpcmluZ1xuXHRcdGZpcmluZyxcblxuXHRcdC8vIExhc3QgZmlyZSB2YWx1ZSBmb3Igbm9uLWZvcmdldHRhYmxlIGxpc3RzXG5cdFx0bWVtb3J5LFxuXG5cdFx0Ly8gRmxhZyB0byBrbm93IGlmIGxpc3Qgd2FzIGFscmVhZHkgZmlyZWRcblx0XHRmaXJlZCxcblxuXHRcdC8vIEZsYWcgdG8gcHJldmVudCBmaXJpbmdcblx0XHRsb2NrZWQsXG5cblx0XHQvLyBBY3R1YWwgY2FsbGJhY2sgbGlzdFxuXHRcdGxpc3QgPSBbXSxcblxuXHRcdC8vIFF1ZXVlIG9mIGV4ZWN1dGlvbiBkYXRhIGZvciByZXBlYXRhYmxlIGxpc3RzXG5cdFx0cXVldWUgPSBbXSxcblxuXHRcdC8vIEluZGV4IG9mIGN1cnJlbnRseSBmaXJpbmcgY2FsbGJhY2sgKG1vZGlmaWVkIGJ5IGFkZC9yZW1vdmUgYXMgbmVlZGVkKVxuXHRcdGZpcmluZ0luZGV4ID0gLTEsXG5cblx0XHQvLyBGaXJlIGNhbGxiYWNrc1xuXHRcdGZpcmUgPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gRW5mb3JjZSBzaW5nbGUtZmlyaW5nXG5cdFx0XHRsb2NrZWQgPSBsb2NrZWQgfHwgb3B0aW9ucy5vbmNlO1xuXG5cdFx0XHQvLyBFeGVjdXRlIGNhbGxiYWNrcyBmb3IgYWxsIHBlbmRpbmcgZXhlY3V0aW9ucyxcblx0XHRcdC8vIHJlc3BlY3RpbmcgZmlyaW5nSW5kZXggb3ZlcnJpZGVzIGFuZCBydW50aW1lIGNoYW5nZXNcblx0XHRcdGZpcmVkID0gZmlyaW5nID0gdHJ1ZTtcblx0XHRcdGZvciAoIDsgcXVldWUubGVuZ3RoOyBmaXJpbmdJbmRleCA9IC0xICkge1xuXHRcdFx0XHRtZW1vcnkgPSBxdWV1ZS5zaGlmdCgpO1xuXHRcdFx0XHR3aGlsZSAoICsrZmlyaW5nSW5kZXggPCBsaXN0Lmxlbmd0aCApIHtcblxuXHRcdFx0XHRcdC8vIFJ1biBjYWxsYmFjayBhbmQgY2hlY2sgZm9yIGVhcmx5IHRlcm1pbmF0aW9uXG5cdFx0XHRcdFx0aWYgKCBsaXN0WyBmaXJpbmdJbmRleCBdLmFwcGx5KCBtZW1vcnlbIDAgXSwgbWVtb3J5WyAxIF0gKSA9PT0gZmFsc2UgJiZcblx0XHRcdFx0XHRcdG9wdGlvbnMuc3RvcE9uRmFsc2UgKSB7XG5cblx0XHRcdFx0XHRcdC8vIEp1bXAgdG8gZW5kIGFuZCBmb3JnZXQgdGhlIGRhdGEgc28gLmFkZCBkb2Vzbid0IHJlLWZpcmVcblx0XHRcdFx0XHRcdGZpcmluZ0luZGV4ID0gbGlzdC5sZW5ndGg7XG5cdFx0XHRcdFx0XHRtZW1vcnkgPSBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gRm9yZ2V0IHRoZSBkYXRhIGlmIHdlJ3JlIGRvbmUgd2l0aCBpdFxuXHRcdFx0aWYgKCAhb3B0aW9ucy5tZW1vcnkgKSB7XG5cdFx0XHRcdG1lbW9yeSA9IGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRmaXJpbmcgPSBmYWxzZTtcblxuXHRcdFx0Ly8gQ2xlYW4gdXAgaWYgd2UncmUgZG9uZSBmaXJpbmcgZm9yIGdvb2Rcblx0XHRcdGlmICggbG9ja2VkICkge1xuXG5cdFx0XHRcdC8vIEtlZXAgYW4gZW1wdHkgbGlzdCBpZiB3ZSBoYXZlIGRhdGEgZm9yIGZ1dHVyZSBhZGQgY2FsbHNcblx0XHRcdFx0aWYgKCBtZW1vcnkgKSB7XG5cdFx0XHRcdFx0bGlzdCA9IFtdO1xuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSwgdGhpcyBvYmplY3QgaXMgc3BlbnRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRsaXN0ID0gXCJcIjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHQvLyBBY3R1YWwgQ2FsbGJhY2tzIG9iamVjdFxuXHRcdHNlbGYgPSB7XG5cblx0XHRcdC8vIEFkZCBhIGNhbGxiYWNrIG9yIGEgY29sbGVjdGlvbiBvZiBjYWxsYmFja3MgdG8gdGhlIGxpc3Rcblx0XHRcdGFkZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggbGlzdCApIHtcblxuXHRcdFx0XHRcdC8vIElmIHdlIGhhdmUgbWVtb3J5IGZyb20gYSBwYXN0IHJ1biwgd2Ugc2hvdWxkIGZpcmUgYWZ0ZXIgYWRkaW5nXG5cdFx0XHRcdFx0aWYgKCBtZW1vcnkgJiYgIWZpcmluZyApIHtcblx0XHRcdFx0XHRcdGZpcmluZ0luZGV4ID0gbGlzdC5sZW5ndGggLSAxO1xuXHRcdFx0XHRcdFx0cXVldWUucHVzaCggbWVtb3J5ICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0KCBmdW5jdGlvbiBhZGQoIGFyZ3MgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkuZWFjaCggYXJncywgZnVuY3Rpb24oIF8sIGFyZyApIHtcblx0XHRcdFx0XHRcdFx0aWYgKCBpc0Z1bmN0aW9uKCBhcmcgKSApIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoICFvcHRpb25zLnVuaXF1ZSB8fCAhc2VsZi5oYXMoIGFyZyApICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0bGlzdC5wdXNoKCBhcmcgKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoIGFyZyAmJiBhcmcubGVuZ3RoICYmIHRvVHlwZSggYXJnICkgIT09IFwic3RyaW5nXCIgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBJbnNwZWN0IHJlY3Vyc2l2ZWx5XG5cdFx0XHRcdFx0XHRcdFx0YWRkKCBhcmcgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSApO1xuXHRcdFx0XHRcdH0gKSggYXJndW1lbnRzICk7XG5cblx0XHRcdFx0XHRpZiAoIG1lbW9yeSAmJiAhZmlyaW5nICkge1xuXHRcdFx0XHRcdFx0ZmlyZSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIFJlbW92ZSBhIGNhbGxiYWNrIGZyb20gdGhlIGxpc3Rcblx0XHRcdHJlbW92ZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGpRdWVyeS5lYWNoKCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBfLCBhcmcgKSB7XG5cdFx0XHRcdFx0dmFyIGluZGV4O1xuXHRcdFx0XHRcdHdoaWxlICggKCBpbmRleCA9IGpRdWVyeS5pbkFycmF5KCBhcmcsIGxpc3QsIGluZGV4ICkgKSA+IC0xICkge1xuXHRcdFx0XHRcdFx0bGlzdC5zcGxpY2UoIGluZGV4LCAxICk7XG5cblx0XHRcdFx0XHRcdC8vIEhhbmRsZSBmaXJpbmcgaW5kZXhlc1xuXHRcdFx0XHRcdFx0aWYgKCBpbmRleCA8PSBmaXJpbmdJbmRleCApIHtcblx0XHRcdFx0XHRcdFx0ZmlyaW5nSW5kZXgtLTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKTtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBDaGVjayBpZiBhIGdpdmVuIGNhbGxiYWNrIGlzIGluIHRoZSBsaXN0LlxuXHRcdFx0Ly8gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHJldHVybiB3aGV0aGVyIG9yIG5vdCBsaXN0IGhhcyBjYWxsYmFja3MgYXR0YWNoZWQuXG5cdFx0XHRoYXM6IGZ1bmN0aW9uKCBmbiApIHtcblx0XHRcdFx0cmV0dXJuIGZuID9cblx0XHRcdFx0XHRqUXVlcnkuaW5BcnJheSggZm4sIGxpc3QgKSA+IC0xIDpcblx0XHRcdFx0XHRsaXN0Lmxlbmd0aCA+IDA7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBSZW1vdmUgYWxsIGNhbGxiYWNrcyBmcm9tIHRoZSBsaXN0XG5cdFx0XHRlbXB0eTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggbGlzdCApIHtcblx0XHRcdFx0XHRsaXN0ID0gW107XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBEaXNhYmxlIC5maXJlIGFuZCAuYWRkXG5cdFx0XHQvLyBBYm9ydCBhbnkgY3VycmVudC9wZW5kaW5nIGV4ZWN1dGlvbnNcblx0XHRcdC8vIENsZWFyIGFsbCBjYWxsYmFja3MgYW5kIHZhbHVlc1xuXHRcdFx0ZGlzYWJsZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGxvY2tlZCA9IHF1ZXVlID0gW107XG5cdFx0XHRcdGxpc3QgPSBtZW1vcnkgPSBcIlwiO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cdFx0XHRkaXNhYmxlZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiAhbGlzdDtcblx0XHRcdH0sXG5cblx0XHRcdC8vIERpc2FibGUgLmZpcmVcblx0XHRcdC8vIEFsc28gZGlzYWJsZSAuYWRkIHVubGVzcyB3ZSBoYXZlIG1lbW9yeSAoc2luY2UgaXQgd291bGQgaGF2ZSBubyBlZmZlY3QpXG5cdFx0XHQvLyBBYm9ydCBhbnkgcGVuZGluZyBleGVjdXRpb25zXG5cdFx0XHRsb2NrOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0bG9ja2VkID0gcXVldWUgPSBbXTtcblx0XHRcdFx0aWYgKCAhbWVtb3J5ICYmICFmaXJpbmcgKSB7XG5cdFx0XHRcdFx0bGlzdCA9IG1lbW9yeSA9IFwiXCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXHRcdFx0bG9ja2VkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuICEhbG9ja2VkO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gQ2FsbCBhbGwgY2FsbGJhY2tzIHdpdGggdGhlIGdpdmVuIGNvbnRleHQgYW5kIGFyZ3VtZW50c1xuXHRcdFx0ZmlyZVdpdGg6IGZ1bmN0aW9uKCBjb250ZXh0LCBhcmdzICkge1xuXHRcdFx0XHRpZiAoICFsb2NrZWQgKSB7XG5cdFx0XHRcdFx0YXJncyA9IGFyZ3MgfHwgW107XG5cdFx0XHRcdFx0YXJncyA9IFsgY29udGV4dCwgYXJncy5zbGljZSA/IGFyZ3Muc2xpY2UoKSA6IGFyZ3MgXTtcblx0XHRcdFx0XHRxdWV1ZS5wdXNoKCBhcmdzICk7XG5cdFx0XHRcdFx0aWYgKCAhZmlyaW5nICkge1xuXHRcdFx0XHRcdFx0ZmlyZSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIENhbGwgYWxsIHRoZSBjYWxsYmFja3Mgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzXG5cdFx0XHRmaXJlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0c2VsZi5maXJlV2l0aCggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gVG8ga25vdyBpZiB0aGUgY2FsbGJhY2tzIGhhdmUgYWxyZWFkeSBiZWVuIGNhbGxlZCBhdCBsZWFzdCBvbmNlXG5cdFx0XHRmaXJlZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiAhIWZpcmVkO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0cmV0dXJuIHNlbGY7XG59O1xuXG5cbmZ1bmN0aW9uIElkZW50aXR5KCB2ICkge1xuXHRyZXR1cm4gdjtcbn1cbmZ1bmN0aW9uIFRocm93ZXIoIGV4ICkge1xuXHR0aHJvdyBleDtcbn1cblxuZnVuY3Rpb24gYWRvcHRWYWx1ZSggdmFsdWUsIHJlc29sdmUsIHJlamVjdCwgbm9WYWx1ZSApIHtcblx0dmFyIG1ldGhvZDtcblxuXHR0cnkge1xuXG5cdFx0Ly8gQ2hlY2sgZm9yIHByb21pc2UgYXNwZWN0IGZpcnN0IHRvIHByaXZpbGVnZSBzeW5jaHJvbm91cyBiZWhhdmlvclxuXHRcdGlmICggdmFsdWUgJiYgaXNGdW5jdGlvbiggKCBtZXRob2QgPSB2YWx1ZS5wcm9taXNlICkgKSApIHtcblx0XHRcdG1ldGhvZC5jYWxsKCB2YWx1ZSApLmRvbmUoIHJlc29sdmUgKS5mYWlsKCByZWplY3QgKTtcblxuXHRcdC8vIE90aGVyIHRoZW5hYmxlc1xuXHRcdH0gZWxzZSBpZiAoIHZhbHVlICYmIGlzRnVuY3Rpb24oICggbWV0aG9kID0gdmFsdWUudGhlbiApICkgKSB7XG5cdFx0XHRtZXRob2QuY2FsbCggdmFsdWUsIHJlc29sdmUsIHJlamVjdCApO1xuXG5cdFx0Ly8gT3RoZXIgbm9uLXRoZW5hYmxlc1xuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIENvbnRyb2wgYHJlc29sdmVgIGFyZ3VtZW50cyBieSBsZXR0aW5nIEFycmF5I3NsaWNlIGNhc3QgYm9vbGVhbiBgbm9WYWx1ZWAgdG8gaW50ZWdlcjpcblx0XHRcdC8vICogZmFsc2U6IFsgdmFsdWUgXS5zbGljZSggMCApID0+IHJlc29sdmUoIHZhbHVlIClcblx0XHRcdC8vICogdHJ1ZTogWyB2YWx1ZSBdLnNsaWNlKCAxICkgPT4gcmVzb2x2ZSgpXG5cdFx0XHRyZXNvbHZlLmFwcGx5KCB1bmRlZmluZWQsIFsgdmFsdWUgXS5zbGljZSggbm9WYWx1ZSApICk7XG5cdFx0fVxuXG5cdC8vIEZvciBQcm9taXNlcy9BKywgY29udmVydCBleGNlcHRpb25zIGludG8gcmVqZWN0aW9uc1xuXHQvLyBTaW5jZSBqUXVlcnkud2hlbiBkb2Vzbid0IHVud3JhcCB0aGVuYWJsZXMsIHdlIGNhbiBza2lwIHRoZSBleHRyYSBjaGVja3MgYXBwZWFyaW5nIGluXG5cdC8vIERlZmVycmVkI3RoZW4gdG8gY29uZGl0aW9uYWxseSBzdXBwcmVzcyByZWplY3Rpb24uXG5cdH0gY2F0Y2ggKCB2YWx1ZSApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIG9ubHlcblx0XHQvLyBTdHJpY3QgbW9kZSBmdW5jdGlvbnMgaW52b2tlZCB3aXRob3V0IC5jYWxsLy5hcHBseSBnZXQgZ2xvYmFsLW9iamVjdCBjb250ZXh0XG5cdFx0cmVqZWN0LmFwcGx5KCB1bmRlZmluZWQsIFsgdmFsdWUgXSApO1xuXHR9XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHREZWZlcnJlZDogZnVuY3Rpb24oIGZ1bmMgKSB7XG5cdFx0dmFyIHR1cGxlcyA9IFtcblxuXHRcdFx0XHQvLyBhY3Rpb24sIGFkZCBsaXN0ZW5lciwgY2FsbGJhY2tzLFxuXHRcdFx0XHQvLyAuLi4gLnRoZW4gaGFuZGxlcnMsIGFyZ3VtZW50IGluZGV4LCBbZmluYWwgc3RhdGVdXG5cdFx0XHRcdFsgXCJub3RpZnlcIiwgXCJwcm9ncmVzc1wiLCBqUXVlcnkuQ2FsbGJhY2tzKCBcIm1lbW9yeVwiICksXG5cdFx0XHRcdFx0alF1ZXJ5LkNhbGxiYWNrcyggXCJtZW1vcnlcIiApLCAyIF0sXG5cdFx0XHRcdFsgXCJyZXNvbHZlXCIsIFwiZG9uZVwiLCBqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKSxcblx0XHRcdFx0XHRqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKSwgMCwgXCJyZXNvbHZlZFwiIF0sXG5cdFx0XHRcdFsgXCJyZWplY3RcIiwgXCJmYWlsXCIsIGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLFxuXHRcdFx0XHRcdGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLCAxLCBcInJlamVjdGVkXCIgXVxuXHRcdFx0XSxcblx0XHRcdHN0YXRlID0gXCJwZW5kaW5nXCIsXG5cdFx0XHRwcm9taXNlID0ge1xuXHRcdFx0XHRzdGF0ZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHN0YXRlO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRhbHdheXM6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGRlZmVycmVkLmRvbmUoIGFyZ3VtZW50cyApLmZhaWwoIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRcImNhdGNoXCI6IGZ1bmN0aW9uKCBmbiApIHtcblx0XHRcdFx0XHRyZXR1cm4gcHJvbWlzZS50aGVuKCBudWxsLCBmbiApO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIEtlZXAgcGlwZSBmb3IgYmFjay1jb21wYXRcblx0XHRcdFx0cGlwZTogZnVuY3Rpb24oIC8qIGZuRG9uZSwgZm5GYWlsLCBmblByb2dyZXNzICovICkge1xuXHRcdFx0XHRcdHZhciBmbnMgPSBhcmd1bWVudHM7XG5cblx0XHRcdFx0XHRyZXR1cm4galF1ZXJ5LkRlZmVycmVkKCBmdW5jdGlvbiggbmV3RGVmZXIgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkuZWFjaCggdHVwbGVzLCBmdW5jdGlvbiggaSwgdHVwbGUgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gTWFwIHR1cGxlcyAocHJvZ3Jlc3MsIGRvbmUsIGZhaWwpIHRvIGFyZ3VtZW50cyAoZG9uZSwgZmFpbCwgcHJvZ3Jlc3MpXG5cdFx0XHRcdFx0XHRcdHZhciBmbiA9IGlzRnVuY3Rpb24oIGZuc1sgdHVwbGVbIDQgXSBdICkgJiYgZm5zWyB0dXBsZVsgNCBdIF07XG5cblx0XHRcdFx0XHRcdFx0Ly8gZGVmZXJyZWQucHJvZ3Jlc3MoZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIubm90aWZ5IH0pXG5cdFx0XHRcdFx0XHRcdC8vIGRlZmVycmVkLmRvbmUoZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIucmVzb2x2ZSB9KVxuXHRcdFx0XHRcdFx0XHQvLyBkZWZlcnJlZC5mYWlsKGZ1bmN0aW9uKCkgeyBiaW5kIHRvIG5ld0RlZmVyIG9yIG5ld0RlZmVyLnJlamVjdCB9KVxuXHRcdFx0XHRcdFx0XHRkZWZlcnJlZFsgdHVwbGVbIDEgXSBdKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgcmV0dXJuZWQgPSBmbiAmJiBmbi5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCByZXR1cm5lZCAmJiBpc0Z1bmN0aW9uKCByZXR1cm5lZC5wcm9taXNlICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5lZC5wcm9taXNlKClcblx0XHRcdFx0XHRcdFx0XHRcdFx0LnByb2dyZXNzKCBuZXdEZWZlci5ub3RpZnkgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQuZG9uZSggbmV3RGVmZXIucmVzb2x2ZSApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5mYWlsKCBuZXdEZWZlci5yZWplY3QgKTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0bmV3RGVmZXJbIHR1cGxlWyAwIF0gKyBcIldpdGhcIiBdKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmbiA/IFsgcmV0dXJuZWQgXSA6IGFyZ3VtZW50c1xuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRcdGZucyA9IG51bGw7XG5cdFx0XHRcdFx0fSApLnByb21pc2UoKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0dGhlbjogZnVuY3Rpb24oIG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCBvblByb2dyZXNzICkge1xuXHRcdFx0XHRcdHZhciBtYXhEZXB0aCA9IDA7XG5cdFx0XHRcdFx0ZnVuY3Rpb24gcmVzb2x2ZSggZGVwdGgsIGRlZmVycmVkLCBoYW5kbGVyLCBzcGVjaWFsICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgdGhhdCA9IHRoaXMsXG5cdFx0XHRcdFx0XHRcdFx0YXJncyA9IGFyZ3VtZW50cyxcblx0XHRcdFx0XHRcdFx0XHRtaWdodFRocm93ID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgcmV0dXJuZWQsIHRoZW47XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjMuMy4zXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC01OVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gSWdub3JlIGRvdWJsZS1yZXNvbHV0aW9uIGF0dGVtcHRzXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGRlcHRoIDwgbWF4RGVwdGggKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQgPSBoYW5kbGVyLmFwcGx5KCB0aGF0LCBhcmdzICk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjFcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTQ4XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIHJldHVybmVkID09PSBkZWZlcnJlZC5wcm9taXNlKCkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoIFwiVGhlbmFibGUgc2VsZi1yZXNvbHV0aW9uXCIgKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbnMgMi4zLjMuMSwgMy41XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC01NFxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNzVcblx0XHRcdFx0XHRcdFx0XHRcdC8vIFJldHJpZXZlIGB0aGVuYCBvbmx5IG9uY2Vcblx0XHRcdFx0XHRcdFx0XHRcdHRoZW4gPSByZXR1cm5lZCAmJlxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjRcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNjRcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gT25seSBjaGVjayBvYmplY3RzIGFuZCBmdW5jdGlvbnMgZm9yIHRoZW5hYmlsaXR5XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCggdHlwZW9mIHJldHVybmVkID09PSBcIm9iamVjdFwiIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZW9mIHJldHVybmVkID09PSBcImZ1bmN0aW9uXCIgKSAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5lZC50aGVuO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBIYW5kbGUgYSByZXR1cm5lZCB0aGVuYWJsZVxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBpc0Z1bmN0aW9uKCB0aGVuICkgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3BlY2lhbCBwcm9jZXNzb3JzIChub3RpZnkpIGp1c3Qgd2FpdCBmb3IgcmVzb2x1dGlvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIHNwZWNpYWwgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhlbi5jYWxsKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIElkZW50aXR5LCBzcGVjaWFsICksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIFRocm93ZXIsIHNwZWNpYWwgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gTm9ybWFsIHByb2Nlc3NvcnMgKHJlc29sdmUpIGFsc28gaG9vayBpbnRvIHByb2dyZXNzXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyAuLi5hbmQgZGlzcmVnYXJkIG9sZGVyIHJlc29sdXRpb24gdmFsdWVzXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWF4RGVwdGgrKztcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoZW4uY2FsbChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybmVkLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBJZGVudGl0eSwgc3BlY2lhbCApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBUaHJvd2VyLCBzcGVjaWFsICksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIElkZW50aXR5LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZWZlcnJlZC5ub3RpZnlXaXRoIClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIEhhbmRsZSBhbGwgb3RoZXIgcmV0dXJuZWQgdmFsdWVzXG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIE9ubHkgc3Vic3RpdHV0ZSBoYW5kbGVycyBwYXNzIG9uIGNvbnRleHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYW5kIG11bHRpcGxlIHZhbHVlcyAobm9uLXNwZWMgYmVoYXZpb3IpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggaGFuZGxlciAhPT0gSWRlbnRpdHkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhhdCA9IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmdzID0gWyByZXR1cm5lZCBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gUHJvY2VzcyB0aGUgdmFsdWUocylcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gRGVmYXVsdCBwcm9jZXNzIGlzIHJlc29sdmVcblx0XHRcdFx0XHRcdFx0XHRcdFx0KCBzcGVjaWFsIHx8IGRlZmVycmVkLnJlc29sdmVXaXRoICkoIHRoYXQsIGFyZ3MgKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9LFxuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gT25seSBub3JtYWwgcHJvY2Vzc29ycyAocmVzb2x2ZSkgY2F0Y2ggYW5kIHJlamVjdCBleGNlcHRpb25zXG5cdFx0XHRcdFx0XHRcdFx0cHJvY2VzcyA9IHNwZWNpYWwgP1xuXHRcdFx0XHRcdFx0XHRcdFx0bWlnaHRUaHJvdyA6XG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtaWdodFRocm93KCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBqUXVlcnkuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5EZWZlcnJlZC5leGNlcHRpb25Ib29rKCBlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcm9jZXNzLnN0YWNrVHJhY2UgKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4zLjMuNC4xXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNjFcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBJZ25vcmUgcG9zdC1yZXNvbHV0aW9uIGV4Y2VwdGlvbnNcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGRlcHRoICsgMSA+PSBtYXhEZXB0aCApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gT25seSBzdWJzdGl0dXRlIGhhbmRsZXJzIHBhc3Mgb24gY29udGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYW5kIG11bHRpcGxlIHZhbHVlcyAobm9uLXNwZWMgYmVoYXZpb3IpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGhhbmRsZXIgIT09IFRocm93ZXIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MgPSBbIGUgXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVmZXJyZWQucmVqZWN0V2l0aCggdGhhdCwgYXJncyApO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fTtcblxuXHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4zLjMuMVxuXHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC01N1xuXHRcdFx0XHRcdFx0XHQvLyBSZS1yZXNvbHZlIHByb21pc2VzIGltbWVkaWF0ZWx5IHRvIGRvZGdlIGZhbHNlIHJlamVjdGlvbiBmcm9tXG5cdFx0XHRcdFx0XHRcdC8vIHN1YnNlcXVlbnQgZXJyb3JzXG5cdFx0XHRcdFx0XHRcdGlmICggZGVwdGggKSB7XG5cdFx0XHRcdFx0XHRcdFx0cHJvY2VzcygpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gQ2FsbCBhbiBvcHRpb25hbCBob29rIHRvIHJlY29yZCB0aGUgc3RhY2ssIGluIGNhc2Ugb2YgZXhjZXB0aW9uXG5cdFx0XHRcdFx0XHRcdFx0Ly8gc2luY2UgaXQncyBvdGhlcndpc2UgbG9zdCB3aGVuIGV4ZWN1dGlvbiBnb2VzIGFzeW5jXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBqUXVlcnkuRGVmZXJyZWQuZ2V0U3RhY2tIb29rICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cHJvY2Vzcy5zdGFja1RyYWNlID0galF1ZXJ5LkRlZmVycmVkLmdldFN0YWNrSG9vaygpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cuc2V0VGltZW91dCggcHJvY2VzcyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJldHVybiBqUXVlcnkuRGVmZXJyZWQoIGZ1bmN0aW9uKCBuZXdEZWZlciApIHtcblxuXHRcdFx0XHRcdFx0Ly8gcHJvZ3Jlc3NfaGFuZGxlcnMuYWRkKCAuLi4gKVxuXHRcdFx0XHRcdFx0dHVwbGVzWyAwIF1bIDMgXS5hZGQoXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUoXG5cdFx0XHRcdFx0XHRcdFx0MCxcblx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlcixcblx0XHRcdFx0XHRcdFx0XHRpc0Z1bmN0aW9uKCBvblByb2dyZXNzICkgP1xuXHRcdFx0XHRcdFx0XHRcdFx0b25Qcm9ncmVzcyA6XG5cdFx0XHRcdFx0XHRcdFx0XHRJZGVudGl0eSxcblx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlci5ub3RpZnlXaXRoXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdC8vIGZ1bGZpbGxlZF9oYW5kbGVycy5hZGQoIC4uLiApXG5cdFx0XHRcdFx0XHR0dXBsZXNbIDEgXVsgMyBdLmFkZChcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShcblx0XHRcdFx0XHRcdFx0XHQwLFxuXHRcdFx0XHRcdFx0XHRcdG5ld0RlZmVyLFxuXHRcdFx0XHRcdFx0XHRcdGlzRnVuY3Rpb24oIG9uRnVsZmlsbGVkICkgP1xuXHRcdFx0XHRcdFx0XHRcdFx0b25GdWxmaWxsZWQgOlxuXHRcdFx0XHRcdFx0XHRcdFx0SWRlbnRpdHlcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0Ly8gcmVqZWN0ZWRfaGFuZGxlcnMuYWRkKCAuLi4gKVxuXHRcdFx0XHRcdFx0dHVwbGVzWyAyIF1bIDMgXS5hZGQoXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUoXG5cdFx0XHRcdFx0XHRcdFx0MCxcblx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlcixcblx0XHRcdFx0XHRcdFx0XHRpc0Z1bmN0aW9uKCBvblJlamVjdGVkICkgP1xuXHRcdFx0XHRcdFx0XHRcdFx0b25SZWplY3RlZCA6XG5cdFx0XHRcdFx0XHRcdFx0XHRUaHJvd2VyXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSApLnByb21pc2UoKTtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBHZXQgYSBwcm9taXNlIGZvciB0aGlzIGRlZmVycmVkXG5cdFx0XHRcdC8vIElmIG9iaiBpcyBwcm92aWRlZCwgdGhlIHByb21pc2UgYXNwZWN0IGlzIGFkZGVkIHRvIHRoZSBvYmplY3Rcblx0XHRcdFx0cHJvbWlzZTogZnVuY3Rpb24oIG9iaiApIHtcblx0XHRcdFx0XHRyZXR1cm4gb2JqICE9IG51bGwgPyBqUXVlcnkuZXh0ZW5kKCBvYmosIHByb21pc2UgKSA6IHByb21pc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWZlcnJlZCA9IHt9O1xuXG5cdFx0Ly8gQWRkIGxpc3Qtc3BlY2lmaWMgbWV0aG9kc1xuXHRcdGpRdWVyeS5lYWNoKCB0dXBsZXMsIGZ1bmN0aW9uKCBpLCB0dXBsZSApIHtcblx0XHRcdHZhciBsaXN0ID0gdHVwbGVbIDIgXSxcblx0XHRcdFx0c3RhdGVTdHJpbmcgPSB0dXBsZVsgNSBdO1xuXG5cdFx0XHQvLyBwcm9taXNlLnByb2dyZXNzID0gbGlzdC5hZGRcblx0XHRcdC8vIHByb21pc2UuZG9uZSA9IGxpc3QuYWRkXG5cdFx0XHQvLyBwcm9taXNlLmZhaWwgPSBsaXN0LmFkZFxuXHRcdFx0cHJvbWlzZVsgdHVwbGVbIDEgXSBdID0gbGlzdC5hZGQ7XG5cblx0XHRcdC8vIEhhbmRsZSBzdGF0ZVxuXHRcdFx0aWYgKCBzdGF0ZVN0cmluZyApIHtcblx0XHRcdFx0bGlzdC5hZGQoXG5cdFx0XHRcdFx0ZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0XHRcdC8vIHN0YXRlID0gXCJyZXNvbHZlZFwiIChpLmUuLCBmdWxmaWxsZWQpXG5cdFx0XHRcdFx0XHQvLyBzdGF0ZSA9IFwicmVqZWN0ZWRcIlxuXHRcdFx0XHRcdFx0c3RhdGUgPSBzdGF0ZVN0cmluZztcblx0XHRcdFx0XHR9LFxuXG5cdFx0XHRcdFx0Ly8gcmVqZWN0ZWRfY2FsbGJhY2tzLmRpc2FibGVcblx0XHRcdFx0XHQvLyBmdWxmaWxsZWRfY2FsbGJhY2tzLmRpc2FibGVcblx0XHRcdFx0XHR0dXBsZXNbIDMgLSBpIF1bIDIgXS5kaXNhYmxlLFxuXG5cdFx0XHRcdFx0Ly8gcmVqZWN0ZWRfaGFuZGxlcnMuZGlzYWJsZVxuXHRcdFx0XHRcdC8vIGZ1bGZpbGxlZF9oYW5kbGVycy5kaXNhYmxlXG5cdFx0XHRcdFx0dHVwbGVzWyAzIC0gaSBdWyAzIF0uZGlzYWJsZSxcblxuXHRcdFx0XHRcdC8vIHByb2dyZXNzX2NhbGxiYWNrcy5sb2NrXG5cdFx0XHRcdFx0dHVwbGVzWyAwIF1bIDIgXS5sb2NrLFxuXG5cdFx0XHRcdFx0Ly8gcHJvZ3Jlc3NfaGFuZGxlcnMubG9ja1xuXHRcdFx0XHRcdHR1cGxlc1sgMCBdWyAzIF0ubG9ja1xuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBwcm9ncmVzc19oYW5kbGVycy5maXJlXG5cdFx0XHQvLyBmdWxmaWxsZWRfaGFuZGxlcnMuZmlyZVxuXHRcdFx0Ly8gcmVqZWN0ZWRfaGFuZGxlcnMuZmlyZVxuXHRcdFx0bGlzdC5hZGQoIHR1cGxlWyAzIF0uZmlyZSApO1xuXG5cdFx0XHQvLyBkZWZlcnJlZC5ub3RpZnkgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQubm90aWZ5V2l0aCguLi4pIH1cblx0XHRcdC8vIGRlZmVycmVkLnJlc29sdmUgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQucmVzb2x2ZVdpdGgoLi4uKSB9XG5cdFx0XHQvLyBkZWZlcnJlZC5yZWplY3QgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQucmVqZWN0V2l0aCguLi4pIH1cblx0XHRcdGRlZmVycmVkWyB0dXBsZVsgMCBdIF0gPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0ZGVmZXJyZWRbIHR1cGxlWyAwIF0gKyBcIldpdGhcIiBdKCB0aGlzID09PSBkZWZlcnJlZCA/IHVuZGVmaW5lZCA6IHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH07XG5cblx0XHRcdC8vIGRlZmVycmVkLm5vdGlmeVdpdGggPSBsaXN0LmZpcmVXaXRoXG5cdFx0XHQvLyBkZWZlcnJlZC5yZXNvbHZlV2l0aCA9IGxpc3QuZmlyZVdpdGhcblx0XHRcdC8vIGRlZmVycmVkLnJlamVjdFdpdGggPSBsaXN0LmZpcmVXaXRoXG5cdFx0XHRkZWZlcnJlZFsgdHVwbGVbIDAgXSArIFwiV2l0aFwiIF0gPSBsaXN0LmZpcmVXaXRoO1xuXHRcdH0gKTtcblxuXHRcdC8vIE1ha2UgdGhlIGRlZmVycmVkIGEgcHJvbWlzZVxuXHRcdHByb21pc2UucHJvbWlzZSggZGVmZXJyZWQgKTtcblxuXHRcdC8vIENhbGwgZ2l2ZW4gZnVuYyBpZiBhbnlcblx0XHRpZiAoIGZ1bmMgKSB7XG5cdFx0XHRmdW5jLmNhbGwoIGRlZmVycmVkLCBkZWZlcnJlZCApO1xuXHRcdH1cblxuXHRcdC8vIEFsbCBkb25lIVxuXHRcdHJldHVybiBkZWZlcnJlZDtcblx0fSxcblxuXHQvLyBEZWZlcnJlZCBoZWxwZXJcblx0d2hlbjogZnVuY3Rpb24oIHNpbmdsZVZhbHVlICkge1xuXHRcdHZhclxuXG5cdFx0XHQvLyBjb3VudCBvZiB1bmNvbXBsZXRlZCBzdWJvcmRpbmF0ZXNcblx0XHRcdHJlbWFpbmluZyA9IGFyZ3VtZW50cy5sZW5ndGgsXG5cblx0XHRcdC8vIGNvdW50IG9mIHVucHJvY2Vzc2VkIGFyZ3VtZW50c1xuXHRcdFx0aSA9IHJlbWFpbmluZyxcblxuXHRcdFx0Ly8gc3Vib3JkaW5hdGUgZnVsZmlsbG1lbnQgZGF0YVxuXHRcdFx0cmVzb2x2ZUNvbnRleHRzID0gQXJyYXkoIGkgKSxcblx0XHRcdHJlc29sdmVWYWx1ZXMgPSBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSxcblxuXHRcdFx0Ly8gdGhlIG1hc3RlciBEZWZlcnJlZFxuXHRcdFx0bWFzdGVyID0galF1ZXJ5LkRlZmVycmVkKCksXG5cblx0XHRcdC8vIHN1Ym9yZGluYXRlIGNhbGxiYWNrIGZhY3Rvcnlcblx0XHRcdHVwZGF0ZUZ1bmMgPSBmdW5jdGlvbiggaSApIHtcblx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdFx0XHRyZXNvbHZlQ29udGV4dHNbIGkgXSA9IHRoaXM7XG5cdFx0XHRcdFx0cmVzb2x2ZVZhbHVlc1sgaSBdID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSA6IHZhbHVlO1xuXHRcdFx0XHRcdGlmICggISggLS1yZW1haW5pbmcgKSApIHtcblx0XHRcdFx0XHRcdG1hc3Rlci5yZXNvbHZlV2l0aCggcmVzb2x2ZUNvbnRleHRzLCByZXNvbHZlVmFsdWVzICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0fTtcblxuXHRcdC8vIFNpbmdsZS0gYW5kIGVtcHR5IGFyZ3VtZW50cyBhcmUgYWRvcHRlZCBsaWtlIFByb21pc2UucmVzb2x2ZVxuXHRcdGlmICggcmVtYWluaW5nIDw9IDEgKSB7XG5cdFx0XHRhZG9wdFZhbHVlKCBzaW5nbGVWYWx1ZSwgbWFzdGVyLmRvbmUoIHVwZGF0ZUZ1bmMoIGkgKSApLnJlc29sdmUsIG1hc3Rlci5yZWplY3QsXG5cdFx0XHRcdCFyZW1haW5pbmcgKTtcblxuXHRcdFx0Ly8gVXNlIC50aGVuKCkgdG8gdW53cmFwIHNlY29uZGFyeSB0aGVuYWJsZXMgKGNmLiBnaC0zMDAwKVxuXHRcdFx0aWYgKCBtYXN0ZXIuc3RhdGUoKSA9PT0gXCJwZW5kaW5nXCIgfHxcblx0XHRcdFx0aXNGdW5jdGlvbiggcmVzb2x2ZVZhbHVlc1sgaSBdICYmIHJlc29sdmVWYWx1ZXNbIGkgXS50aGVuICkgKSB7XG5cblx0XHRcdFx0cmV0dXJuIG1hc3Rlci50aGVuKCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gTXVsdGlwbGUgYXJndW1lbnRzIGFyZSBhZ2dyZWdhdGVkIGxpa2UgUHJvbWlzZS5hbGwgYXJyYXkgZWxlbWVudHNcblx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdGFkb3B0VmFsdWUoIHJlc29sdmVWYWx1ZXNbIGkgXSwgdXBkYXRlRnVuYyggaSApLCBtYXN0ZXIucmVqZWN0ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG1hc3Rlci5wcm9taXNlKCk7XG5cdH1cbn0gKTtcblxuXG4vLyBUaGVzZSB1c3VhbGx5IGluZGljYXRlIGEgcHJvZ3JhbW1lciBtaXN0YWtlIGR1cmluZyBkZXZlbG9wbWVudCxcbi8vIHdhcm4gYWJvdXQgdGhlbSBBU0FQIHJhdGhlciB0aGFuIHN3YWxsb3dpbmcgdGhlbSBieSBkZWZhdWx0LlxudmFyIHJlcnJvck5hbWVzID0gL14oRXZhbHxJbnRlcm5hbHxSYW5nZXxSZWZlcmVuY2V8U3ludGF4fFR5cGV8VVJJKUVycm9yJC87XG5cbmpRdWVyeS5EZWZlcnJlZC5leGNlcHRpb25Ib29rID0gZnVuY3Rpb24oIGVycm9yLCBzdGFjayApIHtcblxuXHQvLyBTdXBwb3J0OiBJRSA4IC0gOSBvbmx5XG5cdC8vIENvbnNvbGUgZXhpc3RzIHdoZW4gZGV2IHRvb2xzIGFyZSBvcGVuLCB3aGljaCBjYW4gaGFwcGVuIGF0IGFueSB0aW1lXG5cdGlmICggd2luZG93LmNvbnNvbGUgJiYgd2luZG93LmNvbnNvbGUud2FybiAmJiBlcnJvciAmJiByZXJyb3JOYW1lcy50ZXN0KCBlcnJvci5uYW1lICkgKSB7XG5cdFx0d2luZG93LmNvbnNvbGUud2FybiggXCJqUXVlcnkuRGVmZXJyZWQgZXhjZXB0aW9uOiBcIiArIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBzdGFjayApO1xuXHR9XG59O1xuXG5cblxuXG5qUXVlcnkucmVhZHlFeGNlcHRpb24gPSBmdW5jdGlvbiggZXJyb3IgKSB7XG5cdHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcblx0XHR0aHJvdyBlcnJvcjtcblx0fSApO1xufTtcblxuXG5cblxuLy8gVGhlIGRlZmVycmVkIHVzZWQgb24gRE9NIHJlYWR5XG52YXIgcmVhZHlMaXN0ID0galF1ZXJ5LkRlZmVycmVkKCk7XG5cbmpRdWVyeS5mbi5yZWFkeSA9IGZ1bmN0aW9uKCBmbiApIHtcblxuXHRyZWFkeUxpc3Rcblx0XHQudGhlbiggZm4gKVxuXG5cdFx0Ly8gV3JhcCBqUXVlcnkucmVhZHlFeGNlcHRpb24gaW4gYSBmdW5jdGlvbiBzbyB0aGF0IHRoZSBsb29rdXBcblx0XHQvLyBoYXBwZW5zIGF0IHRoZSB0aW1lIG9mIGVycm9yIGhhbmRsaW5nIGluc3RlYWQgb2YgY2FsbGJhY2tcblx0XHQvLyByZWdpc3RyYXRpb24uXG5cdFx0LmNhdGNoKCBmdW5jdGlvbiggZXJyb3IgKSB7XG5cdFx0XHRqUXVlcnkucmVhZHlFeGNlcHRpb24oIGVycm9yICk7XG5cdFx0fSApO1xuXG5cdHJldHVybiB0aGlzO1xufTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdC8vIElzIHRoZSBET00gcmVhZHkgdG8gYmUgdXNlZD8gU2V0IHRvIHRydWUgb25jZSBpdCBvY2N1cnMuXG5cdGlzUmVhZHk6IGZhbHNlLFxuXG5cdC8vIEEgY291bnRlciB0byB0cmFjayBob3cgbWFueSBpdGVtcyB0byB3YWl0IGZvciBiZWZvcmVcblx0Ly8gdGhlIHJlYWR5IGV2ZW50IGZpcmVzLiBTZWUgIzY3ODFcblx0cmVhZHlXYWl0OiAxLFxuXG5cdC8vIEhhbmRsZSB3aGVuIHRoZSBET00gaXMgcmVhZHlcblx0cmVhZHk6IGZ1bmN0aW9uKCB3YWl0ICkge1xuXG5cdFx0Ly8gQWJvcnQgaWYgdGhlcmUgYXJlIHBlbmRpbmcgaG9sZHMgb3Igd2UncmUgYWxyZWFkeSByZWFkeVxuXHRcdGlmICggd2FpdCA9PT0gdHJ1ZSA/IC0talF1ZXJ5LnJlYWR5V2FpdCA6IGpRdWVyeS5pc1JlYWR5ICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIFJlbWVtYmVyIHRoYXQgdGhlIERPTSBpcyByZWFkeVxuXHRcdGpRdWVyeS5pc1JlYWR5ID0gdHJ1ZTtcblxuXHRcdC8vIElmIGEgbm9ybWFsIERPTSBSZWFkeSBldmVudCBmaXJlZCwgZGVjcmVtZW50LCBhbmQgd2FpdCBpZiBuZWVkIGJlXG5cdFx0aWYgKCB3YWl0ICE9PSB0cnVlICYmIC0talF1ZXJ5LnJlYWR5V2FpdCA+IDAgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gSWYgdGhlcmUgYXJlIGZ1bmN0aW9ucyBib3VuZCwgdG8gZXhlY3V0ZVxuXHRcdHJlYWR5TGlzdC5yZXNvbHZlV2l0aCggZG9jdW1lbnQsIFsgalF1ZXJ5IF0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkucmVhZHkudGhlbiA9IHJlYWR5TGlzdC50aGVuO1xuXG4vLyBUaGUgcmVhZHkgZXZlbnQgaGFuZGxlciBhbmQgc2VsZiBjbGVhbnVwIG1ldGhvZFxuZnVuY3Rpb24gY29tcGxldGVkKCkge1xuXHRkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCBcIkRPTUNvbnRlbnRMb2FkZWRcIiwgY29tcGxldGVkICk7XG5cdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCBcImxvYWRcIiwgY29tcGxldGVkICk7XG5cdGpRdWVyeS5yZWFkeSgpO1xufVxuXG4vLyBDYXRjaCBjYXNlcyB3aGVyZSAkKGRvY3VtZW50KS5yZWFkeSgpIGlzIGNhbGxlZFxuLy8gYWZ0ZXIgdGhlIGJyb3dzZXIgZXZlbnQgaGFzIGFscmVhZHkgb2NjdXJyZWQuXG4vLyBTdXBwb3J0OiBJRSA8PTkgLSAxMCBvbmx5XG4vLyBPbGRlciBJRSBzb21ldGltZXMgc2lnbmFscyBcImludGVyYWN0aXZlXCIgdG9vIHNvb25cbmlmICggZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gXCJjb21wbGV0ZVwiIHx8XG5cdCggZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gXCJsb2FkaW5nXCIgJiYgIWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCApICkge1xuXG5cdC8vIEhhbmRsZSBpdCBhc3luY2hyb25vdXNseSB0byBhbGxvdyBzY3JpcHRzIHRoZSBvcHBvcnR1bml0eSB0byBkZWxheSByZWFkeVxuXHR3aW5kb3cuc2V0VGltZW91dCggalF1ZXJ5LnJlYWR5ICk7XG5cbn0gZWxzZSB7XG5cblx0Ly8gVXNlIHRoZSBoYW5keSBldmVudCBjYWxsYmFja1xuXHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCBcIkRPTUNvbnRlbnRMb2FkZWRcIiwgY29tcGxldGVkICk7XG5cblx0Ly8gQSBmYWxsYmFjayB0byB3aW5kb3cub25sb2FkLCB0aGF0IHdpbGwgYWx3YXlzIHdvcmtcblx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIFwibG9hZFwiLCBjb21wbGV0ZWQgKTtcbn1cblxuXG5cblxuLy8gTXVsdGlmdW5jdGlvbmFsIG1ldGhvZCB0byBnZXQgYW5kIHNldCB2YWx1ZXMgb2YgYSBjb2xsZWN0aW9uXG4vLyBUaGUgdmFsdWUvcyBjYW4gb3B0aW9uYWxseSBiZSBleGVjdXRlZCBpZiBpdCdzIGEgZnVuY3Rpb25cbnZhciBhY2Nlc3MgPSBmdW5jdGlvbiggZWxlbXMsIGZuLCBrZXksIHZhbHVlLCBjaGFpbmFibGUsIGVtcHR5R2V0LCByYXcgKSB7XG5cdHZhciBpID0gMCxcblx0XHRsZW4gPSBlbGVtcy5sZW5ndGgsXG5cdFx0YnVsayA9IGtleSA9PSBudWxsO1xuXG5cdC8vIFNldHMgbWFueSB2YWx1ZXNcblx0aWYgKCB0b1R5cGUoIGtleSApID09PSBcIm9iamVjdFwiICkge1xuXHRcdGNoYWluYWJsZSA9IHRydWU7XG5cdFx0Zm9yICggaSBpbiBrZXkgKSB7XG5cdFx0XHRhY2Nlc3MoIGVsZW1zLCBmbiwgaSwga2V5WyBpIF0sIHRydWUsIGVtcHR5R2V0LCByYXcgKTtcblx0XHR9XG5cblx0Ly8gU2V0cyBvbmUgdmFsdWVcblx0fSBlbHNlIGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRjaGFpbmFibGUgPSB0cnVlO1xuXG5cdFx0aWYgKCAhaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJhdyA9IHRydWU7XG5cdFx0fVxuXG5cdFx0aWYgKCBidWxrICkge1xuXG5cdFx0XHQvLyBCdWxrIG9wZXJhdGlvbnMgcnVuIGFnYWluc3QgdGhlIGVudGlyZSBzZXRcblx0XHRcdGlmICggcmF3ICkge1xuXHRcdFx0XHRmbi5jYWxsKCBlbGVtcywgdmFsdWUgKTtcblx0XHRcdFx0Zm4gPSBudWxsO1xuXG5cdFx0XHQvLyAuLi5leGNlcHQgd2hlbiBleGVjdXRpbmcgZnVuY3Rpb24gdmFsdWVzXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRidWxrID0gZm47XG5cdFx0XHRcdGZuID0gZnVuY3Rpb24oIGVsZW0sIGtleSwgdmFsdWUgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGJ1bGsuY2FsbCggalF1ZXJ5KCBlbGVtICksIHZhbHVlICk7XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCBmbiApIHtcblx0XHRcdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0XHRmbihcblx0XHRcdFx0XHRlbGVtc1sgaSBdLCBrZXksIHJhdyA/XG5cdFx0XHRcdFx0dmFsdWUgOlxuXHRcdFx0XHRcdHZhbHVlLmNhbGwoIGVsZW1zWyBpIF0sIGksIGZuKCBlbGVtc1sgaSBdLCBrZXkgKSApXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aWYgKCBjaGFpbmFibGUgKSB7XG5cdFx0cmV0dXJuIGVsZW1zO1xuXHR9XG5cblx0Ly8gR2V0c1xuXHRpZiAoIGJ1bGsgKSB7XG5cdFx0cmV0dXJuIGZuLmNhbGwoIGVsZW1zICk7XG5cdH1cblxuXHRyZXR1cm4gbGVuID8gZm4oIGVsZW1zWyAwIF0sIGtleSApIDogZW1wdHlHZXQ7XG59O1xuXG5cbi8vIE1hdGNoZXMgZGFzaGVkIHN0cmluZyBmb3IgY2FtZWxpemluZ1xudmFyIHJtc1ByZWZpeCA9IC9eLW1zLS8sXG5cdHJkYXNoQWxwaGEgPSAvLShbYS16XSkvZztcblxuLy8gVXNlZCBieSBjYW1lbENhc2UgYXMgY2FsbGJhY2sgdG8gcmVwbGFjZSgpXG5mdW5jdGlvbiBmY2FtZWxDYXNlKCBhbGwsIGxldHRlciApIHtcblx0cmV0dXJuIGxldHRlci50b1VwcGVyQ2FzZSgpO1xufVxuXG4vLyBDb252ZXJ0IGRhc2hlZCB0byBjYW1lbENhc2U7IHVzZWQgYnkgdGhlIGNzcyBhbmQgZGF0YSBtb2R1bGVzXG4vLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSwgRWRnZSAxMiAtIDE1XG4vLyBNaWNyb3NvZnQgZm9yZ290IHRvIGh1bXAgdGhlaXIgdmVuZG9yIHByZWZpeCAoIzk1NzIpXG5mdW5jdGlvbiBjYW1lbENhc2UoIHN0cmluZyApIHtcblx0cmV0dXJuIHN0cmluZy5yZXBsYWNlKCBybXNQcmVmaXgsIFwibXMtXCIgKS5yZXBsYWNlKCByZGFzaEFscGhhLCBmY2FtZWxDYXNlICk7XG59XG52YXIgYWNjZXB0RGF0YSA9IGZ1bmN0aW9uKCBvd25lciApIHtcblxuXHQvLyBBY2NlcHRzIG9ubHk6XG5cdC8vICAtIE5vZGVcblx0Ly8gICAgLSBOb2RlLkVMRU1FTlRfTk9ERVxuXHQvLyAgICAtIE5vZGUuRE9DVU1FTlRfTk9ERVxuXHQvLyAgLSBPYmplY3Rcblx0Ly8gICAgLSBBbnlcblx0cmV0dXJuIG93bmVyLm5vZGVUeXBlID09PSAxIHx8IG93bmVyLm5vZGVUeXBlID09PSA5IHx8ICEoICtvd25lci5ub2RlVHlwZSApO1xufTtcblxuXG5cblxuZnVuY3Rpb24gRGF0YSgpIHtcblx0dGhpcy5leHBhbmRvID0galF1ZXJ5LmV4cGFuZG8gKyBEYXRhLnVpZCsrO1xufVxuXG5EYXRhLnVpZCA9IDE7XG5cbkRhdGEucHJvdG90eXBlID0ge1xuXG5cdGNhY2hlOiBmdW5jdGlvbiggb3duZXIgKSB7XG5cblx0XHQvLyBDaGVjayBpZiB0aGUgb3duZXIgb2JqZWN0IGFscmVhZHkgaGFzIGEgY2FjaGVcblx0XHR2YXIgdmFsdWUgPSBvd25lclsgdGhpcy5leHBhbmRvIF07XG5cblx0XHQvLyBJZiBub3QsIGNyZWF0ZSBvbmVcblx0XHRpZiAoICF2YWx1ZSApIHtcblx0XHRcdHZhbHVlID0ge307XG5cblx0XHRcdC8vIFdlIGNhbiBhY2NlcHQgZGF0YSBmb3Igbm9uLWVsZW1lbnQgbm9kZXMgaW4gbW9kZXJuIGJyb3dzZXJzLFxuXHRcdFx0Ly8gYnV0IHdlIHNob3VsZCBub3QsIHNlZSAjODMzNS5cblx0XHRcdC8vIEFsd2F5cyByZXR1cm4gYW4gZW1wdHkgb2JqZWN0LlxuXHRcdFx0aWYgKCBhY2NlcHREYXRhKCBvd25lciApICkge1xuXG5cdFx0XHRcdC8vIElmIGl0IGlzIGEgbm9kZSB1bmxpa2VseSB0byBiZSBzdHJpbmdpZnktZWQgb3IgbG9vcGVkIG92ZXJcblx0XHRcdFx0Ly8gdXNlIHBsYWluIGFzc2lnbm1lbnRcblx0XHRcdFx0aWYgKCBvd25lci5ub2RlVHlwZSApIHtcblx0XHRcdFx0XHRvd25lclsgdGhpcy5leHBhbmRvIF0gPSB2YWx1ZTtcblxuXHRcdFx0XHQvLyBPdGhlcndpc2Ugc2VjdXJlIGl0IGluIGEgbm9uLWVudW1lcmFibGUgcHJvcGVydHlcblx0XHRcdFx0Ly8gY29uZmlndXJhYmxlIG11c3QgYmUgdHJ1ZSB0byBhbGxvdyB0aGUgcHJvcGVydHkgdG8gYmVcblx0XHRcdFx0Ly8gZGVsZXRlZCB3aGVuIGRhdGEgaXMgcmVtb3ZlZFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggb3duZXIsIHRoaXMuZXhwYW5kbywge1xuXHRcdFx0XHRcdFx0dmFsdWU6IHZhbHVlLFxuXHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlXG5cdFx0XHRcdFx0fSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHZhbHVlO1xuXHR9LFxuXHRzZXQ6IGZ1bmN0aW9uKCBvd25lciwgZGF0YSwgdmFsdWUgKSB7XG5cdFx0dmFyIHByb3AsXG5cdFx0XHRjYWNoZSA9IHRoaXMuY2FjaGUoIG93bmVyICk7XG5cblx0XHQvLyBIYW5kbGU6IFsgb3duZXIsIGtleSwgdmFsdWUgXSBhcmdzXG5cdFx0Ly8gQWx3YXlzIHVzZSBjYW1lbENhc2Uga2V5IChnaC0yMjU3KVxuXHRcdGlmICggdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRjYWNoZVsgY2FtZWxDYXNlKCBkYXRhICkgXSA9IHZhbHVlO1xuXG5cdFx0Ly8gSGFuZGxlOiBbIG93bmVyLCB7IHByb3BlcnRpZXMgfSBdIGFyZ3Ncblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBDb3B5IHRoZSBwcm9wZXJ0aWVzIG9uZS1ieS1vbmUgdG8gdGhlIGNhY2hlIG9iamVjdFxuXHRcdFx0Zm9yICggcHJvcCBpbiBkYXRhICkge1xuXHRcdFx0XHRjYWNoZVsgY2FtZWxDYXNlKCBwcm9wICkgXSA9IGRhdGFbIHByb3AgXTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGNhY2hlO1xuXHR9LFxuXHRnZXQ6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkge1xuXHRcdHJldHVybiBrZXkgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHR0aGlzLmNhY2hlKCBvd25lciApIDpcblxuXHRcdFx0Ly8gQWx3YXlzIHVzZSBjYW1lbENhc2Uga2V5IChnaC0yMjU3KVxuXHRcdFx0b3duZXJbIHRoaXMuZXhwYW5kbyBdICYmIG93bmVyWyB0aGlzLmV4cGFuZG8gXVsgY2FtZWxDYXNlKCBrZXkgKSBdO1xuXHR9LFxuXHRhY2Nlc3M6IGZ1bmN0aW9uKCBvd25lciwga2V5LCB2YWx1ZSApIHtcblxuXHRcdC8vIEluIGNhc2VzIHdoZXJlIGVpdGhlcjpcblx0XHQvL1xuXHRcdC8vICAgMS4gTm8ga2V5IHdhcyBzcGVjaWZpZWRcblx0XHQvLyAgIDIuIEEgc3RyaW5nIGtleSB3YXMgc3BlY2lmaWVkLCBidXQgbm8gdmFsdWUgcHJvdmlkZWRcblx0XHQvL1xuXHRcdC8vIFRha2UgdGhlIFwicmVhZFwiIHBhdGggYW5kIGFsbG93IHRoZSBnZXQgbWV0aG9kIHRvIGRldGVybWluZVxuXHRcdC8vIHdoaWNoIHZhbHVlIHRvIHJldHVybiwgcmVzcGVjdGl2ZWx5IGVpdGhlcjpcblx0XHQvL1xuXHRcdC8vICAgMS4gVGhlIGVudGlyZSBjYWNoZSBvYmplY3Rcblx0XHQvLyAgIDIuIFRoZSBkYXRhIHN0b3JlZCBhdCB0aGUga2V5XG5cdFx0Ly9cblx0XHRpZiAoIGtleSA9PT0gdW5kZWZpbmVkIHx8XG5cdFx0XHRcdCggKCBrZXkgJiYgdHlwZW9mIGtleSA9PT0gXCJzdHJpbmdcIiApICYmIHZhbHVlID09PSB1bmRlZmluZWQgKSApIHtcblxuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0KCBvd25lciwga2V5ICk7XG5cdFx0fVxuXG5cdFx0Ly8gV2hlbiB0aGUga2V5IGlzIG5vdCBhIHN0cmluZywgb3IgYm90aCBhIGtleSBhbmQgdmFsdWVcblx0XHQvLyBhcmUgc3BlY2lmaWVkLCBzZXQgb3IgZXh0ZW5kIChleGlzdGluZyBvYmplY3RzKSB3aXRoIGVpdGhlcjpcblx0XHQvL1xuXHRcdC8vICAgMS4gQW4gb2JqZWN0IG9mIHByb3BlcnRpZXNcblx0XHQvLyAgIDIuIEEga2V5IGFuZCB2YWx1ZVxuXHRcdC8vXG5cdFx0dGhpcy5zZXQoIG93bmVyLCBrZXksIHZhbHVlICk7XG5cblx0XHQvLyBTaW5jZSB0aGUgXCJzZXRcIiBwYXRoIGNhbiBoYXZlIHR3byBwb3NzaWJsZSBlbnRyeSBwb2ludHNcblx0XHQvLyByZXR1cm4gdGhlIGV4cGVjdGVkIGRhdGEgYmFzZWQgb24gd2hpY2ggcGF0aCB3YXMgdGFrZW5bKl1cblx0XHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoga2V5O1xuXHR9LFxuXHRyZW1vdmU6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkge1xuXHRcdHZhciBpLFxuXHRcdFx0Y2FjaGUgPSBvd25lclsgdGhpcy5leHBhbmRvIF07XG5cblx0XHRpZiAoIGNhY2hlID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCBrZXkgIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0Ly8gU3VwcG9ydCBhcnJheSBvciBzcGFjZSBzZXBhcmF0ZWQgc3RyaW5nIG9mIGtleXNcblx0XHRcdGlmICggQXJyYXkuaXNBcnJheSgga2V5ICkgKSB7XG5cblx0XHRcdFx0Ly8gSWYga2V5IGlzIGFuIGFycmF5IG9mIGtleXMuLi5cblx0XHRcdFx0Ly8gV2UgYWx3YXlzIHNldCBjYW1lbENhc2Uga2V5cywgc28gcmVtb3ZlIHRoYXQuXG5cdFx0XHRcdGtleSA9IGtleS5tYXAoIGNhbWVsQ2FzZSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0a2V5ID0gY2FtZWxDYXNlKCBrZXkgKTtcblxuXHRcdFx0XHQvLyBJZiBhIGtleSB3aXRoIHRoZSBzcGFjZXMgZXhpc3RzLCB1c2UgaXQuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSwgY3JlYXRlIGFuIGFycmF5IGJ5IG1hdGNoaW5nIG5vbi13aGl0ZXNwYWNlXG5cdFx0XHRcdGtleSA9IGtleSBpbiBjYWNoZSA/XG5cdFx0XHRcdFx0WyBrZXkgXSA6XG5cdFx0XHRcdFx0KCBrZXkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXSApO1xuXHRcdFx0fVxuXG5cdFx0XHRpID0ga2V5Lmxlbmd0aDtcblxuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGRlbGV0ZSBjYWNoZVsga2V5WyBpIF0gXTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBSZW1vdmUgdGhlIGV4cGFuZG8gaWYgdGhlcmUncyBubyBtb3JlIGRhdGFcblx0XHRpZiAoIGtleSA9PT0gdW5kZWZpbmVkIHx8IGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBjYWNoZSApICkge1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWUgPD0zNSAtIDQ1XG5cdFx0XHQvLyBXZWJraXQgJiBCbGluayBwZXJmb3JtYW5jZSBzdWZmZXJzIHdoZW4gZGVsZXRpbmcgcHJvcGVydGllc1xuXHRcdFx0Ly8gZnJvbSBET00gbm9kZXMsIHNvIHNldCB0byB1bmRlZmluZWQgaW5zdGVhZFxuXHRcdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9Mzc4NjA3IChidWcgcmVzdHJpY3RlZClcblx0XHRcdGlmICggb3duZXIubm9kZVR5cGUgKSB7XG5cdFx0XHRcdG93bmVyWyB0aGlzLmV4cGFuZG8gXSA9IHVuZGVmaW5lZDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRlbGV0ZSBvd25lclsgdGhpcy5leHBhbmRvIF07XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRoYXNEYXRhOiBmdW5jdGlvbiggb3duZXIgKSB7XG5cdFx0dmFyIGNhY2hlID0gb3duZXJbIHRoaXMuZXhwYW5kbyBdO1xuXHRcdHJldHVybiBjYWNoZSAhPT0gdW5kZWZpbmVkICYmICFqUXVlcnkuaXNFbXB0eU9iamVjdCggY2FjaGUgKTtcblx0fVxufTtcbnZhciBkYXRhUHJpdiA9IG5ldyBEYXRhKCk7XG5cbnZhciBkYXRhVXNlciA9IG5ldyBEYXRhKCk7XG5cblxuXG4vL1x0SW1wbGVtZW50YXRpb24gU3VtbWFyeVxuLy9cbi8vXHQxLiBFbmZvcmNlIEFQSSBzdXJmYWNlIGFuZCBzZW1hbnRpYyBjb21wYXRpYmlsaXR5IHdpdGggMS45LnggYnJhbmNoXG4vL1x0Mi4gSW1wcm92ZSB0aGUgbW9kdWxlJ3MgbWFpbnRhaW5hYmlsaXR5IGJ5IHJlZHVjaW5nIHRoZSBzdG9yYWdlXG4vL1x0XHRwYXRocyB0byBhIHNpbmdsZSBtZWNoYW5pc20uXG4vL1x0My4gVXNlIHRoZSBzYW1lIHNpbmdsZSBtZWNoYW5pc20gdG8gc3VwcG9ydCBcInByaXZhdGVcIiBhbmQgXCJ1c2VyXCIgZGF0YS5cbi8vXHQ0LiBfTmV2ZXJfIGV4cG9zZSBcInByaXZhdGVcIiBkYXRhIHRvIHVzZXIgY29kZSAoVE9ETzogRHJvcCBfZGF0YSwgX3JlbW92ZURhdGEpXG4vL1x0NS4gQXZvaWQgZXhwb3NpbmcgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvbiB1c2VyIG9iamVjdHMgKGVnLiBleHBhbmRvIHByb3BlcnRpZXMpXG4vL1x0Ni4gUHJvdmlkZSBhIGNsZWFyIHBhdGggZm9yIGltcGxlbWVudGF0aW9uIHVwZ3JhZGUgdG8gV2Vha01hcCBpbiAyMDE0XG5cbnZhciByYnJhY2UgPSAvXig/Olxce1tcXHdcXFddKlxcfXxcXFtbXFx3XFxXXSpcXF0pJC8sXG5cdHJtdWx0aURhc2ggPSAvW0EtWl0vZztcblxuZnVuY3Rpb24gZ2V0RGF0YSggZGF0YSApIHtcblx0aWYgKCBkYXRhID09PSBcInRydWVcIiApIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdGlmICggZGF0YSA9PT0gXCJmYWxzZVwiICkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGlmICggZGF0YSA9PT0gXCJudWxsXCIgKSB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHQvLyBPbmx5IGNvbnZlcnQgdG8gYSBudW1iZXIgaWYgaXQgZG9lc24ndCBjaGFuZ2UgdGhlIHN0cmluZ1xuXHRpZiAoIGRhdGEgPT09ICtkYXRhICsgXCJcIiApIHtcblx0XHRyZXR1cm4gK2RhdGE7XG5cdH1cblxuXHRpZiAoIHJicmFjZS50ZXN0KCBkYXRhICkgKSB7XG5cdFx0cmV0dXJuIEpTT04ucGFyc2UoIGRhdGEgKTtcblx0fVxuXG5cdHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiBkYXRhQXR0ciggZWxlbSwga2V5LCBkYXRhICkge1xuXHR2YXIgbmFtZTtcblxuXHQvLyBJZiBub3RoaW5nIHdhcyBmb3VuZCBpbnRlcm5hbGx5LCB0cnkgdG8gZmV0Y2ggYW55XG5cdC8vIGRhdGEgZnJvbSB0aGUgSFRNTDUgZGF0YS0qIGF0dHJpYnV0ZVxuXHRpZiAoIGRhdGEgPT09IHVuZGVmaW5lZCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdG5hbWUgPSBcImRhdGEtXCIgKyBrZXkucmVwbGFjZSggcm11bHRpRGFzaCwgXCItJCZcIiApLnRvTG93ZXJDYXNlKCk7XG5cdFx0ZGF0YSA9IGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICk7XG5cblx0XHRpZiAoIHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0ZGF0YSA9IGdldERhdGEoIGRhdGEgKTtcblx0XHRcdH0gY2F0Y2ggKCBlICkge31cblxuXHRcdFx0Ly8gTWFrZSBzdXJlIHdlIHNldCB0aGUgZGF0YSBzbyBpdCBpc24ndCBjaGFuZ2VkIGxhdGVyXG5cdFx0XHRkYXRhVXNlci5zZXQoIGVsZW0sIGtleSwgZGF0YSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRkYXRhID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZGF0YTtcbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXHRoYXNEYXRhOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZGF0YVVzZXIuaGFzRGF0YSggZWxlbSApIHx8IGRhdGFQcml2Lmhhc0RhdGEoIGVsZW0gKTtcblx0fSxcblxuXHRkYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHtcblx0XHRyZXR1cm4gZGF0YVVzZXIuYWNjZXNzKCBlbGVtLCBuYW1lLCBkYXRhICk7XG5cdH0sXG5cblx0cmVtb3ZlRGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7XG5cdFx0ZGF0YVVzZXIucmVtb3ZlKCBlbGVtLCBuYW1lICk7XG5cdH0sXG5cblx0Ly8gVE9ETzogTm93IHRoYXQgYWxsIGNhbGxzIHRvIF9kYXRhIGFuZCBfcmVtb3ZlRGF0YSBoYXZlIGJlZW4gcmVwbGFjZWRcblx0Ly8gd2l0aCBkaXJlY3QgY2FsbHMgdG8gZGF0YVByaXYgbWV0aG9kcywgdGhlc2UgY2FuIGJlIGRlcHJlY2F0ZWQuXG5cdF9kYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHtcblx0XHRyZXR1cm4gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCBuYW1lLCBkYXRhICk7XG5cdH0sXG5cblx0X3JlbW92ZURhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xuXHRcdGRhdGFQcml2LnJlbW92ZSggZWxlbSwgbmFtZSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0ZGF0YTogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7XG5cdFx0dmFyIGksIG5hbWUsIGRhdGEsXG5cdFx0XHRlbGVtID0gdGhpc1sgMCBdLFxuXHRcdFx0YXR0cnMgPSBlbGVtICYmIGVsZW0uYXR0cmlidXRlcztcblxuXHRcdC8vIEdldHMgYWxsIHZhbHVlc1xuXHRcdGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRpZiAoIHRoaXMubGVuZ3RoICkge1xuXHRcdFx0XHRkYXRhID0gZGF0YVVzZXIuZ2V0KCBlbGVtICk7XG5cblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmICFkYXRhUHJpdi5nZXQoIGVsZW0sIFwiaGFzRGF0YUF0dHJzXCIgKSApIHtcblx0XHRcdFx0XHRpID0gYXR0cnMubGVuZ3RoO1xuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSAxMSBvbmx5XG5cdFx0XHRcdFx0XHQvLyBUaGUgYXR0cnMgZWxlbWVudHMgY2FuIGJlIG51bGwgKCMxNDg5NClcblx0XHRcdFx0XHRcdGlmICggYXR0cnNbIGkgXSApIHtcblx0XHRcdFx0XHRcdFx0bmFtZSA9IGF0dHJzWyBpIF0ubmFtZTtcblx0XHRcdFx0XHRcdFx0aWYgKCBuYW1lLmluZGV4T2YoIFwiZGF0YS1cIiApID09PSAwICkge1xuXHRcdFx0XHRcdFx0XHRcdG5hbWUgPSBjYW1lbENhc2UoIG5hbWUuc2xpY2UoIDUgKSApO1xuXHRcdFx0XHRcdFx0XHRcdGRhdGFBdHRyKCBlbGVtLCBuYW1lLCBkYXRhWyBuYW1lIF0gKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRkYXRhUHJpdi5zZXQoIGVsZW0sIFwiaGFzRGF0YUF0dHJzXCIsIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZGF0YTtcblx0XHR9XG5cblx0XHQvLyBTZXRzIG11bHRpcGxlIHZhbHVlc1xuXHRcdGlmICggdHlwZW9mIGtleSA9PT0gXCJvYmplY3RcIiApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRkYXRhVXNlci5zZXQoIHRoaXMsIGtleSApO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHZhciBkYXRhO1xuXG5cdFx0XHQvLyBUaGUgY2FsbGluZyBqUXVlcnkgb2JqZWN0IChlbGVtZW50IG1hdGNoZXMpIGlzIG5vdCBlbXB0eVxuXHRcdFx0Ly8gKGFuZCB0aGVyZWZvcmUgaGFzIGFuIGVsZW1lbnQgYXBwZWFycyBhdCB0aGlzWyAwIF0pIGFuZCB0aGVcblx0XHRcdC8vIGB2YWx1ZWAgcGFyYW1ldGVyIHdhcyBub3QgdW5kZWZpbmVkLiBBbiBlbXB0eSBqUXVlcnkgb2JqZWN0XG5cdFx0XHQvLyB3aWxsIHJlc3VsdCBpbiBgdW5kZWZpbmVkYCBmb3IgZWxlbSA9IHRoaXNbIDAgXSB3aGljaCB3aWxsXG5cdFx0XHQvLyB0aHJvdyBhbiBleGNlcHRpb24gaWYgYW4gYXR0ZW1wdCB0byByZWFkIGEgZGF0YSBjYWNoZSBpcyBtYWRlLlxuXHRcdFx0aWYgKCBlbGVtICYmIHZhbHVlID09PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdFx0Ly8gQXR0ZW1wdCB0byBnZXQgZGF0YSBmcm9tIHRoZSBjYWNoZVxuXHRcdFx0XHQvLyBUaGUga2V5IHdpbGwgYWx3YXlzIGJlIGNhbWVsQ2FzZWQgaW4gRGF0YVxuXHRcdFx0XHRkYXRhID0gZGF0YVVzZXIuZ2V0KCBlbGVtLCBrZXkgKTtcblx0XHRcdFx0aWYgKCBkYXRhICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBBdHRlbXB0IHRvIFwiZGlzY292ZXJcIiB0aGUgZGF0YSBpblxuXHRcdFx0XHQvLyBIVE1MNSBjdXN0b20gZGF0YS0qIGF0dHJzXG5cdFx0XHRcdGRhdGEgPSBkYXRhQXR0ciggZWxlbSwga2V5ICk7XG5cdFx0XHRcdGlmICggZGF0YSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gV2UgdHJpZWQgcmVhbGx5IGhhcmQsIGJ1dCB0aGUgZGF0YSBkb2Vzbid0IGV4aXN0LlxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNldCB0aGUgZGF0YS4uLlxuXHRcdFx0dGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHQvLyBXZSBhbHdheXMgc3RvcmUgdGhlIGNhbWVsQ2FzZWQga2V5XG5cdFx0XHRcdGRhdGFVc2VyLnNldCggdGhpcywga2V5LCB2YWx1ZSApO1xuXHRcdFx0fSApO1xuXHRcdH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSwgbnVsbCwgdHJ1ZSApO1xuXHR9LFxuXG5cdHJlbW92ZURhdGE6IGZ1bmN0aW9uKCBrZXkgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRkYXRhVXNlci5yZW1vdmUoIHRoaXMsIGtleSApO1xuXHRcdH0gKTtcblx0fVxufSApO1xuXG5cbmpRdWVyeS5leHRlbmQoIHtcblx0cXVldWU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCBkYXRhICkge1xuXHRcdHZhciBxdWV1ZTtcblxuXHRcdGlmICggZWxlbSApIHtcblx0XHRcdHR5cGUgPSAoIHR5cGUgfHwgXCJmeFwiICkgKyBcInF1ZXVlXCI7XG5cdFx0XHRxdWV1ZSA9IGRhdGFQcml2LmdldCggZWxlbSwgdHlwZSApO1xuXG5cdFx0XHQvLyBTcGVlZCB1cCBkZXF1ZXVlIGJ5IGdldHRpbmcgb3V0IHF1aWNrbHkgaWYgdGhpcyBpcyBqdXN0IGEgbG9va3VwXG5cdFx0XHRpZiAoIGRhdGEgKSB7XG5cdFx0XHRcdGlmICggIXF1ZXVlIHx8IEFycmF5LmlzQXJyYXkoIGRhdGEgKSApIHtcblx0XHRcdFx0XHRxdWV1ZSA9IGRhdGFQcml2LmFjY2VzcyggZWxlbSwgdHlwZSwgalF1ZXJ5Lm1ha2VBcnJheSggZGF0YSApICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cXVldWUucHVzaCggZGF0YSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcXVldWUgfHwgW107XG5cdFx0fVxuXHR9LFxuXG5cdGRlcXVldWU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlICkge1xuXHRcdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblxuXHRcdHZhciBxdWV1ZSA9IGpRdWVyeS5xdWV1ZSggZWxlbSwgdHlwZSApLFxuXHRcdFx0c3RhcnRMZW5ndGggPSBxdWV1ZS5sZW5ndGgsXG5cdFx0XHRmbiA9IHF1ZXVlLnNoaWZ0KCksXG5cdFx0XHRob29rcyA9IGpRdWVyeS5fcXVldWVIb29rcyggZWxlbSwgdHlwZSApLFxuXHRcdFx0bmV4dCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRqUXVlcnkuZGVxdWV1ZSggZWxlbSwgdHlwZSApO1xuXHRcdFx0fTtcblxuXHRcdC8vIElmIHRoZSBmeCBxdWV1ZSBpcyBkZXF1ZXVlZCwgYWx3YXlzIHJlbW92ZSB0aGUgcHJvZ3Jlc3Mgc2VudGluZWxcblx0XHRpZiAoIGZuID09PSBcImlucHJvZ3Jlc3NcIiApIHtcblx0XHRcdGZuID0gcXVldWUuc2hpZnQoKTtcblx0XHRcdHN0YXJ0TGVuZ3RoLS07XG5cdFx0fVxuXG5cdFx0aWYgKCBmbiApIHtcblxuXHRcdFx0Ly8gQWRkIGEgcHJvZ3Jlc3Mgc2VudGluZWwgdG8gcHJldmVudCB0aGUgZnggcXVldWUgZnJvbSBiZWluZ1xuXHRcdFx0Ly8gYXV0b21hdGljYWxseSBkZXF1ZXVlZFxuXHRcdFx0aWYgKCB0eXBlID09PSBcImZ4XCIgKSB7XG5cdFx0XHRcdHF1ZXVlLnVuc2hpZnQoIFwiaW5wcm9ncmVzc1wiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENsZWFyIHVwIHRoZSBsYXN0IHF1ZXVlIHN0b3AgZnVuY3Rpb25cblx0XHRcdGRlbGV0ZSBob29rcy5zdG9wO1xuXHRcdFx0Zm4uY2FsbCggZWxlbSwgbmV4dCwgaG9va3MgKTtcblx0XHR9XG5cblx0XHRpZiAoICFzdGFydExlbmd0aCAmJiBob29rcyApIHtcblx0XHRcdGhvb2tzLmVtcHR5LmZpcmUoKTtcblx0XHR9XG5cdH0sXG5cblx0Ly8gTm90IHB1YmxpYyAtIGdlbmVyYXRlIGEgcXVldWVIb29rcyBvYmplY3QsIG9yIHJldHVybiB0aGUgY3VycmVudCBvbmVcblx0X3F1ZXVlSG9va3M6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlICkge1xuXHRcdHZhciBrZXkgPSB0eXBlICsgXCJxdWV1ZUhvb2tzXCI7XG5cdFx0cmV0dXJuIGRhdGFQcml2LmdldCggZWxlbSwga2V5ICkgfHwgZGF0YVByaXYuYWNjZXNzKCBlbGVtLCBrZXksIHtcblx0XHRcdGVtcHR5OiBqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKS5hZGQoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIFsgdHlwZSArIFwicXVldWVcIiwga2V5IF0gKTtcblx0XHRcdH0gKVxuXHRcdH0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHF1ZXVlOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHtcblx0XHR2YXIgc2V0dGVyID0gMjtcblxuXHRcdGlmICggdHlwZW9mIHR5cGUgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRkYXRhID0gdHlwZTtcblx0XHRcdHR5cGUgPSBcImZ4XCI7XG5cdFx0XHRzZXR0ZXItLTtcblx0XHR9XG5cblx0XHRpZiAoIGFyZ3VtZW50cy5sZW5ndGggPCBzZXR0ZXIgKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LnF1ZXVlKCB0aGlzWyAwIF0sIHR5cGUgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZGF0YSA9PT0gdW5kZWZpbmVkID9cblx0XHRcdHRoaXMgOlxuXHRcdFx0dGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCB0aGlzLCB0eXBlLCBkYXRhICk7XG5cblx0XHRcdFx0Ly8gRW5zdXJlIGEgaG9va3MgZm9yIHRoaXMgcXVldWVcblx0XHRcdFx0alF1ZXJ5Ll9xdWV1ZUhvb2tzKCB0aGlzLCB0eXBlICk7XG5cblx0XHRcdFx0aWYgKCB0eXBlID09PSBcImZ4XCIgJiYgcXVldWVbIDAgXSAhPT0gXCJpbnByb2dyZXNzXCIgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHR9LFxuXHRkZXF1ZXVlOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7XG5cdFx0fSApO1xuXHR9LFxuXHRjbGVhclF1ZXVlOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRyZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSB8fCBcImZ4XCIsIFtdICk7XG5cdH0sXG5cblx0Ly8gR2V0IGEgcHJvbWlzZSByZXNvbHZlZCB3aGVuIHF1ZXVlcyBvZiBhIGNlcnRhaW4gdHlwZVxuXHQvLyBhcmUgZW1wdGllZCAoZnggaXMgdGhlIHR5cGUgYnkgZGVmYXVsdClcblx0cHJvbWlzZTogZnVuY3Rpb24oIHR5cGUsIG9iaiApIHtcblx0XHR2YXIgdG1wLFxuXHRcdFx0Y291bnQgPSAxLFxuXHRcdFx0ZGVmZXIgPSBqUXVlcnkuRGVmZXJyZWQoKSxcblx0XHRcdGVsZW1lbnRzID0gdGhpcyxcblx0XHRcdGkgPSB0aGlzLmxlbmd0aCxcblx0XHRcdHJlc29sdmUgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCAhKCAtLWNvdW50ICkgKSB7XG5cdFx0XHRcdFx0ZGVmZXIucmVzb2x2ZVdpdGgoIGVsZW1lbnRzLCBbIGVsZW1lbnRzIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdGlmICggdHlwZW9mIHR5cGUgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRvYmogPSB0eXBlO1xuXHRcdFx0dHlwZSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHR0bXAgPSBkYXRhUHJpdi5nZXQoIGVsZW1lbnRzWyBpIF0sIHR5cGUgKyBcInF1ZXVlSG9va3NcIiApO1xuXHRcdFx0aWYgKCB0bXAgJiYgdG1wLmVtcHR5ICkge1xuXHRcdFx0XHRjb3VudCsrO1xuXHRcdFx0XHR0bXAuZW1wdHkuYWRkKCByZXNvbHZlICk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJlc29sdmUoKTtcblx0XHRyZXR1cm4gZGVmZXIucHJvbWlzZSggb2JqICk7XG5cdH1cbn0gKTtcbnZhciBwbnVtID0gKCAvWystXT8oPzpcXGQqXFwufClcXGQrKD86W2VFXVsrLV0/XFxkK3wpLyApLnNvdXJjZTtcblxudmFyIHJjc3NOdW0gPSBuZXcgUmVnRXhwKCBcIl4oPzooWystXSk9fCkoXCIgKyBwbnVtICsgXCIpKFthLXolXSopJFwiLCBcImlcIiApO1xuXG5cbnZhciBjc3NFeHBhbmQgPSBbIFwiVG9wXCIsIFwiUmlnaHRcIiwgXCJCb3R0b21cIiwgXCJMZWZ0XCIgXTtcblxudmFyIGlzSGlkZGVuV2l0aGluVHJlZSA9IGZ1bmN0aW9uKCBlbGVtLCBlbCApIHtcblxuXHRcdC8vIGlzSGlkZGVuV2l0aGluVHJlZSBtaWdodCBiZSBjYWxsZWQgZnJvbSBqUXVlcnkjZmlsdGVyIGZ1bmN0aW9uO1xuXHRcdC8vIGluIHRoYXQgY2FzZSwgZWxlbWVudCB3aWxsIGJlIHNlY29uZCBhcmd1bWVudFxuXHRcdGVsZW0gPSBlbCB8fCBlbGVtO1xuXG5cdFx0Ly8gSW5saW5lIHN0eWxlIHRydW1wcyBhbGxcblx0XHRyZXR1cm4gZWxlbS5zdHlsZS5kaXNwbGF5ID09PSBcIm5vbmVcIiB8fFxuXHRcdFx0ZWxlbS5zdHlsZS5kaXNwbGF5ID09PSBcIlwiICYmXG5cblx0XHRcdC8vIE90aGVyd2lzZSwgY2hlY2sgY29tcHV0ZWQgc3R5bGVcblx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggPD00MyAtIDQ1XG5cdFx0XHQvLyBEaXNjb25uZWN0ZWQgZWxlbWVudHMgY2FuIGhhdmUgY29tcHV0ZWQgZGlzcGxheTogbm9uZSwgc28gZmlyc3QgY29uZmlybSB0aGF0IGVsZW0gaXNcblx0XHRcdC8vIGluIHRoZSBkb2N1bWVudC5cblx0XHRcdGpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICkgJiZcblxuXHRcdFx0alF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKSA9PT0gXCJub25lXCI7XG5cdH07XG5cbnZhciBzd2FwID0gZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIGNhbGxiYWNrLCBhcmdzICkge1xuXHR2YXIgcmV0LCBuYW1lLFxuXHRcdG9sZCA9IHt9O1xuXG5cdC8vIFJlbWVtYmVyIHRoZSBvbGQgdmFsdWVzLCBhbmQgaW5zZXJ0IHRoZSBuZXcgb25lc1xuXHRmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7XG5cdFx0b2xkWyBuYW1lIF0gPSBlbGVtLnN0eWxlWyBuYW1lIF07XG5cdFx0ZWxlbS5zdHlsZVsgbmFtZSBdID0gb3B0aW9uc1sgbmFtZSBdO1xuXHR9XG5cblx0cmV0ID0gY2FsbGJhY2suYXBwbHkoIGVsZW0sIGFyZ3MgfHwgW10gKTtcblxuXHQvLyBSZXZlcnQgdGhlIG9sZCB2YWx1ZXNcblx0Zm9yICggbmFtZSBpbiBvcHRpb25zICkge1xuXHRcdGVsZW0uc3R5bGVbIG5hbWUgXSA9IG9sZFsgbmFtZSBdO1xuXHR9XG5cblx0cmV0dXJuIHJldDtcbn07XG5cblxuXG5cbmZ1bmN0aW9uIGFkanVzdENTUyggZWxlbSwgcHJvcCwgdmFsdWVQYXJ0cywgdHdlZW4gKSB7XG5cdHZhciBhZGp1c3RlZCwgc2NhbGUsXG5cdFx0bWF4SXRlcmF0aW9ucyA9IDIwLFxuXHRcdGN1cnJlbnRWYWx1ZSA9IHR3ZWVuID9cblx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gdHdlZW4uY3VyKCk7XG5cdFx0XHR9IDpcblx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4galF1ZXJ5LmNzcyggZWxlbSwgcHJvcCwgXCJcIiApO1xuXHRcdFx0fSxcblx0XHRpbml0aWFsID0gY3VycmVudFZhbHVlKCksXG5cdFx0dW5pdCA9IHZhbHVlUGFydHMgJiYgdmFsdWVQYXJ0c1sgMyBdIHx8ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8gXCJcIiA6IFwicHhcIiApLFxuXG5cdFx0Ly8gU3RhcnRpbmcgdmFsdWUgY29tcHV0YXRpb24gaXMgcmVxdWlyZWQgZm9yIHBvdGVudGlhbCB1bml0IG1pc21hdGNoZXNcblx0XHRpbml0aWFsSW5Vbml0ID0gKCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gfHwgdW5pdCAhPT0gXCJweFwiICYmICtpbml0aWFsICkgJiZcblx0XHRcdHJjc3NOdW0uZXhlYyggalF1ZXJ5LmNzcyggZWxlbSwgcHJvcCApICk7XG5cblx0aWYgKCBpbml0aWFsSW5Vbml0ICYmIGluaXRpYWxJblVuaXRbIDMgXSAhPT0gdW5pdCApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggPD01NFxuXHRcdC8vIEhhbHZlIHRoZSBpdGVyYXRpb24gdGFyZ2V0IHZhbHVlIHRvIHByZXZlbnQgaW50ZXJmZXJlbmNlIGZyb20gQ1NTIHVwcGVyIGJvdW5kcyAoZ2gtMjE0NClcblx0XHRpbml0aWFsID0gaW5pdGlhbCAvIDI7XG5cblx0XHQvLyBUcnVzdCB1bml0cyByZXBvcnRlZCBieSBqUXVlcnkuY3NzXG5cdFx0dW5pdCA9IHVuaXQgfHwgaW5pdGlhbEluVW5pdFsgMyBdO1xuXG5cdFx0Ly8gSXRlcmF0aXZlbHkgYXBwcm94aW1hdGUgZnJvbSBhIG5vbnplcm8gc3RhcnRpbmcgcG9pbnRcblx0XHRpbml0aWFsSW5Vbml0ID0gK2luaXRpYWwgfHwgMTtcblxuXHRcdHdoaWxlICggbWF4SXRlcmF0aW9ucy0tICkge1xuXG5cdFx0XHQvLyBFdmFsdWF0ZSBhbmQgdXBkYXRlIG91ciBiZXN0IGd1ZXNzIChkb3VibGluZyBndWVzc2VzIHRoYXQgemVybyBvdXQpLlxuXHRcdFx0Ly8gRmluaXNoIGlmIHRoZSBzY2FsZSBlcXVhbHMgb3IgY3Jvc3NlcyAxIChtYWtpbmcgdGhlIG9sZCpuZXcgcHJvZHVjdCBub24tcG9zaXRpdmUpLlxuXHRcdFx0alF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wLCBpbml0aWFsSW5Vbml0ICsgdW5pdCApO1xuXHRcdFx0aWYgKCAoIDEgLSBzY2FsZSApICogKCAxIC0gKCBzY2FsZSA9IGN1cnJlbnRWYWx1ZSgpIC8gaW5pdGlhbCB8fCAwLjUgKSApIDw9IDAgKSB7XG5cdFx0XHRcdG1heEl0ZXJhdGlvbnMgPSAwO1xuXHRcdFx0fVxuXHRcdFx0aW5pdGlhbEluVW5pdCA9IGluaXRpYWxJblVuaXQgLyBzY2FsZTtcblxuXHRcdH1cblxuXHRcdGluaXRpYWxJblVuaXQgPSBpbml0aWFsSW5Vbml0ICogMjtcblx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AsIGluaXRpYWxJblVuaXQgKyB1bml0ICk7XG5cblx0XHQvLyBNYWtlIHN1cmUgd2UgdXBkYXRlIHRoZSB0d2VlbiBwcm9wZXJ0aWVzIGxhdGVyIG9uXG5cdFx0dmFsdWVQYXJ0cyA9IHZhbHVlUGFydHMgfHwgW107XG5cdH1cblxuXHRpZiAoIHZhbHVlUGFydHMgKSB7XG5cdFx0aW5pdGlhbEluVW5pdCA9ICtpbml0aWFsSW5Vbml0IHx8ICtpbml0aWFsIHx8IDA7XG5cblx0XHQvLyBBcHBseSByZWxhdGl2ZSBvZmZzZXQgKCs9Ly09KSBpZiBzcGVjaWZpZWRcblx0XHRhZGp1c3RlZCA9IHZhbHVlUGFydHNbIDEgXSA/XG5cdFx0XHRpbml0aWFsSW5Vbml0ICsgKCB2YWx1ZVBhcnRzWyAxIF0gKyAxICkgKiB2YWx1ZVBhcnRzWyAyIF0gOlxuXHRcdFx0K3ZhbHVlUGFydHNbIDIgXTtcblx0XHRpZiAoIHR3ZWVuICkge1xuXHRcdFx0dHdlZW4udW5pdCA9IHVuaXQ7XG5cdFx0XHR0d2Vlbi5zdGFydCA9IGluaXRpYWxJblVuaXQ7XG5cdFx0XHR0d2Vlbi5lbmQgPSBhZGp1c3RlZDtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGFkanVzdGVkO1xufVxuXG5cbnZhciBkZWZhdWx0RGlzcGxheU1hcCA9IHt9O1xuXG5mdW5jdGlvbiBnZXREZWZhdWx0RGlzcGxheSggZWxlbSApIHtcblx0dmFyIHRlbXAsXG5cdFx0ZG9jID0gZWxlbS5vd25lckRvY3VtZW50LFxuXHRcdG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZSxcblx0XHRkaXNwbGF5ID0gZGVmYXVsdERpc3BsYXlNYXBbIG5vZGVOYW1lIF07XG5cblx0aWYgKCBkaXNwbGF5ICkge1xuXHRcdHJldHVybiBkaXNwbGF5O1xuXHR9XG5cblx0dGVtcCA9IGRvYy5ib2R5LmFwcGVuZENoaWxkKCBkb2MuY3JlYXRlRWxlbWVudCggbm9kZU5hbWUgKSApO1xuXHRkaXNwbGF5ID0galF1ZXJ5LmNzcyggdGVtcCwgXCJkaXNwbGF5XCIgKTtcblxuXHR0ZW1wLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHRlbXAgKTtcblxuXHRpZiAoIGRpc3BsYXkgPT09IFwibm9uZVwiICkge1xuXHRcdGRpc3BsYXkgPSBcImJsb2NrXCI7XG5cdH1cblx0ZGVmYXVsdERpc3BsYXlNYXBbIG5vZGVOYW1lIF0gPSBkaXNwbGF5O1xuXG5cdHJldHVybiBkaXNwbGF5O1xufVxuXG5mdW5jdGlvbiBzaG93SGlkZSggZWxlbWVudHMsIHNob3cgKSB7XG5cdHZhciBkaXNwbGF5LCBlbGVtLFxuXHRcdHZhbHVlcyA9IFtdLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBlbGVtZW50cy5sZW5ndGg7XG5cblx0Ly8gRGV0ZXJtaW5lIG5ldyBkaXNwbGF5IHZhbHVlIGZvciBlbGVtZW50cyB0aGF0IG5lZWQgdG8gY2hhbmdlXG5cdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0ZWxlbSA9IGVsZW1lbnRzWyBpbmRleCBdO1xuXHRcdGlmICggIWVsZW0uc3R5bGUgKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHRkaXNwbGF5ID0gZWxlbS5zdHlsZS5kaXNwbGF5O1xuXHRcdGlmICggc2hvdyApIHtcblxuXHRcdFx0Ly8gU2luY2Ugd2UgZm9yY2UgdmlzaWJpbGl0eSB1cG9uIGNhc2NhZGUtaGlkZGVuIGVsZW1lbnRzLCBhbiBpbW1lZGlhdGUgKGFuZCBzbG93KVxuXHRcdFx0Ly8gY2hlY2sgaXMgcmVxdWlyZWQgaW4gdGhpcyBmaXJzdCBsb29wIHVubGVzcyB3ZSBoYXZlIGEgbm9uZW1wdHkgZGlzcGxheSB2YWx1ZSAoZWl0aGVyXG5cdFx0XHQvLyBpbmxpbmUgb3IgYWJvdXQtdG8tYmUtcmVzdG9yZWQpXG5cdFx0XHRpZiAoIGRpc3BsYXkgPT09IFwibm9uZVwiICkge1xuXHRcdFx0XHR2YWx1ZXNbIGluZGV4IF0gPSBkYXRhUHJpdi5nZXQoIGVsZW0sIFwiZGlzcGxheVwiICkgfHwgbnVsbDtcblx0XHRcdFx0aWYgKCAhdmFsdWVzWyBpbmRleCBdICkge1xuXHRcdFx0XHRcdGVsZW0uc3R5bGUuZGlzcGxheSA9IFwiXCI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICggZWxlbS5zdHlsZS5kaXNwbGF5ID09PSBcIlwiICYmIGlzSGlkZGVuV2l0aGluVHJlZSggZWxlbSApICkge1xuXHRcdFx0XHR2YWx1ZXNbIGluZGV4IF0gPSBnZXREZWZhdWx0RGlzcGxheSggZWxlbSApO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAoIGRpc3BsYXkgIT09IFwibm9uZVwiICkge1xuXHRcdFx0XHR2YWx1ZXNbIGluZGV4IF0gPSBcIm5vbmVcIjtcblxuXHRcdFx0XHQvLyBSZW1lbWJlciB3aGF0IHdlJ3JlIG92ZXJ3cml0aW5nXG5cdFx0XHRcdGRhdGFQcml2LnNldCggZWxlbSwgXCJkaXNwbGF5XCIsIGRpc3BsYXkgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBTZXQgdGhlIGRpc3BsYXkgb2YgdGhlIGVsZW1lbnRzIGluIGEgc2Vjb25kIGxvb3AgdG8gYXZvaWQgY29uc3RhbnQgcmVmbG93XG5cdGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0aWYgKCB2YWx1ZXNbIGluZGV4IF0gIT0gbnVsbCApIHtcblx0XHRcdGVsZW1lbnRzWyBpbmRleCBdLnN0eWxlLmRpc3BsYXkgPSB2YWx1ZXNbIGluZGV4IF07XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGVsZW1lbnRzO1xufVxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHNob3c6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBzaG93SGlkZSggdGhpcywgdHJ1ZSApO1xuXHR9LFxuXHRoaWRlOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gc2hvd0hpZGUoIHRoaXMgKTtcblx0fSxcblx0dG9nZ2xlOiBmdW5jdGlvbiggc3RhdGUgKSB7XG5cdFx0aWYgKCB0eXBlb2Ygc3RhdGUgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdFx0cmV0dXJuIHN0YXRlID8gdGhpcy5zaG93KCkgOiB0aGlzLmhpZGUoKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggaXNIaWRkZW5XaXRoaW5UcmVlKCB0aGlzICkgKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLnNob3coKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLmhpZGUoKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH1cbn0gKTtcbnZhciByY2hlY2thYmxlVHlwZSA9ICggL14oPzpjaGVja2JveHxyYWRpbykkL2kgKTtcblxudmFyIHJ0YWdOYW1lID0gKCAvPChbYS16XVteXFwvXFwwPlxceDIwXFx0XFxyXFxuXFxmXSspL2kgKTtcblxudmFyIHJzY3JpcHRUeXBlID0gKCAvXiR8Xm1vZHVsZSR8XFwvKD86amF2YXxlY21hKXNjcmlwdC9pICk7XG5cblxuXG4vLyBXZSBoYXZlIHRvIGNsb3NlIHRoZXNlIHRhZ3MgdG8gc3VwcG9ydCBYSFRNTCAoIzEzMjAwKVxudmFyIHdyYXBNYXAgPSB7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0b3B0aW9uOiBbIDEsIFwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPlwiLCBcIjwvc2VsZWN0PlwiIF0sXG5cblx0Ly8gWEhUTUwgcGFyc2VycyBkbyBub3QgbWFnaWNhbGx5IGluc2VydCBlbGVtZW50cyBpbiB0aGVcblx0Ly8gc2FtZSB3YXkgdGhhdCB0YWcgc291cCBwYXJzZXJzIGRvLiBTbyB3ZSBjYW5ub3Qgc2hvcnRlblxuXHQvLyB0aGlzIGJ5IG9taXR0aW5nIDx0Ym9keT4gb3Igb3RoZXIgcmVxdWlyZWQgZWxlbWVudHMuXG5cdHRoZWFkOiBbIDEsIFwiPHRhYmxlPlwiLCBcIjwvdGFibGU+XCIgXSxcblx0Y29sOiBbIDIsIFwiPHRhYmxlPjxjb2xncm91cD5cIiwgXCI8L2NvbGdyb3VwPjwvdGFibGU+XCIgXSxcblx0dHI6IFsgMiwgXCI8dGFibGU+PHRib2R5PlwiLCBcIjwvdGJvZHk+PC90YWJsZT5cIiBdLFxuXHR0ZDogWyAzLCBcIjx0YWJsZT48dGJvZHk+PHRyPlwiLCBcIjwvdHI+PC90Ym9keT48L3RhYmxlPlwiIF0sXG5cblx0X2RlZmF1bHQ6IFsgMCwgXCJcIiwgXCJcIiBdXG59O1xuXG4vLyBTdXBwb3J0OiBJRSA8PTkgb25seVxud3JhcE1hcC5vcHRncm91cCA9IHdyYXBNYXAub3B0aW9uO1xuXG53cmFwTWFwLnRib2R5ID0gd3JhcE1hcC50Zm9vdCA9IHdyYXBNYXAuY29sZ3JvdXAgPSB3cmFwTWFwLmNhcHRpb24gPSB3cmFwTWFwLnRoZWFkO1xud3JhcE1hcC50aCA9IHdyYXBNYXAudGQ7XG5cblxuZnVuY3Rpb24gZ2V0QWxsKCBjb250ZXh0LCB0YWcgKSB7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seVxuXHQvLyBVc2UgdHlwZW9mIHRvIGF2b2lkIHplcm8tYXJndW1lbnQgbWV0aG9kIGludm9jYXRpb24gb24gaG9zdCBvYmplY3RzICgjMTUxNTEpXG5cdHZhciByZXQ7XG5cblx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gXCJ1bmRlZmluZWRcIiApIHtcblx0XHRyZXQgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgfHwgXCIqXCIgKTtcblxuXHR9IGVsc2UgaWYgKCB0eXBlb2YgY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsICE9PSBcInVuZGVmaW5lZFwiICkge1xuXHRcdHJldCA9IGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCggdGFnIHx8IFwiKlwiICk7XG5cblx0fSBlbHNlIHtcblx0XHRyZXQgPSBbXTtcblx0fVxuXG5cdGlmICggdGFnID09PSB1bmRlZmluZWQgfHwgdGFnICYmIG5vZGVOYW1lKCBjb250ZXh0LCB0YWcgKSApIHtcblx0XHRyZXR1cm4galF1ZXJ5Lm1lcmdlKCBbIGNvbnRleHQgXSwgcmV0ICk7XG5cdH1cblxuXHRyZXR1cm4gcmV0O1xufVxuXG5cbi8vIE1hcmsgc2NyaXB0cyBhcyBoYXZpbmcgYWxyZWFkeSBiZWVuIGV2YWx1YXRlZFxuZnVuY3Rpb24gc2V0R2xvYmFsRXZhbCggZWxlbXMsIHJlZkVsZW1lbnRzICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bCA9IGVsZW1zLmxlbmd0aDtcblxuXHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0ZGF0YVByaXYuc2V0KFxuXHRcdFx0ZWxlbXNbIGkgXSxcblx0XHRcdFwiZ2xvYmFsRXZhbFwiLFxuXHRcdFx0IXJlZkVsZW1lbnRzIHx8IGRhdGFQcml2LmdldCggcmVmRWxlbWVudHNbIGkgXSwgXCJnbG9iYWxFdmFsXCIgKVxuXHRcdCk7XG5cdH1cbn1cblxuXG52YXIgcmh0bWwgPSAvPHwmIz9cXHcrOy87XG5cbmZ1bmN0aW9uIGJ1aWxkRnJhZ21lbnQoIGVsZW1zLCBjb250ZXh0LCBzY3JpcHRzLCBzZWxlY3Rpb24sIGlnbm9yZWQgKSB7XG5cdHZhciBlbGVtLCB0bXAsIHRhZywgd3JhcCwgY29udGFpbnMsIGosXG5cdFx0ZnJhZ21lbnQgPSBjb250ZXh0LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxcblx0XHRub2RlcyA9IFtdLFxuXHRcdGkgPSAwLFxuXHRcdGwgPSBlbGVtcy5sZW5ndGg7XG5cblx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdGVsZW0gPSBlbGVtc1sgaSBdO1xuXG5cdFx0aWYgKCBlbGVtIHx8IGVsZW0gPT09IDAgKSB7XG5cblx0XHRcdC8vIEFkZCBub2RlcyBkaXJlY3RseVxuXHRcdFx0aWYgKCB0b1R5cGUoIGVsZW0gKSA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0XHRcdFx0Ly8gcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRcdFx0XHRqUXVlcnkubWVyZ2UoIG5vZGVzLCBlbGVtLm5vZGVUeXBlID8gWyBlbGVtIF0gOiBlbGVtICk7XG5cblx0XHRcdC8vIENvbnZlcnQgbm9uLWh0bWwgaW50byBhIHRleHQgbm9kZVxuXHRcdFx0fSBlbHNlIGlmICggIXJodG1sLnRlc3QoIGVsZW0gKSApIHtcblx0XHRcdFx0bm9kZXMucHVzaCggY29udGV4dC5jcmVhdGVUZXh0Tm9kZSggZWxlbSApICk7XG5cblx0XHRcdC8vIENvbnZlcnQgaHRtbCBpbnRvIERPTSBub2Rlc1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dG1wID0gdG1wIHx8IGZyYWdtZW50LmFwcGVuZENoaWxkKCBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKSApO1xuXG5cdFx0XHRcdC8vIERlc2VyaWFsaXplIGEgc3RhbmRhcmQgcmVwcmVzZW50YXRpb25cblx0XHRcdFx0dGFnID0gKCBydGFnTmFtZS5leGVjKCBlbGVtICkgfHwgWyBcIlwiLCBcIlwiIF0gKVsgMSBdLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRcdHdyYXAgPSB3cmFwTWFwWyB0YWcgXSB8fCB3cmFwTWFwLl9kZWZhdWx0O1xuXHRcdFx0XHR0bXAuaW5uZXJIVE1MID0gd3JhcFsgMSBdICsgalF1ZXJ5Lmh0bWxQcmVmaWx0ZXIoIGVsZW0gKSArIHdyYXBbIDIgXTtcblxuXHRcdFx0XHQvLyBEZXNjZW5kIHRocm91Z2ggd3JhcHBlcnMgdG8gdGhlIHJpZ2h0IGNvbnRlbnRcblx0XHRcdFx0aiA9IHdyYXBbIDAgXTtcblx0XHRcdFx0d2hpbGUgKCBqLS0gKSB7XG5cdFx0XHRcdFx0dG1wID0gdG1wLmxhc3RDaGlsZDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seVxuXHRcdFx0XHQvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdFx0XHRcdGpRdWVyeS5tZXJnZSggbm9kZXMsIHRtcC5jaGlsZE5vZGVzICk7XG5cblx0XHRcdFx0Ly8gUmVtZW1iZXIgdGhlIHRvcC1sZXZlbCBjb250YWluZXJcblx0XHRcdFx0dG1wID0gZnJhZ21lbnQuZmlyc3RDaGlsZDtcblxuXHRcdFx0XHQvLyBFbnN1cmUgdGhlIGNyZWF0ZWQgbm9kZXMgYXJlIG9ycGhhbmVkICgjMTIzOTIpXG5cdFx0XHRcdHRtcC50ZXh0Q29udGVudCA9IFwiXCI7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmVtb3ZlIHdyYXBwZXIgZnJvbSBmcmFnbWVudFxuXHRmcmFnbWVudC50ZXh0Q29udGVudCA9IFwiXCI7XG5cblx0aSA9IDA7XG5cdHdoaWxlICggKCBlbGVtID0gbm9kZXNbIGkrKyBdICkgKSB7XG5cblx0XHQvLyBTa2lwIGVsZW1lbnRzIGFscmVhZHkgaW4gdGhlIGNvbnRleHQgY29sbGVjdGlvbiAodHJhYy00MDg3KVxuXHRcdGlmICggc2VsZWN0aW9uICYmIGpRdWVyeS5pbkFycmF5KCBlbGVtLCBzZWxlY3Rpb24gKSA+IC0xICkge1xuXHRcdFx0aWYgKCBpZ25vcmVkICkge1xuXHRcdFx0XHRpZ25vcmVkLnB1c2goIGVsZW0gKTtcblx0XHRcdH1cblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdGNvbnRhaW5zID0galF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKTtcblxuXHRcdC8vIEFwcGVuZCB0byBmcmFnbWVudFxuXHRcdHRtcCA9IGdldEFsbCggZnJhZ21lbnQuYXBwZW5kQ2hpbGQoIGVsZW0gKSwgXCJzY3JpcHRcIiApO1xuXG5cdFx0Ly8gUHJlc2VydmUgc2NyaXB0IGV2YWx1YXRpb24gaGlzdG9yeVxuXHRcdGlmICggY29udGFpbnMgKSB7XG5cdFx0XHRzZXRHbG9iYWxFdmFsKCB0bXAgKTtcblx0XHR9XG5cblx0XHQvLyBDYXB0dXJlIGV4ZWN1dGFibGVzXG5cdFx0aWYgKCBzY3JpcHRzICkge1xuXHRcdFx0aiA9IDA7XG5cdFx0XHR3aGlsZSAoICggZWxlbSA9IHRtcFsgaisrIF0gKSApIHtcblx0XHRcdFx0aWYgKCByc2NyaXB0VHlwZS50ZXN0KCBlbGVtLnR5cGUgfHwgXCJcIiApICkge1xuXHRcdFx0XHRcdHNjcmlwdHMucHVzaCggZWxlbSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGZyYWdtZW50O1xufVxuXG5cbiggZnVuY3Rpb24oKSB7XG5cdHZhciBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxcblx0XHRkaXYgPSBmcmFnbWVudC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApICksXG5cdFx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImlucHV0XCIgKTtcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQuMyBvbmx5XG5cdC8vIENoZWNrIHN0YXRlIGxvc3QgaWYgdGhlIG5hbWUgaXMgc2V0ICgjMTEyMTcpXG5cdC8vIFN1cHBvcnQ6IFdpbmRvd3MgV2ViIEFwcHMgKFdXQSlcblx0Ly8gYG5hbWVgIGFuZCBgdHlwZWAgbXVzdCB1c2UgLnNldEF0dHJpYnV0ZSBmb3IgV1dBICgjMTQ5MDEpXG5cdGlucHV0LnNldEF0dHJpYnV0ZSggXCJ0eXBlXCIsIFwicmFkaW9cIiApO1xuXHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwiY2hlY2tlZFwiLCBcImNoZWNrZWRcIiApO1xuXHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwibmFtZVwiLCBcInRcIiApO1xuXG5cdGRpdi5hcHBlbmRDaGlsZCggaW5wdXQgKTtcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4xIG9ubHlcblx0Ly8gT2xkZXIgV2ViS2l0IGRvZXNuJ3QgY2xvbmUgY2hlY2tlZCBzdGF0ZSBjb3JyZWN0bHkgaW4gZnJhZ21lbnRzXG5cdHN1cHBvcnQuY2hlY2tDbG9uZSA9IGRpdi5jbG9uZU5vZGUoIHRydWUgKS5jbG9uZU5vZGUoIHRydWUgKS5sYXN0Q2hpbGQuY2hlY2tlZDtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0Ly8gTWFrZSBzdXJlIHRleHRhcmVhIChhbmQgY2hlY2tib3gpIGRlZmF1bHRWYWx1ZSBpcyBwcm9wZXJseSBjbG9uZWRcblx0ZGl2LmlubmVySFRNTCA9IFwiPHRleHRhcmVhPng8L3RleHRhcmVhPlwiO1xuXHRzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkID0gISFkaXYuY2xvbmVOb2RlKCB0cnVlICkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZTtcbn0gKSgpO1xudmFyIGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuXG5cbnZhclxuXHRya2V5RXZlbnQgPSAvXmtleS8sXG5cdHJtb3VzZUV2ZW50ID0gL14oPzptb3VzZXxwb2ludGVyfGNvbnRleHRtZW51fGRyYWd8ZHJvcCl8Y2xpY2svLFxuXHRydHlwZW5hbWVzcGFjZSA9IC9eKFteLl0qKSg/OlxcLiguKyl8KS87XG5cbmZ1bmN0aW9uIHJldHVyblRydWUoKSB7XG5cdHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiByZXR1cm5GYWxzZSgpIHtcblx0cmV0dXJuIGZhbHNlO1xufVxuXG4vLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuLy8gU2VlICMxMzM5MyBmb3IgbW9yZSBpbmZvXG5mdW5jdGlvbiBzYWZlQWN0aXZlRWxlbWVudCgpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblx0fSBjYXRjaCAoIGVyciApIHsgfVxufVxuXG5mdW5jdGlvbiBvbiggZWxlbSwgdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiwgb25lICkge1xuXHR2YXIgb3JpZ0ZuLCB0eXBlO1xuXG5cdC8vIFR5cGVzIGNhbiBiZSBhIG1hcCBvZiB0eXBlcy9oYW5kbGVyc1xuXHRpZiAoIHR5cGVvZiB0eXBlcyA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdC8vICggdHlwZXMtT2JqZWN0LCBzZWxlY3RvciwgZGF0YSApXG5cdFx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09IFwic3RyaW5nXCIgKSB7XG5cblx0XHRcdC8vICggdHlwZXMtT2JqZWN0LCBkYXRhIClcblx0XHRcdGRhdGEgPSBkYXRhIHx8IHNlbGVjdG9yO1xuXHRcdFx0c2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7XG5cdFx0XHRvbiggZWxlbSwgdHlwZSwgc2VsZWN0b3IsIGRhdGEsIHR5cGVzWyB0eXBlIF0sIG9uZSApO1xuXHRcdH1cblx0XHRyZXR1cm4gZWxlbTtcblx0fVxuXG5cdGlmICggZGF0YSA9PSBudWxsICYmIGZuID09IG51bGwgKSB7XG5cblx0XHQvLyAoIHR5cGVzLCBmbiApXG5cdFx0Zm4gPSBzZWxlY3Rvcjtcblx0XHRkYXRhID0gc2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdH0gZWxzZSBpZiAoIGZuID09IG51bGwgKSB7XG5cdFx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgKSB7XG5cblx0XHRcdC8vICggdHlwZXMsIHNlbGVjdG9yLCBmbiApXG5cdFx0XHRmbiA9IGRhdGE7XG5cdFx0XHRkYXRhID0gdW5kZWZpbmVkO1xuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vICggdHlwZXMsIGRhdGEsIGZuIClcblx0XHRcdGZuID0gZGF0YTtcblx0XHRcdGRhdGEgPSBzZWxlY3Rvcjtcblx0XHRcdHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXHRpZiAoIGZuID09PSBmYWxzZSApIHtcblx0XHRmbiA9IHJldHVybkZhbHNlO1xuXHR9IGVsc2UgaWYgKCAhZm4gKSB7XG5cdFx0cmV0dXJuIGVsZW07XG5cdH1cblxuXHRpZiAoIG9uZSA9PT0gMSApIHtcblx0XHRvcmlnRm4gPSBmbjtcblx0XHRmbiA9IGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdFx0Ly8gQ2FuIHVzZSBhbiBlbXB0eSBzZXQsIHNpbmNlIGV2ZW50IGNvbnRhaW5zIHRoZSBpbmZvXG5cdFx0XHRqUXVlcnkoKS5vZmYoIGV2ZW50ICk7XG5cdFx0XHRyZXR1cm4gb3JpZ0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHR9O1xuXG5cdFx0Ly8gVXNlIHNhbWUgZ3VpZCBzbyBjYWxsZXIgY2FuIHJlbW92ZSB1c2luZyBvcmlnRm5cblx0XHRmbi5ndWlkID0gb3JpZ0ZuLmd1aWQgfHwgKCBvcmlnRm4uZ3VpZCA9IGpRdWVyeS5ndWlkKysgKTtcblx0fVxuXHRyZXR1cm4gZWxlbS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRqUXVlcnkuZXZlbnQuYWRkKCB0aGlzLCB0eXBlcywgZm4sIGRhdGEsIHNlbGVjdG9yICk7XG5cdH0gKTtcbn1cblxuLypcbiAqIEhlbHBlciBmdW5jdGlvbnMgZm9yIG1hbmFnaW5nIGV2ZW50cyAtLSBub3QgcGFydCBvZiB0aGUgcHVibGljIGludGVyZmFjZS5cbiAqIFByb3BzIHRvIERlYW4gRWR3YXJkcycgYWRkRXZlbnQgbGlicmFyeSBmb3IgbWFueSBvZiB0aGUgaWRlYXMuXG4gKi9cbmpRdWVyeS5ldmVudCA9IHtcblxuXHRnbG9iYWw6IHt9LFxuXG5cdGFkZDogZnVuY3Rpb24oIGVsZW0sIHR5cGVzLCBoYW5kbGVyLCBkYXRhLCBzZWxlY3RvciApIHtcblxuXHRcdHZhciBoYW5kbGVPYmpJbiwgZXZlbnRIYW5kbGUsIHRtcCxcblx0XHRcdGV2ZW50cywgdCwgaGFuZGxlT2JqLFxuXHRcdFx0c3BlY2lhbCwgaGFuZGxlcnMsIHR5cGUsIG5hbWVzcGFjZXMsIG9yaWdUeXBlLFxuXHRcdFx0ZWxlbURhdGEgPSBkYXRhUHJpdi5nZXQoIGVsZW0gKTtcblxuXHRcdC8vIERvbid0IGF0dGFjaCBldmVudHMgdG8gbm9EYXRhIG9yIHRleHQvY29tbWVudCBub2RlcyAoYnV0IGFsbG93IHBsYWluIG9iamVjdHMpXG5cdFx0aWYgKCAhZWxlbURhdGEgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsbGVyIGNhbiBwYXNzIGluIGFuIG9iamVjdCBvZiBjdXN0b20gZGF0YSBpbiBsaWV1IG9mIHRoZSBoYW5kbGVyXG5cdFx0aWYgKCBoYW5kbGVyLmhhbmRsZXIgKSB7XG5cdFx0XHRoYW5kbGVPYmpJbiA9IGhhbmRsZXI7XG5cdFx0XHRoYW5kbGVyID0gaGFuZGxlT2JqSW4uaGFuZGxlcjtcblx0XHRcdHNlbGVjdG9yID0gaGFuZGxlT2JqSW4uc2VsZWN0b3I7XG5cdFx0fVxuXG5cdFx0Ly8gRW5zdXJlIHRoYXQgaW52YWxpZCBzZWxlY3RvcnMgdGhyb3cgZXhjZXB0aW9ucyBhdCBhdHRhY2ggdGltZVxuXHRcdC8vIEV2YWx1YXRlIGFnYWluc3QgZG9jdW1lbnRFbGVtZW50IGluIGNhc2UgZWxlbSBpcyBhIG5vbi1lbGVtZW50IG5vZGUgKGUuZy4sIGRvY3VtZW50KVxuXHRcdGlmICggc2VsZWN0b3IgKSB7XG5cdFx0XHRqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoIGRvY3VtZW50RWxlbWVudCwgc2VsZWN0b3IgKTtcblx0XHR9XG5cblx0XHQvLyBNYWtlIHN1cmUgdGhhdCB0aGUgaGFuZGxlciBoYXMgYSB1bmlxdWUgSUQsIHVzZWQgdG8gZmluZC9yZW1vdmUgaXQgbGF0ZXJcblx0XHRpZiAoICFoYW5kbGVyLmd1aWQgKSB7XG5cdFx0XHRoYW5kbGVyLmd1aWQgPSBqUXVlcnkuZ3VpZCsrO1xuXHRcdH1cblxuXHRcdC8vIEluaXQgdGhlIGVsZW1lbnQncyBldmVudCBzdHJ1Y3R1cmUgYW5kIG1haW4gaGFuZGxlciwgaWYgdGhpcyBpcyB0aGUgZmlyc3Rcblx0XHRpZiAoICEoIGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cyApICkge1xuXHRcdFx0ZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzID0ge307XG5cdFx0fVxuXHRcdGlmICggISggZXZlbnRIYW5kbGUgPSBlbGVtRGF0YS5oYW5kbGUgKSApIHtcblx0XHRcdGV2ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlID0gZnVuY3Rpb24oIGUgKSB7XG5cblx0XHRcdFx0Ly8gRGlzY2FyZCB0aGUgc2Vjb25kIGV2ZW50IG9mIGEgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoKSBhbmRcblx0XHRcdFx0Ly8gd2hlbiBhbiBldmVudCBpcyBjYWxsZWQgYWZ0ZXIgYSBwYWdlIGhhcyB1bmxvYWRlZFxuXHRcdFx0XHRyZXR1cm4gdHlwZW9mIGpRdWVyeSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkICE9PSBlLnR5cGUgP1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5kaXNwYXRjaC5hcHBseSggZWxlbSwgYXJndW1lbnRzICkgOiB1bmRlZmluZWQ7XG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdC8vIEhhbmRsZSBtdWx0aXBsZSBldmVudHMgc2VwYXJhdGVkIGJ5IGEgc3BhY2Vcblx0XHR0eXBlcyA9ICggdHlwZXMgfHwgXCJcIiApLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgWyBcIlwiIF07XG5cdFx0dCA9IHR5cGVzLmxlbmd0aDtcblx0XHR3aGlsZSAoIHQtLSApIHtcblx0XHRcdHRtcCA9IHJ0eXBlbmFtZXNwYWNlLmV4ZWMoIHR5cGVzWyB0IF0gKSB8fCBbXTtcblx0XHRcdHR5cGUgPSBvcmlnVHlwZSA9IHRtcFsgMSBdO1xuXHRcdFx0bmFtZXNwYWNlcyA9ICggdG1wWyAyIF0gfHwgXCJcIiApLnNwbGl0KCBcIi5cIiApLnNvcnQoKTtcblxuXHRcdFx0Ly8gVGhlcmUgKm11c3QqIGJlIGEgdHlwZSwgbm8gYXR0YWNoaW5nIG5hbWVzcGFjZS1vbmx5IGhhbmRsZXJzXG5cdFx0XHRpZiAoICF0eXBlICkge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgZXZlbnQgY2hhbmdlcyBpdHMgdHlwZSwgdXNlIHRoZSBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzIGZvciB0aGUgY2hhbmdlZCB0eXBlXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTtcblxuXHRcdFx0Ly8gSWYgc2VsZWN0b3IgZGVmaW5lZCwgZGV0ZXJtaW5lIHNwZWNpYWwgZXZlbnQgYXBpIHR5cGUsIG90aGVyd2lzZSBnaXZlbiB0eXBlXG5cdFx0XHR0eXBlID0gKCBzZWxlY3RvciA/IHNwZWNpYWwuZGVsZWdhdGVUeXBlIDogc3BlY2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7XG5cblx0XHRcdC8vIFVwZGF0ZSBzcGVjaWFsIGJhc2VkIG9uIG5ld2x5IHJlc2V0IHR5cGVcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xuXG5cdFx0XHQvLyBoYW5kbGVPYmogaXMgcGFzc2VkIHRvIGFsbCBldmVudCBoYW5kbGVyc1xuXHRcdFx0aGFuZGxlT2JqID0galF1ZXJ5LmV4dGVuZCgge1xuXHRcdFx0XHR0eXBlOiB0eXBlLFxuXHRcdFx0XHRvcmlnVHlwZTogb3JpZ1R5cGUsXG5cdFx0XHRcdGRhdGE6IGRhdGEsXG5cdFx0XHRcdGhhbmRsZXI6IGhhbmRsZXIsXG5cdFx0XHRcdGd1aWQ6IGhhbmRsZXIuZ3VpZCxcblx0XHRcdFx0c2VsZWN0b3I6IHNlbGVjdG9yLFxuXHRcdFx0XHRuZWVkc0NvbnRleHQ6IHNlbGVjdG9yICYmIGpRdWVyeS5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvciApLFxuXHRcdFx0XHRuYW1lc3BhY2U6IG5hbWVzcGFjZXMuam9pbiggXCIuXCIgKVxuXHRcdFx0fSwgaGFuZGxlT2JqSW4gKTtcblxuXHRcdFx0Ly8gSW5pdCB0aGUgZXZlbnQgaGFuZGxlciBxdWV1ZSBpZiB3ZSdyZSB0aGUgZmlyc3Rcblx0XHRcdGlmICggISggaGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSApICkge1xuXHRcdFx0XHRoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdID0gW107XG5cdFx0XHRcdGhhbmRsZXJzLmRlbGVnYXRlQ291bnQgPSAwO1xuXG5cdFx0XHRcdC8vIE9ubHkgdXNlIGFkZEV2ZW50TGlzdGVuZXIgaWYgdGhlIHNwZWNpYWwgZXZlbnRzIGhhbmRsZXIgcmV0dXJucyBmYWxzZVxuXHRcdFx0XHRpZiAoICFzcGVjaWFsLnNldHVwIHx8XG5cdFx0XHRcdFx0c3BlY2lhbC5zZXR1cC5jYWxsKCBlbGVtLCBkYXRhLCBuYW1lc3BhY2VzLCBldmVudEhhbmRsZSApID09PSBmYWxzZSApIHtcblxuXHRcdFx0XHRcdGlmICggZWxlbS5hZGRFdmVudExpc3RlbmVyICkge1xuXHRcdFx0XHRcdFx0ZWxlbS5hZGRFdmVudExpc3RlbmVyKCB0eXBlLCBldmVudEhhbmRsZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHNwZWNpYWwuYWRkICkge1xuXHRcdFx0XHRzcGVjaWFsLmFkZC5jYWxsKCBlbGVtLCBoYW5kbGVPYmogKTtcblxuXHRcdFx0XHRpZiAoICFoYW5kbGVPYmouaGFuZGxlci5ndWlkICkge1xuXHRcdFx0XHRcdGhhbmRsZU9iai5oYW5kbGVyLmd1aWQgPSBoYW5kbGVyLmd1aWQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIHRvIHRoZSBlbGVtZW50J3MgaGFuZGxlciBsaXN0LCBkZWxlZ2F0ZXMgaW4gZnJvbnRcblx0XHRcdGlmICggc2VsZWN0b3IgKSB7XG5cdFx0XHRcdGhhbmRsZXJzLnNwbGljZSggaGFuZGxlcnMuZGVsZWdhdGVDb3VudCsrLCAwLCBoYW5kbGVPYmogKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGhhbmRsZXJzLnB1c2goIGhhbmRsZU9iaiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBLZWVwIHRyYWNrIG9mIHdoaWNoIGV2ZW50cyBoYXZlIGV2ZXIgYmVlbiB1c2VkLCBmb3IgZXZlbnQgb3B0aW1pemF0aW9uXG5cdFx0XHRqUXVlcnkuZXZlbnQuZ2xvYmFsWyB0eXBlIF0gPSB0cnVlO1xuXHRcdH1cblxuXHR9LFxuXG5cdC8vIERldGFjaCBhbiBldmVudCBvciBzZXQgb2YgZXZlbnRzIGZyb20gYW4gZWxlbWVudFxuXHRyZW1vdmU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgc2VsZWN0b3IsIG1hcHBlZFR5cGVzICkge1xuXG5cdFx0dmFyIGosIG9yaWdDb3VudCwgdG1wLFxuXHRcdFx0ZXZlbnRzLCB0LCBoYW5kbGVPYmosXG5cdFx0XHRzcGVjaWFsLCBoYW5kbGVycywgdHlwZSwgbmFtZXNwYWNlcywgb3JpZ1R5cGUsXG5cdFx0XHRlbGVtRGF0YSA9IGRhdGFQcml2Lmhhc0RhdGEoIGVsZW0gKSAmJiBkYXRhUHJpdi5nZXQoIGVsZW0gKTtcblxuXHRcdGlmICggIWVsZW1EYXRhIHx8ICEoIGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cyApICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIE9uY2UgZm9yIGVhY2ggdHlwZS5uYW1lc3BhY2UgaW4gdHlwZXM7IHR5cGUgbWF5IGJlIG9taXR0ZWRcblx0XHR0eXBlcyA9ICggdHlwZXMgfHwgXCJcIiApLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgWyBcIlwiIF07XG5cdFx0dCA9IHR5cGVzLmxlbmd0aDtcblx0XHR3aGlsZSAoIHQtLSApIHtcblx0XHRcdHRtcCA9IHJ0eXBlbmFtZXNwYWNlLmV4ZWMoIHR5cGVzWyB0IF0gKSB8fCBbXTtcblx0XHRcdHR5cGUgPSBvcmlnVHlwZSA9IHRtcFsgMSBdO1xuXHRcdFx0bmFtZXNwYWNlcyA9ICggdG1wWyAyIF0gfHwgXCJcIiApLnNwbGl0KCBcIi5cIiApLnNvcnQoKTtcblxuXHRcdFx0Ly8gVW5iaW5kIGFsbCBldmVudHMgKG9uIHRoaXMgbmFtZXNwYWNlLCBpZiBwcm92aWRlZCkgZm9yIHRoZSBlbGVtZW50XG5cdFx0XHRpZiAoICF0eXBlICkge1xuXHRcdFx0XHRmb3IgKCB0eXBlIGluIGV2ZW50cyApIHtcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICsgdHlwZXNbIHQgXSwgaGFuZGxlciwgc2VsZWN0b3IsIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cdFx0XHR0eXBlID0gKCBzZWxlY3RvciA/IHNwZWNpYWwuZGVsZWdhdGVUeXBlIDogc3BlY2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7XG5cdFx0XHRoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdIHx8IFtdO1xuXHRcdFx0dG1wID0gdG1wWyAyIF0gJiZcblx0XHRcdFx0bmV3IFJlZ0V4cCggXCIoXnxcXFxcLilcIiArIG5hbWVzcGFjZXMuam9pbiggXCJcXFxcLig/Oi4qXFxcXC58KVwiICkgKyBcIihcXFxcLnwkKVwiICk7XG5cblx0XHRcdC8vIFJlbW92ZSBtYXRjaGluZyBldmVudHNcblx0XHRcdG9yaWdDb3VudCA9IGogPSBoYW5kbGVycy5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoIGotLSApIHtcblx0XHRcdFx0aGFuZGxlT2JqID0gaGFuZGxlcnNbIGogXTtcblxuXHRcdFx0XHRpZiAoICggbWFwcGVkVHlwZXMgfHwgb3JpZ1R5cGUgPT09IGhhbmRsZU9iai5vcmlnVHlwZSApICYmXG5cdFx0XHRcdFx0KCAhaGFuZGxlciB8fCBoYW5kbGVyLmd1aWQgPT09IGhhbmRsZU9iai5ndWlkICkgJiZcblx0XHRcdFx0XHQoICF0bXAgfHwgdG1wLnRlc3QoIGhhbmRsZU9iai5uYW1lc3BhY2UgKSApICYmXG5cdFx0XHRcdFx0KCAhc2VsZWN0b3IgfHwgc2VsZWN0b3IgPT09IGhhbmRsZU9iai5zZWxlY3RvciB8fFxuXHRcdFx0XHRcdFx0c2VsZWN0b3IgPT09IFwiKipcIiAmJiBoYW5kbGVPYmouc2VsZWN0b3IgKSApIHtcblx0XHRcdFx0XHRoYW5kbGVycy5zcGxpY2UoIGosIDEgKTtcblxuXHRcdFx0XHRcdGlmICggaGFuZGxlT2JqLnNlbGVjdG9yICkge1xuXHRcdFx0XHRcdFx0aGFuZGxlcnMuZGVsZWdhdGVDb3VudC0tO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIHNwZWNpYWwucmVtb3ZlICkge1xuXHRcdFx0XHRcdFx0c3BlY2lhbC5yZW1vdmUuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJlbW92ZSBnZW5lcmljIGV2ZW50IGhhbmRsZXIgaWYgd2UgcmVtb3ZlZCBzb21ldGhpbmcgYW5kIG5vIG1vcmUgaGFuZGxlcnMgZXhpc3Rcblx0XHRcdC8vIChhdm9pZHMgcG90ZW50aWFsIGZvciBlbmRsZXNzIHJlY3Vyc2lvbiBkdXJpbmcgcmVtb3ZhbCBvZiBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzKVxuXHRcdFx0aWYgKCBvcmlnQ291bnQgJiYgIWhhbmRsZXJzLmxlbmd0aCApIHtcblx0XHRcdFx0aWYgKCAhc3BlY2lhbC50ZWFyZG93biB8fFxuXHRcdFx0XHRcdHNwZWNpYWwudGVhcmRvd24uY2FsbCggZWxlbSwgbmFtZXNwYWNlcywgZWxlbURhdGEuaGFuZGxlICkgPT09IGZhbHNlICkge1xuXG5cdFx0XHRcdFx0alF1ZXJ5LnJlbW92ZUV2ZW50KCBlbGVtLCB0eXBlLCBlbGVtRGF0YS5oYW5kbGUgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGRlbGV0ZSBldmVudHNbIHR5cGUgXTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBSZW1vdmUgZGF0YSBhbmQgdGhlIGV4cGFuZG8gaWYgaXQncyBubyBsb25nZXIgdXNlZFxuXHRcdGlmICggalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGV2ZW50cyApICkge1xuXHRcdFx0ZGF0YVByaXYucmVtb3ZlKCBlbGVtLCBcImhhbmRsZSBldmVudHNcIiApO1xuXHRcdH1cblx0fSxcblxuXHRkaXNwYXRjaDogZnVuY3Rpb24oIG5hdGl2ZUV2ZW50ICkge1xuXG5cdFx0Ly8gTWFrZSBhIHdyaXRhYmxlIGpRdWVyeS5FdmVudCBmcm9tIHRoZSBuYXRpdmUgZXZlbnQgb2JqZWN0XG5cdFx0dmFyIGV2ZW50ID0galF1ZXJ5LmV2ZW50LmZpeCggbmF0aXZlRXZlbnQgKTtcblxuXHRcdHZhciBpLCBqLCByZXQsIG1hdGNoZWQsIGhhbmRsZU9iaiwgaGFuZGxlclF1ZXVlLFxuXHRcdFx0YXJncyA9IG5ldyBBcnJheSggYXJndW1lbnRzLmxlbmd0aCApLFxuXHRcdFx0aGFuZGxlcnMgPSAoIGRhdGFQcml2LmdldCggdGhpcywgXCJldmVudHNcIiApIHx8IHt9IClbIGV2ZW50LnR5cGUgXSB8fCBbXSxcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZXZlbnQudHlwZSBdIHx8IHt9O1xuXG5cdFx0Ly8gVXNlIHRoZSBmaXgtZWQgalF1ZXJ5LkV2ZW50IHJhdGhlciB0aGFuIHRoZSAocmVhZC1vbmx5KSBuYXRpdmUgZXZlbnRcblx0XHRhcmdzWyAwIF0gPSBldmVudDtcblxuXHRcdGZvciAoIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkge1xuXHRcdFx0YXJnc1sgaSBdID0gYXJndW1lbnRzWyBpIF07XG5cdFx0fVxuXG5cdFx0ZXZlbnQuZGVsZWdhdGVUYXJnZXQgPSB0aGlzO1xuXG5cdFx0Ly8gQ2FsbCB0aGUgcHJlRGlzcGF0Y2ggaG9vayBmb3IgdGhlIG1hcHBlZCB0eXBlLCBhbmQgbGV0IGl0IGJhaWwgaWYgZGVzaXJlZFxuXHRcdGlmICggc3BlY2lhbC5wcmVEaXNwYXRjaCAmJiBzcGVjaWFsLnByZURpc3BhdGNoLmNhbGwoIHRoaXMsIGV2ZW50ICkgPT09IGZhbHNlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIERldGVybWluZSBoYW5kbGVyc1xuXHRcdGhhbmRsZXJRdWV1ZSA9IGpRdWVyeS5ldmVudC5oYW5kbGVycy5jYWxsKCB0aGlzLCBldmVudCwgaGFuZGxlcnMgKTtcblxuXHRcdC8vIFJ1biBkZWxlZ2F0ZXMgZmlyc3Q7IHRoZXkgbWF5IHdhbnQgdG8gc3RvcCBwcm9wYWdhdGlvbiBiZW5lYXRoIHVzXG5cdFx0aSA9IDA7XG5cdFx0d2hpbGUgKCAoIG1hdGNoZWQgPSBoYW5kbGVyUXVldWVbIGkrKyBdICkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cdFx0XHRldmVudC5jdXJyZW50VGFyZ2V0ID0gbWF0Y2hlZC5lbGVtO1xuXG5cdFx0XHRqID0gMDtcblx0XHRcdHdoaWxlICggKCBoYW5kbGVPYmogPSBtYXRjaGVkLmhhbmRsZXJzWyBqKysgXSApICYmXG5cdFx0XHRcdCFldmVudC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXG5cdFx0XHRcdC8vIFRyaWdnZXJlZCBldmVudCBtdXN0IGVpdGhlciAxKSBoYXZlIG5vIG5hbWVzcGFjZSwgb3IgMikgaGF2ZSBuYW1lc3BhY2Uocylcblx0XHRcdFx0Ly8gYSBzdWJzZXQgb3IgZXF1YWwgdG8gdGhvc2UgaW4gdGhlIGJvdW5kIGV2ZW50IChib3RoIGNhbiBoYXZlIG5vIG5hbWVzcGFjZSkuXG5cdFx0XHRcdGlmICggIWV2ZW50LnJuYW1lc3BhY2UgfHwgZXZlbnQucm5hbWVzcGFjZS50ZXN0KCBoYW5kbGVPYmoubmFtZXNwYWNlICkgKSB7XG5cblx0XHRcdFx0XHRldmVudC5oYW5kbGVPYmogPSBoYW5kbGVPYmo7XG5cdFx0XHRcdFx0ZXZlbnQuZGF0YSA9IGhhbmRsZU9iai5kYXRhO1xuXG5cdFx0XHRcdFx0cmV0ID0gKCAoIGpRdWVyeS5ldmVudC5zcGVjaWFsWyBoYW5kbGVPYmoub3JpZ1R5cGUgXSB8fCB7fSApLmhhbmRsZSB8fFxuXHRcdFx0XHRcdFx0aGFuZGxlT2JqLmhhbmRsZXIgKS5hcHBseSggbWF0Y2hlZC5lbGVtLCBhcmdzICk7XG5cblx0XHRcdFx0XHRpZiAoIHJldCAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoIGV2ZW50LnJlc3VsdCA9IHJldCApID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsbCB0aGUgcG9zdERpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlwZVxuXHRcdGlmICggc3BlY2lhbC5wb3N0RGlzcGF0Y2ggKSB7XG5cdFx0XHRzcGVjaWFsLnBvc3REaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVudCApO1xuXHRcdH1cblxuXHRcdHJldHVybiBldmVudC5yZXN1bHQ7XG5cdH0sXG5cblx0aGFuZGxlcnM6IGZ1bmN0aW9uKCBldmVudCwgaGFuZGxlcnMgKSB7XG5cdFx0dmFyIGksIGhhbmRsZU9iaiwgc2VsLCBtYXRjaGVkSGFuZGxlcnMsIG1hdGNoZWRTZWxlY3RvcnMsXG5cdFx0XHRoYW5kbGVyUXVldWUgPSBbXSxcblx0XHRcdGRlbGVnYXRlQ291bnQgPSBoYW5kbGVycy5kZWxlZ2F0ZUNvdW50LFxuXHRcdFx0Y3VyID0gZXZlbnQudGFyZ2V0O1xuXG5cdFx0Ly8gRmluZCBkZWxlZ2F0ZSBoYW5kbGVyc1xuXHRcdGlmICggZGVsZWdhdGVDb3VudCAmJlxuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTlcblx0XHRcdC8vIEJsYWNrLWhvbGUgU1ZHIDx1c2U+IGluc3RhbmNlIHRyZWVzICh0cmFjLTEzMTgwKVxuXHRcdFx0Y3VyLm5vZGVUeXBlICYmXG5cblx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggPD00MlxuXHRcdFx0Ly8gU3VwcHJlc3Mgc3BlYy12aW9sYXRpbmcgY2xpY2tzIGluZGljYXRpbmcgYSBub24tcHJpbWFyeSBwb2ludGVyIGJ1dHRvbiAodHJhYy0zODYxKVxuXHRcdFx0Ly8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8jZXZlbnQtdHlwZS1jbGlja1xuXHRcdFx0Ly8gU3VwcG9ydDogSUUgMTEgb25seVxuXHRcdFx0Ly8gLi4uYnV0IG5vdCBhcnJvdyBrZXkgXCJjbGlja3NcIiBvZiByYWRpbyBpbnB1dHMsIHdoaWNoIGNhbiBoYXZlIGBidXR0b25gIC0xIChnaC0yMzQzKVxuXHRcdFx0ISggZXZlbnQudHlwZSA9PT0gXCJjbGlja1wiICYmIGV2ZW50LmJ1dHRvbiA+PSAxICkgKSB7XG5cblx0XHRcdGZvciAoIDsgY3VyICE9PSB0aGlzOyBjdXIgPSBjdXIucGFyZW50Tm9kZSB8fCB0aGlzICkge1xuXG5cdFx0XHRcdC8vIERvbid0IGNoZWNrIG5vbi1lbGVtZW50cyAoIzEzMjA4KVxuXHRcdFx0XHQvLyBEb24ndCBwcm9jZXNzIGNsaWNrcyBvbiBkaXNhYmxlZCBlbGVtZW50cyAoIzY5MTEsICM4MTY1LCAjMTEzODIsICMxMTc2NClcblx0XHRcdFx0aWYgKCBjdXIubm9kZVR5cGUgPT09IDEgJiYgISggZXZlbnQudHlwZSA9PT0gXCJjbGlja1wiICYmIGN1ci5kaXNhYmxlZCA9PT0gdHJ1ZSApICkge1xuXHRcdFx0XHRcdG1hdGNoZWRIYW5kbGVycyA9IFtdO1xuXHRcdFx0XHRcdG1hdGNoZWRTZWxlY3RvcnMgPSB7fTtcblx0XHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IGRlbGVnYXRlQ291bnQ7IGkrKyApIHtcblx0XHRcdFx0XHRcdGhhbmRsZU9iaiA9IGhhbmRsZXJzWyBpIF07XG5cblx0XHRcdFx0XHRcdC8vIERvbid0IGNvbmZsaWN0IHdpdGggT2JqZWN0LnByb3RvdHlwZSBwcm9wZXJ0aWVzICgjMTMyMDMpXG5cdFx0XHRcdFx0XHRzZWwgPSBoYW5kbGVPYmouc2VsZWN0b3IgKyBcIiBcIjtcblxuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVkU2VsZWN0b3JzWyBzZWwgXSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdFx0XHRtYXRjaGVkU2VsZWN0b3JzWyBzZWwgXSA9IGhhbmRsZU9iai5uZWVkc0NvbnRleHQgP1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeSggc2VsLCB0aGlzICkuaW5kZXgoIGN1ciApID4gLTEgOlxuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5maW5kKCBzZWwsIHRoaXMsIG51bGwsIFsgY3VyIF0gKS5sZW5ndGg7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZWRTZWxlY3RvcnNbIHNlbCBdICkge1xuXHRcdFx0XHRcdFx0XHRtYXRjaGVkSGFuZGxlcnMucHVzaCggaGFuZGxlT2JqICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggbWF0Y2hlZEhhbmRsZXJzLmxlbmd0aCApIHtcblx0XHRcdFx0XHRcdGhhbmRsZXJRdWV1ZS5wdXNoKCB7IGVsZW06IGN1ciwgaGFuZGxlcnM6IG1hdGNoZWRIYW5kbGVycyB9ICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQWRkIHRoZSByZW1haW5pbmcgKGRpcmVjdGx5LWJvdW5kKSBoYW5kbGVyc1xuXHRcdGN1ciA9IHRoaXM7XG5cdFx0aWYgKCBkZWxlZ2F0ZUNvdW50IDwgaGFuZGxlcnMubGVuZ3RoICkge1xuXHRcdFx0aGFuZGxlclF1ZXVlLnB1c2goIHsgZWxlbTogY3VyLCBoYW5kbGVyczogaGFuZGxlcnMuc2xpY2UoIGRlbGVnYXRlQ291bnQgKSB9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGhhbmRsZXJRdWV1ZTtcblx0fSxcblxuXHRhZGRQcm9wOiBmdW5jdGlvbiggbmFtZSwgaG9vayApIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoIGpRdWVyeS5FdmVudC5wcm90b3R5cGUsIG5hbWUsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cblx0XHRcdGdldDogaXNGdW5jdGlvbiggaG9vayApID9cblx0XHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0aWYgKCB0aGlzLm9yaWdpbmFsRXZlbnQgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBob29rKCB0aGlzLm9yaWdpbmFsRXZlbnQgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gOlxuXHRcdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRpZiAoIHRoaXMub3JpZ2luYWxFdmVudCApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFsgbmFtZSBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblxuXHRcdFx0c2V0OiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggdGhpcywgbmFtZSwge1xuXHRcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHdyaXRhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHZhbHVlOiB2YWx1ZVxuXHRcdFx0XHR9ICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGZpeDogZnVuY3Rpb24oIG9yaWdpbmFsRXZlbnQgKSB7XG5cdFx0cmV0dXJuIG9yaWdpbmFsRXZlbnRbIGpRdWVyeS5leHBhbmRvIF0gP1xuXHRcdFx0b3JpZ2luYWxFdmVudCA6XG5cdFx0XHRuZXcgalF1ZXJ5LkV2ZW50KCBvcmlnaW5hbEV2ZW50ICk7XG5cdH0sXG5cblx0c3BlY2lhbDoge1xuXHRcdGxvYWQ6IHtcblxuXHRcdFx0Ly8gUHJldmVudCB0cmlnZ2VyZWQgaW1hZ2UubG9hZCBldmVudHMgZnJvbSBidWJibGluZyB0byB3aW5kb3cubG9hZFxuXHRcdFx0bm9CdWJibGU6IHRydWVcblx0XHR9LFxuXHRcdGZvY3VzOiB7XG5cblx0XHRcdC8vIEZpcmUgbmF0aXZlIGV2ZW50IGlmIHBvc3NpYmxlIHNvIGJsdXIvZm9jdXMgc2VxdWVuY2UgaXMgY29ycmVjdFxuXHRcdFx0dHJpZ2dlcjogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggdGhpcyAhPT0gc2FmZUFjdGl2ZUVsZW1lbnQoKSAmJiB0aGlzLmZvY3VzICkge1xuXHRcdFx0XHRcdHRoaXMuZm9jdXMoKTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWxlZ2F0ZVR5cGU6IFwiZm9jdXNpblwiXG5cdFx0fSxcblx0XHRibHVyOiB7XG5cdFx0XHR0cmlnZ2VyOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCB0aGlzID09PSBzYWZlQWN0aXZlRWxlbWVudCgpICYmIHRoaXMuYmx1ciApIHtcblx0XHRcdFx0XHR0aGlzLmJsdXIoKTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWxlZ2F0ZVR5cGU6IFwiZm9jdXNvdXRcIlxuXHRcdH0sXG5cdFx0Y2xpY2s6IHtcblxuXHRcdFx0Ly8gRm9yIGNoZWNrYm94LCBmaXJlIG5hdGl2ZSBldmVudCBzbyBjaGVja2VkIHN0YXRlIHdpbGwgYmUgcmlnaHRcblx0XHRcdHRyaWdnZXI6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIHRoaXMudHlwZSA9PT0gXCJjaGVja2JveFwiICYmIHRoaXMuY2xpY2sgJiYgbm9kZU5hbWUoIHRoaXMsIFwiaW5wdXRcIiApICkge1xuXHRcdFx0XHRcdHRoaXMuY2xpY2soKTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdC8vIEZvciBjcm9zcy1icm93c2VyIGNvbnNpc3RlbmN5LCBkb24ndCBmaXJlIG5hdGl2ZSAuY2xpY2soKSBvbiBsaW5rc1xuXHRcdFx0X2RlZmF1bHQ6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdFx0cmV0dXJuIG5vZGVOYW1lKCBldmVudC50YXJnZXQsIFwiYVwiICk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdGJlZm9yZXVubG9hZDoge1xuXHRcdFx0cG9zdERpc3BhdGNoOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogRmlyZWZveCAyMCtcblx0XHRcdFx0Ly8gRmlyZWZveCBkb2Vzbid0IGFsZXJ0IGlmIHRoZSByZXR1cm5WYWx1ZSBmaWVsZCBpcyBub3Qgc2V0LlxuXHRcdFx0XHRpZiAoIGV2ZW50LnJlc3VsdCAhPT0gdW5kZWZpbmVkICYmIGV2ZW50Lm9yaWdpbmFsRXZlbnQgKSB7XG5cdFx0XHRcdFx0ZXZlbnQub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZSA9IGV2ZW50LnJlc3VsdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufTtcblxualF1ZXJ5LnJlbW92ZUV2ZW50ID0gZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGhhbmRsZSApIHtcblxuXHQvLyBUaGlzIFwiaWZcIiBpcyBuZWVkZWQgZm9yIHBsYWluIG9iamVjdHNcblx0aWYgKCBlbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIgKSB7XG5cdFx0ZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyKCB0eXBlLCBoYW5kbGUgKTtcblx0fVxufTtcblxualF1ZXJ5LkV2ZW50ID0gZnVuY3Rpb24oIHNyYywgcHJvcHMgKSB7XG5cblx0Ly8gQWxsb3cgaW5zdGFudGlhdGlvbiB3aXRob3V0IHRoZSAnbmV3JyBrZXl3b3JkXG5cdGlmICggISggdGhpcyBpbnN0YW5jZW9mIGpRdWVyeS5FdmVudCApICkge1xuXHRcdHJldHVybiBuZXcgalF1ZXJ5LkV2ZW50KCBzcmMsIHByb3BzICk7XG5cdH1cblxuXHQvLyBFdmVudCBvYmplY3Rcblx0aWYgKCBzcmMgJiYgc3JjLnR5cGUgKSB7XG5cdFx0dGhpcy5vcmlnaW5hbEV2ZW50ID0gc3JjO1xuXHRcdHRoaXMudHlwZSA9IHNyYy50eXBlO1xuXG5cdFx0Ly8gRXZlbnRzIGJ1YmJsaW5nIHVwIHRoZSBkb2N1bWVudCBtYXkgaGF2ZSBiZWVuIG1hcmtlZCBhcyBwcmV2ZW50ZWRcblx0XHQvLyBieSBhIGhhbmRsZXIgbG93ZXIgZG93biB0aGUgdHJlZTsgcmVmbGVjdCB0aGUgY29ycmVjdCB2YWx1ZS5cblx0XHR0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IHNyYy5kZWZhdWx0UHJldmVudGVkIHx8XG5cdFx0XHRcdHNyYy5kZWZhdWx0UHJldmVudGVkID09PSB1bmRlZmluZWQgJiZcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9Mi4zIG9ubHlcblx0XHRcdFx0c3JjLnJldHVyblZhbHVlID09PSBmYWxzZSA/XG5cdFx0XHRyZXR1cm5UcnVlIDpcblx0XHRcdHJldHVybkZhbHNlO1xuXG5cdFx0Ly8gQ3JlYXRlIHRhcmdldCBwcm9wZXJ0aWVzXG5cdFx0Ly8gU3VwcG9ydDogU2FmYXJpIDw9NiAtIDcgb25seVxuXHRcdC8vIFRhcmdldCBzaG91bGQgbm90IGJlIGEgdGV4dCBub2RlICgjNTA0LCAjMTMxNDMpXG5cdFx0dGhpcy50YXJnZXQgPSAoIHNyYy50YXJnZXQgJiYgc3JjLnRhcmdldC5ub2RlVHlwZSA9PT0gMyApID9cblx0XHRcdHNyYy50YXJnZXQucGFyZW50Tm9kZSA6XG5cdFx0XHRzcmMudGFyZ2V0O1xuXG5cdFx0dGhpcy5jdXJyZW50VGFyZ2V0ID0gc3JjLmN1cnJlbnRUYXJnZXQ7XG5cdFx0dGhpcy5yZWxhdGVkVGFyZ2V0ID0gc3JjLnJlbGF0ZWRUYXJnZXQ7XG5cblx0Ly8gRXZlbnQgdHlwZVxuXHR9IGVsc2Uge1xuXHRcdHRoaXMudHlwZSA9IHNyYztcblx0fVxuXG5cdC8vIFB1dCBleHBsaWNpdGx5IHByb3ZpZGVkIHByb3BlcnRpZXMgb250byB0aGUgZXZlbnQgb2JqZWN0XG5cdGlmICggcHJvcHMgKSB7XG5cdFx0alF1ZXJ5LmV4dGVuZCggdGhpcywgcHJvcHMgKTtcblx0fVxuXG5cdC8vIENyZWF0ZSBhIHRpbWVzdGFtcCBpZiBpbmNvbWluZyBldmVudCBkb2Vzbid0IGhhdmUgb25lXG5cdHRoaXMudGltZVN0YW1wID0gc3JjICYmIHNyYy50aW1lU3RhbXAgfHwgRGF0ZS5ub3coKTtcblxuXHQvLyBNYXJrIGl0IGFzIGZpeGVkXG5cdHRoaXNbIGpRdWVyeS5leHBhbmRvIF0gPSB0cnVlO1xufTtcblxuLy8galF1ZXJ5LkV2ZW50IGlzIGJhc2VkIG9uIERPTTMgRXZlbnRzIGFzIHNwZWNpZmllZCBieSB0aGUgRUNNQVNjcmlwdCBMYW5ndWFnZSBCaW5kaW5nXG4vLyBodHRwczovL3d3dy53My5vcmcvVFIvMjAwMy9XRC1ET00tTGV2ZWwtMy1FdmVudHMtMjAwMzAzMzEvZWNtYS1zY3JpcHQtYmluZGluZy5odG1sXG5qUXVlcnkuRXZlbnQucHJvdG90eXBlID0ge1xuXHRjb25zdHJ1Y3RvcjogalF1ZXJ5LkV2ZW50LFxuXHRpc0RlZmF1bHRQcmV2ZW50ZWQ6IHJldHVybkZhbHNlLFxuXHRpc1Byb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsXG5cdGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZSxcblx0aXNTaW11bGF0ZWQ6IGZhbHNlLFxuXG5cdHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDtcblxuXHRcdHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gcmV0dXJuVHJ1ZTtcblxuXHRcdGlmICggZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCApIHtcblx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHR9XG5cdH0sXG5cdHN0b3BQcm9wYWdhdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7XG5cblx0XHR0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTtcblxuXHRcdGlmICggZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCApIHtcblx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0fVxuXHR9LFxuXHRzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50O1xuXG5cdFx0dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7XG5cblx0XHRpZiAoIGUgJiYgIXRoaXMuaXNTaW11bGF0ZWQgKSB7XG5cdFx0XHRlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXHRcdH1cblxuXHRcdHRoaXMuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdH1cbn07XG5cbi8vIEluY2x1ZGVzIGFsbCBjb21tb24gZXZlbnQgcHJvcHMgaW5jbHVkaW5nIEtleUV2ZW50IGFuZCBNb3VzZUV2ZW50IHNwZWNpZmljIHByb3BzXG5qUXVlcnkuZWFjaCgge1xuXHRhbHRLZXk6IHRydWUsXG5cdGJ1YmJsZXM6IHRydWUsXG5cdGNhbmNlbGFibGU6IHRydWUsXG5cdGNoYW5nZWRUb3VjaGVzOiB0cnVlLFxuXHRjdHJsS2V5OiB0cnVlLFxuXHRkZXRhaWw6IHRydWUsXG5cdGV2ZW50UGhhc2U6IHRydWUsXG5cdG1ldGFLZXk6IHRydWUsXG5cdHBhZ2VYOiB0cnVlLFxuXHRwYWdlWTogdHJ1ZSxcblx0c2hpZnRLZXk6IHRydWUsXG5cdHZpZXc6IHRydWUsXG5cdFwiY2hhclwiOiB0cnVlLFxuXHRjaGFyQ29kZTogdHJ1ZSxcblx0a2V5OiB0cnVlLFxuXHRrZXlDb2RlOiB0cnVlLFxuXHRidXR0b246IHRydWUsXG5cdGJ1dHRvbnM6IHRydWUsXG5cdGNsaWVudFg6IHRydWUsXG5cdGNsaWVudFk6IHRydWUsXG5cdG9mZnNldFg6IHRydWUsXG5cdG9mZnNldFk6IHRydWUsXG5cdHBvaW50ZXJJZDogdHJ1ZSxcblx0cG9pbnRlclR5cGU6IHRydWUsXG5cdHNjcmVlblg6IHRydWUsXG5cdHNjcmVlblk6IHRydWUsXG5cdHRhcmdldFRvdWNoZXM6IHRydWUsXG5cdHRvRWxlbWVudDogdHJ1ZSxcblx0dG91Y2hlczogdHJ1ZSxcblxuXHR3aGljaDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdHZhciBidXR0b24gPSBldmVudC5idXR0b247XG5cblx0XHQvLyBBZGQgd2hpY2ggZm9yIGtleSBldmVudHNcblx0XHRpZiAoIGV2ZW50LndoaWNoID09IG51bGwgJiYgcmtleUV2ZW50LnRlc3QoIGV2ZW50LnR5cGUgKSApIHtcblx0XHRcdHJldHVybiBldmVudC5jaGFyQ29kZSAhPSBudWxsID8gZXZlbnQuY2hhckNvZGUgOiBldmVudC5rZXlDb2RlO1xuXHRcdH1cblxuXHRcdC8vIEFkZCB3aGljaCBmb3IgY2xpY2s6IDEgPT09IGxlZnQ7IDIgPT09IG1pZGRsZTsgMyA9PT0gcmlnaHRcblx0XHRpZiAoICFldmVudC53aGljaCAmJiBidXR0b24gIT09IHVuZGVmaW5lZCAmJiBybW91c2VFdmVudC50ZXN0KCBldmVudC50eXBlICkgKSB7XG5cdFx0XHRpZiAoIGJ1dHRvbiAmIDEgKSB7XG5cdFx0XHRcdHJldHVybiAxO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGJ1dHRvbiAmIDIgKSB7XG5cdFx0XHRcdHJldHVybiAzO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGJ1dHRvbiAmIDQgKSB7XG5cdFx0XHRcdHJldHVybiAyO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHRyZXR1cm4gZXZlbnQud2hpY2g7XG5cdH1cbn0sIGpRdWVyeS5ldmVudC5hZGRQcm9wICk7XG5cbi8vIENyZWF0ZSBtb3VzZWVudGVyL2xlYXZlIGV2ZW50cyB1c2luZyBtb3VzZW92ZXIvb3V0IGFuZCBldmVudC10aW1lIGNoZWNrc1xuLy8gc28gdGhhdCBldmVudCBkZWxlZ2F0aW9uIHdvcmtzIGluIGpRdWVyeS5cbi8vIERvIHRoZSBzYW1lIGZvciBwb2ludGVyZW50ZXIvcG9pbnRlcmxlYXZlIGFuZCBwb2ludGVyb3Zlci9wb2ludGVyb3V0XG4vL1xuLy8gU3VwcG9ydDogU2FmYXJpIDcgb25seVxuLy8gU2FmYXJpIHNlbmRzIG1vdXNlZW50ZXIgdG9vIG9mdGVuOyBzZWU6XG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00NzAyNThcbi8vIGZvciB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGJ1ZyAoaXQgZXhpc3RlZCBpbiBvbGRlciBDaHJvbWUgdmVyc2lvbnMgYXMgd2VsbCkuXG5qUXVlcnkuZWFjaCgge1xuXHRtb3VzZWVudGVyOiBcIm1vdXNlb3ZlclwiLFxuXHRtb3VzZWxlYXZlOiBcIm1vdXNlb3V0XCIsXG5cdHBvaW50ZXJlbnRlcjogXCJwb2ludGVyb3ZlclwiLFxuXHRwb2ludGVybGVhdmU6IFwicG9pbnRlcm91dFwiXG59LCBmdW5jdGlvbiggb3JpZywgZml4ICkge1xuXHRqUXVlcnkuZXZlbnQuc3BlY2lhbFsgb3JpZyBdID0ge1xuXHRcdGRlbGVnYXRlVHlwZTogZml4LFxuXHRcdGJpbmRUeXBlOiBmaXgsXG5cblx0XHRoYW5kbGU6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdHZhciByZXQsXG5cdFx0XHRcdHRhcmdldCA9IHRoaXMsXG5cdFx0XHRcdHJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFyZ2V0LFxuXHRcdFx0XHRoYW5kbGVPYmogPSBldmVudC5oYW5kbGVPYmo7XG5cblx0XHRcdC8vIEZvciBtb3VzZWVudGVyL2xlYXZlIGNhbGwgdGhlIGhhbmRsZXIgaWYgcmVsYXRlZCBpcyBvdXRzaWRlIHRoZSB0YXJnZXQuXG5cdFx0XHQvLyBOQjogTm8gcmVsYXRlZFRhcmdldCBpZiB0aGUgbW91c2UgbGVmdC9lbnRlcmVkIHRoZSBicm93c2VyIHdpbmRvd1xuXHRcdFx0aWYgKCAhcmVsYXRlZCB8fCAoIHJlbGF0ZWQgIT09IHRhcmdldCAmJiAhalF1ZXJ5LmNvbnRhaW5zKCB0YXJnZXQsIHJlbGF0ZWQgKSApICkge1xuXHRcdFx0XHRldmVudC50eXBlID0gaGFuZGxlT2JqLm9yaWdUeXBlO1xuXHRcdFx0XHRyZXQgPSBoYW5kbGVPYmouaGFuZGxlci5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdGV2ZW50LnR5cGUgPSBmaXg7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblx0fTtcbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXG5cdG9uOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gb24oIHRoaXMsIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKTtcblx0fSxcblx0b25lOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gb24oIHRoaXMsIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4sIDEgKTtcblx0fSxcblx0b2ZmOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBmbiApIHtcblx0XHR2YXIgaGFuZGxlT2JqLCB0eXBlO1xuXHRcdGlmICggdHlwZXMgJiYgdHlwZXMucHJldmVudERlZmF1bHQgJiYgdHlwZXMuaGFuZGxlT2JqICkge1xuXG5cdFx0XHQvLyAoIGV2ZW50ICkgIGRpc3BhdGNoZWQgalF1ZXJ5LkV2ZW50XG5cdFx0XHRoYW5kbGVPYmogPSB0eXBlcy5oYW5kbGVPYmo7XG5cdFx0XHRqUXVlcnkoIHR5cGVzLmRlbGVnYXRlVGFyZ2V0ICkub2ZmKFxuXHRcdFx0XHRoYW5kbGVPYmoubmFtZXNwYWNlID9cblx0XHRcdFx0XHRoYW5kbGVPYmoub3JpZ1R5cGUgKyBcIi5cIiArIGhhbmRsZU9iai5uYW1lc3BhY2UgOlxuXHRcdFx0XHRcdGhhbmRsZU9iai5vcmlnVHlwZSxcblx0XHRcdFx0aGFuZGxlT2JqLnNlbGVjdG9yLFxuXHRcdFx0XHRoYW5kbGVPYmouaGFuZGxlclxuXHRcdFx0KTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblx0XHRpZiAoIHR5cGVvZiB0eXBlcyA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdFx0Ly8gKCB0eXBlcy1vYmplY3QgWywgc2VsZWN0b3JdIClcblx0XHRcdGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7XG5cdFx0XHRcdHRoaXMub2ZmKCB0eXBlLCBzZWxlY3RvciwgdHlwZXNbIHR5cGUgXSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXHRcdGlmICggc2VsZWN0b3IgPT09IGZhbHNlIHx8IHR5cGVvZiBzZWxlY3RvciA9PT0gXCJmdW5jdGlvblwiICkge1xuXG5cdFx0XHQvLyAoIHR5cGVzIFssIGZuXSApXG5cdFx0XHRmbiA9IHNlbGVjdG9yO1xuXHRcdFx0c2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICggZm4gPT09IGZhbHNlICkge1xuXHRcdFx0Zm4gPSByZXR1cm5GYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCB0aGlzLCB0eXBlcywgZm4sIHNlbGVjdG9yICk7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cblxudmFyXG5cblx0LyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuXG5cdC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZXNsaW50L2VzbGludC9pc3N1ZXMvMzIyOVxuXHRyeGh0bWxUYWcgPSAvPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbYS16XVteXFwvXFwwPlxceDIwXFx0XFxyXFxuXFxmXSopW14+XSopXFwvPi9naSxcblxuXHQvKiBlc2xpbnQtZW5hYmxlICovXG5cblx0Ly8gU3VwcG9ydDogSUUgPD0xMCAtIDExLCBFZGdlIDEyIC0gMTMgb25seVxuXHQvLyBJbiBJRS9FZGdlIHVzaW5nIHJlZ2V4IGdyb3VwcyBoZXJlIGNhdXNlcyBzZXZlcmUgc2xvd2Rvd25zLlxuXHQvLyBTZWUgaHR0cHM6Ly9jb25uZWN0Lm1pY3Jvc29mdC5jb20vSUUvZmVlZGJhY2svZGV0YWlscy8xNzM2NTEyL1xuXHRybm9Jbm5lcmh0bWwgPSAvPHNjcmlwdHw8c3R5bGV8PGxpbmsvaSxcblxuXHQvLyBjaGVja2VkPVwiY2hlY2tlZFwiIG9yIGNoZWNrZWRcblx0cmNoZWNrZWQgPSAvY2hlY2tlZFxccyooPzpbXj1dfD1cXHMqLmNoZWNrZWQuKS9pLFxuXHRyY2xlYW5TY3JpcHQgPSAvXlxccyo8ISg/OlxcW0NEQVRBXFxbfC0tKXwoPzpcXF1cXF18LS0pPlxccyokL2c7XG5cbi8vIFByZWZlciBhIHRib2R5IG92ZXIgaXRzIHBhcmVudCB0YWJsZSBmb3IgY29udGFpbmluZyBuZXcgcm93c1xuZnVuY3Rpb24gbWFuaXB1bGF0aW9uVGFyZ2V0KCBlbGVtLCBjb250ZW50ICkge1xuXHRpZiAoIG5vZGVOYW1lKCBlbGVtLCBcInRhYmxlXCIgKSAmJlxuXHRcdG5vZGVOYW1lKCBjb250ZW50Lm5vZGVUeXBlICE9PSAxMSA/IGNvbnRlbnQgOiBjb250ZW50LmZpcnN0Q2hpbGQsIFwidHJcIiApICkge1xuXG5cdFx0cmV0dXJuIGpRdWVyeSggZWxlbSApLmNoaWxkcmVuKCBcInRib2R5XCIgKVsgMCBdIHx8IGVsZW07XG5cdH1cblxuXHRyZXR1cm4gZWxlbTtcbn1cblxuLy8gUmVwbGFjZS9yZXN0b3JlIHRoZSB0eXBlIGF0dHJpYnV0ZSBvZiBzY3JpcHQgZWxlbWVudHMgZm9yIHNhZmUgRE9NIG1hbmlwdWxhdGlvblxuZnVuY3Rpb24gZGlzYWJsZVNjcmlwdCggZWxlbSApIHtcblx0ZWxlbS50eXBlID0gKCBlbGVtLmdldEF0dHJpYnV0ZSggXCJ0eXBlXCIgKSAhPT0gbnVsbCApICsgXCIvXCIgKyBlbGVtLnR5cGU7XG5cdHJldHVybiBlbGVtO1xufVxuZnVuY3Rpb24gcmVzdG9yZVNjcmlwdCggZWxlbSApIHtcblx0aWYgKCAoIGVsZW0udHlwZSB8fCBcIlwiICkuc2xpY2UoIDAsIDUgKSA9PT0gXCJ0cnVlL1wiICkge1xuXHRcdGVsZW0udHlwZSA9IGVsZW0udHlwZS5zbGljZSggNSApO1xuXHR9IGVsc2Uge1xuXHRcdGVsZW0ucmVtb3ZlQXR0cmlidXRlKCBcInR5cGVcIiApO1xuXHR9XG5cblx0cmV0dXJuIGVsZW07XG59XG5cbmZ1bmN0aW9uIGNsb25lQ29weUV2ZW50KCBzcmMsIGRlc3QgKSB7XG5cdHZhciBpLCBsLCB0eXBlLCBwZGF0YU9sZCwgcGRhdGFDdXIsIHVkYXRhT2xkLCB1ZGF0YUN1ciwgZXZlbnRzO1xuXG5cdGlmICggZGVzdC5ub2RlVHlwZSAhPT0gMSApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyAxLiBDb3B5IHByaXZhdGUgZGF0YTogZXZlbnRzLCBoYW5kbGVycywgZXRjLlxuXHRpZiAoIGRhdGFQcml2Lmhhc0RhdGEoIHNyYyApICkge1xuXHRcdHBkYXRhT2xkID0gZGF0YVByaXYuYWNjZXNzKCBzcmMgKTtcblx0XHRwZGF0YUN1ciA9IGRhdGFQcml2LnNldCggZGVzdCwgcGRhdGFPbGQgKTtcblx0XHRldmVudHMgPSBwZGF0YU9sZC5ldmVudHM7XG5cblx0XHRpZiAoIGV2ZW50cyApIHtcblx0XHRcdGRlbGV0ZSBwZGF0YUN1ci5oYW5kbGU7XG5cdFx0XHRwZGF0YUN1ci5ldmVudHMgPSB7fTtcblxuXHRcdFx0Zm9yICggdHlwZSBpbiBldmVudHMgKSB7XG5cdFx0XHRcdGZvciAoIGkgPSAwLCBsID0gZXZlbnRzWyB0eXBlIF0ubGVuZ3RoOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5hZGQoIGRlc3QsIHR5cGUsIGV2ZW50c1sgdHlwZSBdWyBpIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIDIuIENvcHkgdXNlciBkYXRhXG5cdGlmICggZGF0YVVzZXIuaGFzRGF0YSggc3JjICkgKSB7XG5cdFx0dWRhdGFPbGQgPSBkYXRhVXNlci5hY2Nlc3MoIHNyYyApO1xuXHRcdHVkYXRhQ3VyID0galF1ZXJ5LmV4dGVuZCgge30sIHVkYXRhT2xkICk7XG5cblx0XHRkYXRhVXNlci5zZXQoIGRlc3QsIHVkYXRhQ3VyICk7XG5cdH1cbn1cblxuLy8gRml4IElFIGJ1Z3MsIHNlZSBzdXBwb3J0IHRlc3RzXG5mdW5jdGlvbiBmaXhJbnB1dCggc3JjLCBkZXN0ICkge1xuXHR2YXIgbm9kZU5hbWUgPSBkZXN0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cblx0Ly8gRmFpbHMgdG8gcGVyc2lzdCB0aGUgY2hlY2tlZCBzdGF0ZSBvZiBhIGNsb25lZCBjaGVja2JveCBvciByYWRpbyBidXR0b24uXG5cdGlmICggbm9kZU5hbWUgPT09IFwiaW5wdXRcIiAmJiByY2hlY2thYmxlVHlwZS50ZXN0KCBzcmMudHlwZSApICkge1xuXHRcdGRlc3QuY2hlY2tlZCA9IHNyYy5jaGVja2VkO1xuXG5cdC8vIEZhaWxzIHRvIHJldHVybiB0aGUgc2VsZWN0ZWQgb3B0aW9uIHRvIHRoZSBkZWZhdWx0IHNlbGVjdGVkIHN0YXRlIHdoZW4gY2xvbmluZyBvcHRpb25zXG5cdH0gZWxzZSBpZiAoIG5vZGVOYW1lID09PSBcImlucHV0XCIgfHwgbm9kZU5hbWUgPT09IFwidGV4dGFyZWFcIiApIHtcblx0XHRkZXN0LmRlZmF1bHRWYWx1ZSA9IHNyYy5kZWZhdWx0VmFsdWU7XG5cdH1cbn1cblxuZnVuY3Rpb24gZG9tTWFuaXAoIGNvbGxlY3Rpb24sIGFyZ3MsIGNhbGxiYWNrLCBpZ25vcmVkICkge1xuXG5cdC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXNcblx0YXJncyA9IGNvbmNhdC5hcHBseSggW10sIGFyZ3MgKTtcblxuXHR2YXIgZnJhZ21lbnQsIGZpcnN0LCBzY3JpcHRzLCBoYXNTY3JpcHRzLCBub2RlLCBkb2MsXG5cdFx0aSA9IDAsXG5cdFx0bCA9IGNvbGxlY3Rpb24ubGVuZ3RoLFxuXHRcdGlOb0Nsb25lID0gbCAtIDEsXG5cdFx0dmFsdWUgPSBhcmdzWyAwIF0sXG5cdFx0dmFsdWVJc0Z1bmN0aW9uID0gaXNGdW5jdGlvbiggdmFsdWUgKTtcblxuXHQvLyBXZSBjYW4ndCBjbG9uZU5vZGUgZnJhZ21lbnRzIHRoYXQgY29udGFpbiBjaGVja2VkLCBpbiBXZWJLaXRcblx0aWYgKCB2YWx1ZUlzRnVuY3Rpb24gfHxcblx0XHRcdCggbCA+IDEgJiYgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmXG5cdFx0XHRcdCFzdXBwb3J0LmNoZWNrQ2xvbmUgJiYgcmNoZWNrZWQudGVzdCggdmFsdWUgKSApICkge1xuXHRcdHJldHVybiBjb2xsZWN0aW9uLmVhY2goIGZ1bmN0aW9uKCBpbmRleCApIHtcblx0XHRcdHZhciBzZWxmID0gY29sbGVjdGlvbi5lcSggaW5kZXggKTtcblx0XHRcdGlmICggdmFsdWVJc0Z1bmN0aW9uICkge1xuXHRcdFx0XHRhcmdzWyAwIF0gPSB2YWx1ZS5jYWxsKCB0aGlzLCBpbmRleCwgc2VsZi5odG1sKCkgKTtcblx0XHRcdH1cblx0XHRcdGRvbU1hbmlwKCBzZWxmLCBhcmdzLCBjYWxsYmFjaywgaWdub3JlZCApO1xuXHRcdH0gKTtcblx0fVxuXG5cdGlmICggbCApIHtcblx0XHRmcmFnbWVudCA9IGJ1aWxkRnJhZ21lbnQoIGFyZ3MsIGNvbGxlY3Rpb25bIDAgXS5vd25lckRvY3VtZW50LCBmYWxzZSwgY29sbGVjdGlvbiwgaWdub3JlZCApO1xuXHRcdGZpcnN0ID0gZnJhZ21lbnQuZmlyc3RDaGlsZDtcblxuXHRcdGlmICggZnJhZ21lbnQuY2hpbGROb2Rlcy5sZW5ndGggPT09IDEgKSB7XG5cdFx0XHRmcmFnbWVudCA9IGZpcnN0O1xuXHRcdH1cblxuXHRcdC8vIFJlcXVpcmUgZWl0aGVyIG5ldyBjb250ZW50IG9yIGFuIGludGVyZXN0IGluIGlnbm9yZWQgZWxlbWVudHMgdG8gaW52b2tlIHRoZSBjYWxsYmFja1xuXHRcdGlmICggZmlyc3QgfHwgaWdub3JlZCApIHtcblx0XHRcdHNjcmlwdHMgPSBqUXVlcnkubWFwKCBnZXRBbGwoIGZyYWdtZW50LCBcInNjcmlwdFwiICksIGRpc2FibGVTY3JpcHQgKTtcblx0XHRcdGhhc1NjcmlwdHMgPSBzY3JpcHRzLmxlbmd0aDtcblxuXHRcdFx0Ly8gVXNlIHRoZSBvcmlnaW5hbCBmcmFnbWVudCBmb3IgdGhlIGxhc3QgaXRlbVxuXHRcdFx0Ly8gaW5zdGVhZCBvZiB0aGUgZmlyc3QgYmVjYXVzZSBpdCBjYW4gZW5kIHVwXG5cdFx0XHQvLyBiZWluZyBlbXB0aWVkIGluY29ycmVjdGx5IGluIGNlcnRhaW4gc2l0dWF0aW9ucyAoIzgwNzApLlxuXHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRub2RlID0gZnJhZ21lbnQ7XG5cblx0XHRcdFx0aWYgKCBpICE9PSBpTm9DbG9uZSApIHtcblx0XHRcdFx0XHRub2RlID0galF1ZXJ5LmNsb25lKCBub2RlLCB0cnVlLCB0cnVlICk7XG5cblx0XHRcdFx0XHQvLyBLZWVwIHJlZmVyZW5jZXMgdG8gY2xvbmVkIHNjcmlwdHMgZm9yIGxhdGVyIHJlc3RvcmF0aW9uXG5cdFx0XHRcdFx0aWYgKCBoYXNTY3JpcHRzICkge1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0XHRcdFx0XHRcdC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXRcblx0XHRcdFx0XHRcdGpRdWVyeS5tZXJnZSggc2NyaXB0cywgZ2V0QWxsKCBub2RlLCBcInNjcmlwdFwiICkgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjYWxsYmFjay5jYWxsKCBjb2xsZWN0aW9uWyBpIF0sIG5vZGUsIGkgKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBoYXNTY3JpcHRzICkge1xuXHRcdFx0XHRkb2MgPSBzY3JpcHRzWyBzY3JpcHRzLmxlbmd0aCAtIDEgXS5vd25lckRvY3VtZW50O1xuXG5cdFx0XHRcdC8vIFJlZW5hYmxlIHNjcmlwdHNcblx0XHRcdFx0alF1ZXJ5Lm1hcCggc2NyaXB0cywgcmVzdG9yZVNjcmlwdCApO1xuXG5cdFx0XHRcdC8vIEV2YWx1YXRlIGV4ZWN1dGFibGUgc2NyaXB0cyBvbiBmaXJzdCBkb2N1bWVudCBpbnNlcnRpb25cblx0XHRcdFx0Zm9yICggaSA9IDA7IGkgPCBoYXNTY3JpcHRzOyBpKysgKSB7XG5cdFx0XHRcdFx0bm9kZSA9IHNjcmlwdHNbIGkgXTtcblx0XHRcdFx0XHRpZiAoIHJzY3JpcHRUeXBlLnRlc3QoIG5vZGUudHlwZSB8fCBcIlwiICkgJiZcblx0XHRcdFx0XHRcdCFkYXRhUHJpdi5hY2Nlc3MoIG5vZGUsIFwiZ2xvYmFsRXZhbFwiICkgJiZcblx0XHRcdFx0XHRcdGpRdWVyeS5jb250YWlucyggZG9jLCBub2RlICkgKSB7XG5cblx0XHRcdFx0XHRcdGlmICggbm9kZS5zcmMgJiYgKCBub2RlLnR5cGUgfHwgXCJcIiApLnRvTG93ZXJDYXNlKCkgICE9PSBcIm1vZHVsZVwiICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIE9wdGlvbmFsIEFKQVggZGVwZW5kZW5jeSwgYnV0IHdvbid0IHJ1biBzY3JpcHRzIGlmIG5vdCBwcmVzZW50XG5cdFx0XHRcdFx0XHRcdGlmICggalF1ZXJ5Ll9ldmFsVXJsICkge1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5fZXZhbFVybCggbm9kZS5zcmMgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0RE9NRXZhbCggbm9kZS50ZXh0Q29udGVudC5yZXBsYWNlKCByY2xlYW5TY3JpcHQsIFwiXCIgKSwgZG9jLCBub2RlICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGNvbGxlY3Rpb247XG59XG5cbmZ1bmN0aW9uIHJlbW92ZSggZWxlbSwgc2VsZWN0b3IsIGtlZXBEYXRhICkge1xuXHR2YXIgbm9kZSxcblx0XHRub2RlcyA9IHNlbGVjdG9yID8galF1ZXJ5LmZpbHRlciggc2VsZWN0b3IsIGVsZW0gKSA6IGVsZW0sXG5cdFx0aSA9IDA7XG5cblx0Zm9yICggOyAoIG5vZGUgPSBub2Rlc1sgaSBdICkgIT0gbnVsbDsgaSsrICkge1xuXHRcdGlmICggIWtlZXBEYXRhICYmIG5vZGUubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIG5vZGUgKSApO1xuXHRcdH1cblxuXHRcdGlmICggbm9kZS5wYXJlbnROb2RlICkge1xuXHRcdFx0aWYgKCBrZWVwRGF0YSAmJiBqUXVlcnkuY29udGFpbnMoIG5vZGUub3duZXJEb2N1bWVudCwgbm9kZSApICkge1xuXHRcdFx0XHRzZXRHbG9iYWxFdmFsKCBnZXRBbGwoIG5vZGUsIFwic2NyaXB0XCIgKSApO1xuXHRcdFx0fVxuXHRcdFx0bm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBub2RlICk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGVsZW07XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0aHRtbFByZWZpbHRlcjogZnVuY3Rpb24oIGh0bWwgKSB7XG5cdFx0cmV0dXJuIGh0bWwucmVwbGFjZSggcnhodG1sVGFnLCBcIjwkMT48LyQyPlwiICk7XG5cdH0sXG5cblx0Y2xvbmU6IGZ1bmN0aW9uKCBlbGVtLCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApIHtcblx0XHR2YXIgaSwgbCwgc3JjRWxlbWVudHMsIGRlc3RFbGVtZW50cyxcblx0XHRcdGNsb25lID0gZWxlbS5jbG9uZU5vZGUoIHRydWUgKSxcblx0XHRcdGluUGFnZSA9IGpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICk7XG5cblx0XHQvLyBGaXggSUUgY2xvbmluZyBpc3N1ZXNcblx0XHRpZiAoICFzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkICYmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBlbGVtLm5vZGVUeXBlID09PSAxMSApICYmXG5cdFx0XHRcdCFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKSApIHtcblxuXHRcdFx0Ly8gV2UgZXNjaGV3IFNpenpsZSBoZXJlIGZvciBwZXJmb3JtYW5jZSByZWFzb25zOiBodHRwczovL2pzcGVyZi5jb20vZ2V0YWxsLXZzLXNpenpsZS8yXG5cdFx0XHRkZXN0RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lICk7XG5cdFx0XHRzcmNFbGVtZW50cyA9IGdldEFsbCggZWxlbSApO1xuXG5cdFx0XHRmb3IgKCBpID0gMCwgbCA9IHNyY0VsZW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0Zml4SW5wdXQoIHNyY0VsZW1lbnRzWyBpIF0sIGRlc3RFbGVtZW50c1sgaSBdICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ29weSB0aGUgZXZlbnRzIGZyb20gdGhlIG9yaWdpbmFsIHRvIHRoZSBjbG9uZVxuXHRcdGlmICggZGF0YUFuZEV2ZW50cyApIHtcblx0XHRcdGlmICggZGVlcERhdGFBbmRFdmVudHMgKSB7XG5cdFx0XHRcdHNyY0VsZW1lbnRzID0gc3JjRWxlbWVudHMgfHwgZ2V0QWxsKCBlbGVtICk7XG5cdFx0XHRcdGRlc3RFbGVtZW50cyA9IGRlc3RFbGVtZW50cyB8fCBnZXRBbGwoIGNsb25lICk7XG5cblx0XHRcdFx0Zm9yICggaSA9IDAsIGwgPSBzcmNFbGVtZW50cy5sZW5ndGg7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdFx0Y2xvbmVDb3B5RXZlbnQoIHNyY0VsZW1lbnRzWyBpIF0sIGRlc3RFbGVtZW50c1sgaSBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNsb25lQ29weUV2ZW50KCBlbGVtLCBjbG9uZSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFByZXNlcnZlIHNjcmlwdCBldmFsdWF0aW9uIGhpc3Rvcnlcblx0XHRkZXN0RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lLCBcInNjcmlwdFwiICk7XG5cdFx0aWYgKCBkZXN0RWxlbWVudHMubGVuZ3RoID4gMCApIHtcblx0XHRcdHNldEdsb2JhbEV2YWwoIGRlc3RFbGVtZW50cywgIWluUGFnZSAmJiBnZXRBbGwoIGVsZW0sIFwic2NyaXB0XCIgKSApO1xuXHRcdH1cblxuXHRcdC8vIFJldHVybiB0aGUgY2xvbmVkIHNldFxuXHRcdHJldHVybiBjbG9uZTtcblx0fSxcblxuXHRjbGVhbkRhdGE6IGZ1bmN0aW9uKCBlbGVtcyApIHtcblx0XHR2YXIgZGF0YSwgZWxlbSwgdHlwZSxcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbCxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Zm9yICggOyAoIGVsZW0gPSBlbGVtc1sgaSBdICkgIT09IHVuZGVmaW5lZDsgaSsrICkge1xuXHRcdFx0aWYgKCBhY2NlcHREYXRhKCBlbGVtICkgKSB7XG5cdFx0XHRcdGlmICggKCBkYXRhID0gZWxlbVsgZGF0YVByaXYuZXhwYW5kbyBdICkgKSB7XG5cdFx0XHRcdFx0aWYgKCBkYXRhLmV2ZW50cyApIHtcblx0XHRcdFx0XHRcdGZvciAoIHR5cGUgaW4gZGF0YS5ldmVudHMgKSB7XG5cdFx0XHRcdFx0XHRcdGlmICggc3BlY2lhbFsgdHlwZSBdICkge1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5ldmVudC5yZW1vdmUoIGVsZW0sIHR5cGUgKTtcblxuXHRcdFx0XHRcdFx0XHQvLyBUaGlzIGlzIGEgc2hvcnRjdXQgdG8gYXZvaWQgalF1ZXJ5LmV2ZW50LnJlbW92ZSdzIG92ZXJoZWFkXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0alF1ZXJ5LnJlbW92ZUV2ZW50KCBlbGVtLCB0eXBlLCBkYXRhLmhhbmRsZSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogQ2hyb21lIDw9MzUgLSA0NStcblx0XHRcdFx0XHQvLyBBc3NpZ24gdW5kZWZpbmVkIGluc3RlYWQgb2YgdXNpbmcgZGVsZXRlLCBzZWUgRGF0YSNyZW1vdmVcblx0XHRcdFx0XHRlbGVtWyBkYXRhUHJpdi5leHBhbmRvIF0gPSB1bmRlZmluZWQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCBlbGVtWyBkYXRhVXNlci5leHBhbmRvIF0gKSB7XG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWUgPD0zNSAtIDQ1K1xuXHRcdFx0XHRcdC8vIEFzc2lnbiB1bmRlZmluZWQgaW5zdGVhZCBvZiB1c2luZyBkZWxldGUsIHNlZSBEYXRhI3JlbW92ZVxuXHRcdFx0XHRcdGVsZW1bIGRhdGFVc2VyLmV4cGFuZG8gXSA9IHVuZGVmaW5lZDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGRldGFjaDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiByZW1vdmUoIHRoaXMsIHNlbGVjdG9yLCB0cnVlICk7XG5cdH0sXG5cblx0cmVtb3ZlOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHJlbW92ZSggdGhpcywgc2VsZWN0b3IgKTtcblx0fSxcblxuXHR0ZXh0OiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0cmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgP1xuXHRcdFx0XHRqUXVlcnkudGV4dCggdGhpcyApIDpcblx0XHRcdFx0dGhpcy5lbXB0eSgpLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHRcdFx0dGhpcy50ZXh0Q29udGVudCA9IHZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApO1xuXHRcdH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7XG5cdH0sXG5cblx0YXBwZW5kOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0dmFyIHRhcmdldCA9IG1hbmlwdWxhdGlvblRhcmdldCggdGhpcywgZWxlbSApO1xuXHRcdFx0XHR0YXJnZXQuYXBwZW5kQ2hpbGQoIGVsZW0gKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0cHJlcGVuZDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdHZhciB0YXJnZXQgPSBtYW5pcHVsYXRpb25UYXJnZXQoIHRoaXMsIGVsZW0gKTtcblx0XHRcdFx0dGFyZ2V0Lmluc2VydEJlZm9yZSggZWxlbSwgdGFyZ2V0LmZpcnN0Q2hpbGQgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0YmVmb3JlOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRpZiAoIHRoaXMucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcyApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRhZnRlcjogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMubmV4dFNpYmxpbmcgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0ZW1wdHk6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlbGVtLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRmb3IgKCA7ICggZWxlbSA9IHRoaXNbIGkgXSApICE9IG51bGw7IGkrKyApIHtcblx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblxuXHRcdFx0XHQvLyBQcmV2ZW50IG1lbW9yeSBsZWFrc1xuXHRcdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIGVsZW0sIGZhbHNlICkgKTtcblxuXHRcdFx0XHQvLyBSZW1vdmUgYW55IHJlbWFpbmluZyBub2Rlc1xuXHRcdFx0XHRlbGVtLnRleHRDb250ZW50ID0gXCJcIjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHRjbG9uZTogZnVuY3Rpb24oIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkge1xuXHRcdGRhdGFBbmRFdmVudHMgPSBkYXRhQW5kRXZlbnRzID09IG51bGwgPyBmYWxzZSA6IGRhdGFBbmRFdmVudHM7XG5cdFx0ZGVlcERhdGFBbmRFdmVudHMgPSBkZWVwRGF0YUFuZEV2ZW50cyA9PSBudWxsID8gZGF0YUFuZEV2ZW50cyA6IGRlZXBEYXRhQW5kRXZlbnRzO1xuXG5cdFx0cmV0dXJuIHRoaXMubWFwKCBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBqUXVlcnkuY2xvbmUoIHRoaXMsIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICk7XG5cdFx0fSApO1xuXHR9LFxuXG5cdGh0bWw6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHR2YXIgZWxlbSA9IHRoaXNbIDAgXSB8fCB7fSxcblx0XHRcdFx0aSA9IDAsXG5cdFx0XHRcdGwgPSB0aGlzLmxlbmd0aDtcblxuXHRcdFx0aWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdHJldHVybiBlbGVtLmlubmVySFRNTDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2VlIGlmIHdlIGNhbiB0YWtlIGEgc2hvcnRjdXQgYW5kIGp1c3QgdXNlIGlubmVySFRNTFxuXHRcdFx0aWYgKCB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgIXJub0lubmVyaHRtbC50ZXN0KCB2YWx1ZSApICYmXG5cdFx0XHRcdCF3cmFwTWFwWyAoIHJ0YWdOYW1lLmV4ZWMoIHZhbHVlICkgfHwgWyBcIlwiLCBcIlwiIF0gKVsgMSBdLnRvTG93ZXJDYXNlKCkgXSApIHtcblxuXHRcdFx0XHR2YWx1ZSA9IGpRdWVyeS5odG1sUHJlZmlsdGVyKCB2YWx1ZSApO1xuXG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdFx0ZWxlbSA9IHRoaXNbIGkgXSB8fCB7fTtcblxuXHRcdFx0XHRcdFx0Ly8gUmVtb3ZlIGVsZW1lbnQgbm9kZXMgYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtzXG5cdFx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdFx0XHRcdGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggZWxlbSwgZmFsc2UgKSApO1xuXHRcdFx0XHRcdFx0XHRlbGVtLmlubmVySFRNTCA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGVsZW0gPSAwO1xuXG5cdFx0XHRcdC8vIElmIHVzaW5nIGlubmVySFRNTCB0aHJvd3MgYW4gZXhjZXB0aW9uLCB1c2UgdGhlIGZhbGxiYWNrIG1ldGhvZFxuXHRcdFx0XHR9IGNhdGNoICggZSApIHt9XG5cdFx0XHR9XG5cblx0XHRcdGlmICggZWxlbSApIHtcblx0XHRcdFx0dGhpcy5lbXB0eSgpLmFwcGVuZCggdmFsdWUgKTtcblx0XHRcdH1cblx0XHR9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCApO1xuXHR9LFxuXG5cdHJlcGxhY2VXaXRoOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgaWdub3JlZCA9IFtdO1xuXG5cdFx0Ly8gTWFrZSB0aGUgY2hhbmdlcywgcmVwbGFjaW5nIGVhY2ggbm9uLWlnbm9yZWQgY29udGV4dCBlbGVtZW50IHdpdGggdGhlIG5ldyBjb250ZW50XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIHBhcmVudCA9IHRoaXMucGFyZW50Tm9kZTtcblxuXHRcdFx0aWYgKCBqUXVlcnkuaW5BcnJheSggdGhpcywgaWdub3JlZCApIDwgMCApIHtcblx0XHRcdFx0alF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCB0aGlzICkgKTtcblx0XHRcdFx0aWYgKCBwYXJlbnQgKSB7XG5cdFx0XHRcdFx0cGFyZW50LnJlcGxhY2VDaGlsZCggZWxlbSwgdGhpcyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHQvLyBGb3JjZSBjYWxsYmFjayBpbnZvY2F0aW9uXG5cdFx0fSwgaWdub3JlZCApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5lYWNoKCB7XG5cdGFwcGVuZFRvOiBcImFwcGVuZFwiLFxuXHRwcmVwZW5kVG86IFwicHJlcGVuZFwiLFxuXHRpbnNlcnRCZWZvcmU6IFwiYmVmb3JlXCIsXG5cdGluc2VydEFmdGVyOiBcImFmdGVyXCIsXG5cdHJlcGxhY2VBbGw6IFwicmVwbGFjZVdpdGhcIlxufSwgZnVuY3Rpb24oIG5hbWUsIG9yaWdpbmFsICkge1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR2YXIgZWxlbXMsXG5cdFx0XHRyZXQgPSBbXSxcblx0XHRcdGluc2VydCA9IGpRdWVyeSggc2VsZWN0b3IgKSxcblx0XHRcdGxhc3QgPSBpbnNlcnQubGVuZ3RoIC0gMSxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Zm9yICggOyBpIDw9IGxhc3Q7IGkrKyApIHtcblx0XHRcdGVsZW1zID0gaSA9PT0gbGFzdCA/IHRoaXMgOiB0aGlzLmNsb25lKCB0cnVlICk7XG5cdFx0XHRqUXVlcnkoIGluc2VydFsgaSBdIClbIG9yaWdpbmFsIF0oIGVsZW1zICk7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seVxuXHRcdFx0Ly8gLmdldCgpIGJlY2F1c2UgcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRcdFx0cHVzaC5hcHBseSggcmV0LCBlbGVtcy5nZXQoKSApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggcmV0ICk7XG5cdH07XG59ICk7XG52YXIgcm51bW5vbnB4ID0gbmV3IFJlZ0V4cCggXCJeKFwiICsgcG51bSArIFwiKSg/IXB4KVthLXolXSskXCIsIFwiaVwiICk7XG5cbnZhciBnZXRTdHlsZXMgPSBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seSwgRmlyZWZveCA8PTMwICgjMTUwOTgsICMxNDE1MClcblx0XHQvLyBJRSB0aHJvd3Mgb24gZWxlbWVudHMgY3JlYXRlZCBpbiBwb3B1cHNcblx0XHQvLyBGRiBtZWFud2hpbGUgdGhyb3dzIG9uIGZyYW1lIGVsZW1lbnRzIHRocm91Z2ggXCJkZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlXCJcblx0XHR2YXIgdmlldyA9IGVsZW0ub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldztcblxuXHRcdGlmICggIXZpZXcgfHwgIXZpZXcub3BlbmVyICkge1xuXHRcdFx0dmlldyA9IHdpbmRvdztcblx0XHR9XG5cblx0XHRyZXR1cm4gdmlldy5nZXRDb21wdXRlZFN0eWxlKCBlbGVtICk7XG5cdH07XG5cbnZhciByYm94U3R5bGUgPSBuZXcgUmVnRXhwKCBjc3NFeHBhbmQuam9pbiggXCJ8XCIgKSwgXCJpXCIgKTtcblxuXG5cbiggZnVuY3Rpb24oKSB7XG5cblx0Ly8gRXhlY3V0aW5nIGJvdGggcGl4ZWxQb3NpdGlvbiAmIGJveFNpemluZ1JlbGlhYmxlIHRlc3RzIHJlcXVpcmUgb25seSBvbmUgbGF5b3V0XG5cdC8vIHNvIHRoZXkncmUgZXhlY3V0ZWQgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHRoZSBzZWNvbmQgY29tcHV0YXRpb24uXG5cdGZ1bmN0aW9uIGNvbXB1dGVTdHlsZVRlc3RzKCkge1xuXG5cdFx0Ly8gVGhpcyBpcyBhIHNpbmdsZXRvbiwgd2UgbmVlZCB0byBleGVjdXRlIGl0IG9ubHkgb25jZVxuXHRcdGlmICggIWRpdiApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb250YWluZXIuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTExMTFweDt3aWR0aDo2MHB4O1wiICtcblx0XHRcdFwibWFyZ2luLXRvcDoxcHg7cGFkZGluZzowO2JvcmRlcjowXCI7XG5cdFx0ZGl2LnN0eWxlLmNzc1RleHQgPVxuXHRcdFx0XCJwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdzpzY3JvbGw7XCIgK1xuXHRcdFx0XCJtYXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4O1wiICtcblx0XHRcdFwid2lkdGg6NjAlO3RvcDoxJVwiO1xuXHRcdGRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZCggY29udGFpbmVyICkuYXBwZW5kQ2hpbGQoIGRpdiApO1xuXG5cdFx0dmFyIGRpdlN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoIGRpdiApO1xuXHRcdHBpeGVsUG9zaXRpb25WYWwgPSBkaXZTdHlsZS50b3AgIT09IFwiMSVcIjtcblxuXHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIC0gNC4zIG9ubHksIEZpcmVmb3ggPD0zIC0gNDRcblx0XHRyZWxpYWJsZU1hcmdpbkxlZnRWYWwgPSByb3VuZFBpeGVsTWVhc3VyZXMoIGRpdlN0eWxlLm1hcmdpbkxlZnQgKSA9PT0gMTI7XG5cblx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQuMyBvbmx5LCBTYWZhcmkgPD05LjEgLSAxMC4xLCBpT1MgPD03LjAgLSA5LjNcblx0XHQvLyBTb21lIHN0eWxlcyBjb21lIGJhY2sgd2l0aCBwZXJjZW50YWdlIHZhbHVlcywgZXZlbiB0aG91Z2ggdGhleSBzaG91bGRuJ3Rcblx0XHRkaXYuc3R5bGUucmlnaHQgPSBcIjYwJVwiO1xuXHRcdHBpeGVsQm94U3R5bGVzVmFsID0gcm91bmRQaXhlbE1lYXN1cmVzKCBkaXZTdHlsZS5yaWdodCApID09PSAzNjtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDkgLSAxMSBvbmx5XG5cdFx0Ly8gRGV0ZWN0IG1pc3JlcG9ydGluZyBvZiBjb250ZW50IGRpbWVuc2lvbnMgZm9yIGJveC1zaXppbmc6Ym9yZGVyLWJveCBlbGVtZW50c1xuXHRcdGJveFNpemluZ1JlbGlhYmxlVmFsID0gcm91bmRQaXhlbE1lYXN1cmVzKCBkaXZTdHlsZS53aWR0aCApID09PSAzNjtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDkgb25seVxuXHRcdC8vIERldGVjdCBvdmVyZmxvdzpzY3JvbGwgc2NyZXdpbmVzcyAoZ2gtMzY5OSlcblx0XHRkaXYuc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XG5cdFx0c2Nyb2xsYm94U2l6ZVZhbCA9IGRpdi5vZmZzZXRXaWR0aCA9PT0gMzYgfHwgXCJhYnNvbHV0ZVwiO1xuXG5cdFx0ZG9jdW1lbnRFbGVtZW50LnJlbW92ZUNoaWxkKCBjb250YWluZXIgKTtcblxuXHRcdC8vIE51bGxpZnkgdGhlIGRpdiBzbyBpdCB3b3VsZG4ndCBiZSBzdG9yZWQgaW4gdGhlIG1lbW9yeSBhbmRcblx0XHQvLyBpdCB3aWxsIGFsc28gYmUgYSBzaWduIHRoYXQgY2hlY2tzIGFscmVhZHkgcGVyZm9ybWVkXG5cdFx0ZGl2ID0gbnVsbDtcblx0fVxuXG5cdGZ1bmN0aW9uIHJvdW5kUGl4ZWxNZWFzdXJlcyggbWVhc3VyZSApIHtcblx0XHRyZXR1cm4gTWF0aC5yb3VuZCggcGFyc2VGbG9hdCggbWVhc3VyZSApICk7XG5cdH1cblxuXHR2YXIgcGl4ZWxQb3NpdGlvblZhbCwgYm94U2l6aW5nUmVsaWFibGVWYWwsIHNjcm9sbGJveFNpemVWYWwsIHBpeGVsQm94U3R5bGVzVmFsLFxuXHRcdHJlbGlhYmxlTWFyZ2luTGVmdFZhbCxcblx0XHRjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICksXG5cdFx0ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApO1xuXG5cdC8vIEZpbmlzaCBlYXJseSBpbiBsaW1pdGVkIChub24tYnJvd3NlcikgZW52aXJvbm1lbnRzXG5cdGlmICggIWRpdi5zdHlsZSApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSBvbmx5XG5cdC8vIFN0eWxlIG9mIGNsb25lZCBlbGVtZW50IGFmZmVjdHMgc291cmNlIGVsZW1lbnQgY2xvbmVkICgjODkwOClcblx0ZGl2LnN0eWxlLmJhY2tncm91bmRDbGlwID0gXCJjb250ZW50LWJveFwiO1xuXHRkaXYuY2xvbmVOb2RlKCB0cnVlICkuc3R5bGUuYmFja2dyb3VuZENsaXAgPSBcIlwiO1xuXHRzdXBwb3J0LmNsZWFyQ2xvbmVTdHlsZSA9IGRpdi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9PT0gXCJjb250ZW50LWJveFwiO1xuXG5cdGpRdWVyeS5leHRlbmQoIHN1cHBvcnQsIHtcblx0XHRib3hTaXppbmdSZWxpYWJsZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0cmV0dXJuIGJveFNpemluZ1JlbGlhYmxlVmFsO1xuXHRcdH0sXG5cdFx0cGl4ZWxCb3hTdHlsZXM6IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29tcHV0ZVN0eWxlVGVzdHMoKTtcblx0XHRcdHJldHVybiBwaXhlbEJveFN0eWxlc1ZhbDtcblx0XHR9LFxuXHRcdHBpeGVsUG9zaXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29tcHV0ZVN0eWxlVGVzdHMoKTtcblx0XHRcdHJldHVybiBwaXhlbFBvc2l0aW9uVmFsO1xuXHRcdH0sXG5cdFx0cmVsaWFibGVNYXJnaW5MZWZ0OiBmdW5jdGlvbigpIHtcblx0XHRcdGNvbXB1dGVTdHlsZVRlc3RzKCk7XG5cdFx0XHRyZXR1cm4gcmVsaWFibGVNYXJnaW5MZWZ0VmFsO1xuXHRcdH0sXG5cdFx0c2Nyb2xsYm94U2l6ZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0cmV0dXJuIHNjcm9sbGJveFNpemVWYWw7XG5cdFx0fVxuXHR9ICk7XG59ICkoKTtcblxuXG5mdW5jdGlvbiBjdXJDU1MoIGVsZW0sIG5hbWUsIGNvbXB1dGVkICkge1xuXHR2YXIgd2lkdGgsIG1pbldpZHRoLCBtYXhXaWR0aCwgcmV0LFxuXG5cdFx0Ly8gU3VwcG9ydDogRmlyZWZveCA1MStcblx0XHQvLyBSZXRyaWV2aW5nIHN0eWxlIGJlZm9yZSBjb21wdXRlZCBzb21laG93XG5cdFx0Ly8gZml4ZXMgYW4gaXNzdWUgd2l0aCBnZXR0aW5nIHdyb25nIHZhbHVlc1xuXHRcdC8vIG9uIGRldGFjaGVkIGVsZW1lbnRzXG5cdFx0c3R5bGUgPSBlbGVtLnN0eWxlO1xuXG5cdGNvbXB1dGVkID0gY29tcHV0ZWQgfHwgZ2V0U3R5bGVzKCBlbGVtICk7XG5cblx0Ly8gZ2V0UHJvcGVydHlWYWx1ZSBpcyBuZWVkZWQgZm9yOlxuXHQvLyAgIC5jc3MoJ2ZpbHRlcicpIChJRSA5IG9ubHksICMxMjUzNylcblx0Ly8gICAuY3NzKCctLWN1c3RvbVByb3BlcnR5KSAoIzMxNDQpXG5cdGlmICggY29tcHV0ZWQgKSB7XG5cdFx0cmV0ID0gY29tcHV0ZWQuZ2V0UHJvcGVydHlWYWx1ZSggbmFtZSApIHx8IGNvbXB1dGVkWyBuYW1lIF07XG5cblx0XHRpZiAoIHJldCA9PT0gXCJcIiAmJiAhalF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKSApIHtcblx0XHRcdHJldCA9IGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSApO1xuXHRcdH1cblxuXHRcdC8vIEEgdHJpYnV0ZSB0byB0aGUgXCJhd2Vzb21lIGhhY2sgYnkgRGVhbiBFZHdhcmRzXCJcblx0XHQvLyBBbmRyb2lkIEJyb3dzZXIgcmV0dXJucyBwZXJjZW50YWdlIGZvciBzb21lIHZhbHVlcyxcblx0XHQvLyBidXQgd2lkdGggc2VlbXMgdG8gYmUgcmVsaWFibHkgcGl4ZWxzLlxuXHRcdC8vIFRoaXMgaXMgYWdhaW5zdCB0aGUgQ1NTT00gZHJhZnQgc3BlYzpcblx0XHQvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI3Jlc29sdmVkLXZhbHVlc1xuXHRcdGlmICggIXN1cHBvcnQucGl4ZWxCb3hTdHlsZXMoKSAmJiBybnVtbm9ucHgudGVzdCggcmV0ICkgJiYgcmJveFN0eWxlLnRlc3QoIG5hbWUgKSApIHtcblxuXHRcdFx0Ly8gUmVtZW1iZXIgdGhlIG9yaWdpbmFsIHZhbHVlc1xuXHRcdFx0d2lkdGggPSBzdHlsZS53aWR0aDtcblx0XHRcdG1pbldpZHRoID0gc3R5bGUubWluV2lkdGg7XG5cdFx0XHRtYXhXaWR0aCA9IHN0eWxlLm1heFdpZHRoO1xuXG5cdFx0XHQvLyBQdXQgaW4gdGhlIG5ldyB2YWx1ZXMgdG8gZ2V0IGEgY29tcHV0ZWQgdmFsdWUgb3V0XG5cdFx0XHRzdHlsZS5taW5XaWR0aCA9IHN0eWxlLm1heFdpZHRoID0gc3R5bGUud2lkdGggPSByZXQ7XG5cdFx0XHRyZXQgPSBjb21wdXRlZC53aWR0aDtcblxuXHRcdFx0Ly8gUmV2ZXJ0IHRoZSBjaGFuZ2VkIHZhbHVlc1xuXHRcdFx0c3R5bGUud2lkdGggPSB3aWR0aDtcblx0XHRcdHN0eWxlLm1pbldpZHRoID0gbWluV2lkdGg7XG5cdFx0XHRzdHlsZS5tYXhXaWR0aCA9IG1heFdpZHRoO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiByZXQgIT09IHVuZGVmaW5lZCA/XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSBvbmx5XG5cdFx0Ly8gSUUgcmV0dXJucyB6SW5kZXggdmFsdWUgYXMgYW4gaW50ZWdlci5cblx0XHRyZXQgKyBcIlwiIDpcblx0XHRyZXQ7XG59XG5cblxuZnVuY3Rpb24gYWRkR2V0SG9va0lmKCBjb25kaXRpb25GbiwgaG9va0ZuICkge1xuXG5cdC8vIERlZmluZSB0aGUgaG9vaywgd2UnbGwgY2hlY2sgb24gdGhlIGZpcnN0IHJ1biBpZiBpdCdzIHJlYWxseSBuZWVkZWQuXG5cdHJldHVybiB7XG5cdFx0Z2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggY29uZGl0aW9uRm4oKSApIHtcblxuXHRcdFx0XHQvLyBIb29rIG5vdCBuZWVkZWQgKG9yIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHVzZSBpdCBkdWVcblx0XHRcdFx0Ly8gdG8gbWlzc2luZyBkZXBlbmRlbmN5KSwgcmVtb3ZlIGl0LlxuXHRcdFx0XHRkZWxldGUgdGhpcy5nZXQ7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSG9vayBuZWVkZWQ7IHJlZGVmaW5lIGl0IHNvIHRoYXQgdGhlIHN1cHBvcnQgdGVzdCBpcyBub3QgZXhlY3V0ZWQgYWdhaW4uXG5cdFx0XHRyZXR1cm4gKCB0aGlzLmdldCA9IGhvb2tGbiApLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHR9XG5cdH07XG59XG5cblxudmFyXG5cblx0Ly8gU3dhcHBhYmxlIGlmIGRpc3BsYXkgaXMgbm9uZSBvciBzdGFydHMgd2l0aCB0YWJsZVxuXHQvLyBleGNlcHQgXCJ0YWJsZVwiLCBcInRhYmxlLWNlbGxcIiwgb3IgXCJ0YWJsZS1jYXB0aW9uXCJcblx0Ly8gU2VlIGhlcmUgZm9yIGRpc3BsYXkgdmFsdWVzOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUy9kaXNwbGF5XG5cdHJkaXNwbGF5c3dhcCA9IC9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxcblx0cmN1c3RvbVByb3AgPSAvXi0tLyxcblx0Y3NzU2hvdyA9IHsgcG9zaXRpb246IFwiYWJzb2x1dGVcIiwgdmlzaWJpbGl0eTogXCJoaWRkZW5cIiwgZGlzcGxheTogXCJibG9ja1wiIH0sXG5cdGNzc05vcm1hbFRyYW5zZm9ybSA9IHtcblx0XHRsZXR0ZXJTcGFjaW5nOiBcIjBcIixcblx0XHRmb250V2VpZ2h0OiBcIjQwMFwiXG5cdH0sXG5cblx0Y3NzUHJlZml4ZXMgPSBbIFwiV2Via2l0XCIsIFwiTW96XCIsIFwibXNcIiBdLFxuXHRlbXB0eVN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApLnN0eWxlO1xuXG4vLyBSZXR1cm4gYSBjc3MgcHJvcGVydHkgbWFwcGVkIHRvIGEgcG90ZW50aWFsbHkgdmVuZG9yIHByZWZpeGVkIHByb3BlcnR5XG5mdW5jdGlvbiB2ZW5kb3JQcm9wTmFtZSggbmFtZSApIHtcblxuXHQvLyBTaG9ydGN1dCBmb3IgbmFtZXMgdGhhdCBhcmUgbm90IHZlbmRvciBwcmVmaXhlZFxuXHRpZiAoIG5hbWUgaW4gZW1wdHlTdHlsZSApIHtcblx0XHRyZXR1cm4gbmFtZTtcblx0fVxuXG5cdC8vIENoZWNrIGZvciB2ZW5kb3IgcHJlZml4ZWQgbmFtZXNcblx0dmFyIGNhcE5hbWUgPSBuYW1lWyAwIF0udG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoIDEgKSxcblx0XHRpID0gY3NzUHJlZml4ZXMubGVuZ3RoO1xuXG5cdHdoaWxlICggaS0tICkge1xuXHRcdG5hbWUgPSBjc3NQcmVmaXhlc1sgaSBdICsgY2FwTmFtZTtcblx0XHRpZiAoIG5hbWUgaW4gZW1wdHlTdHlsZSApIHtcblx0XHRcdHJldHVybiBuYW1lO1xuXHRcdH1cblx0fVxufVxuXG4vLyBSZXR1cm4gYSBwcm9wZXJ0eSBtYXBwZWQgYWxvbmcgd2hhdCBqUXVlcnkuY3NzUHJvcHMgc3VnZ2VzdHMgb3IgdG9cbi8vIGEgdmVuZG9yIHByZWZpeGVkIHByb3BlcnR5LlxuZnVuY3Rpb24gZmluYWxQcm9wTmFtZSggbmFtZSApIHtcblx0dmFyIHJldCA9IGpRdWVyeS5jc3NQcm9wc1sgbmFtZSBdO1xuXHRpZiAoICFyZXQgKSB7XG5cdFx0cmV0ID0galF1ZXJ5LmNzc1Byb3BzWyBuYW1lIF0gPSB2ZW5kb3JQcm9wTmFtZSggbmFtZSApIHx8IG5hbWU7XG5cdH1cblx0cmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gc2V0UG9zaXRpdmVOdW1iZXIoIGVsZW0sIHZhbHVlLCBzdWJ0cmFjdCApIHtcblxuXHQvLyBBbnkgcmVsYXRpdmUgKCsvLSkgdmFsdWVzIGhhdmUgYWxyZWFkeSBiZWVuXG5cdC8vIG5vcm1hbGl6ZWQgYXQgdGhpcyBwb2ludFxuXHR2YXIgbWF0Y2hlcyA9IHJjc3NOdW0uZXhlYyggdmFsdWUgKTtcblx0cmV0dXJuIG1hdGNoZXMgP1xuXG5cdFx0Ly8gR3VhcmQgYWdhaW5zdCB1bmRlZmluZWQgXCJzdWJ0cmFjdFwiLCBlLmcuLCB3aGVuIHVzZWQgYXMgaW4gY3NzSG9va3Ncblx0XHRNYXRoLm1heCggMCwgbWF0Y2hlc1sgMiBdIC0gKCBzdWJ0cmFjdCB8fCAwICkgKSArICggbWF0Y2hlc1sgMyBdIHx8IFwicHhcIiApIDpcblx0XHR2YWx1ZTtcbn1cblxuZnVuY3Rpb24gYm94TW9kZWxBZGp1c3RtZW50KCBlbGVtLCBkaW1lbnNpb24sIGJveCwgaXNCb3JkZXJCb3gsIHN0eWxlcywgY29tcHV0ZWRWYWwgKSB7XG5cdHZhciBpID0gZGltZW5zaW9uID09PSBcIndpZHRoXCIgPyAxIDogMCxcblx0XHRleHRyYSA9IDAsXG5cdFx0ZGVsdGEgPSAwO1xuXG5cdC8vIEFkanVzdG1lbnQgbWF5IG5vdCBiZSBuZWNlc3Nhcnlcblx0aWYgKCBib3ggPT09ICggaXNCb3JkZXJCb3ggPyBcImJvcmRlclwiIDogXCJjb250ZW50XCIgKSApIHtcblx0XHRyZXR1cm4gMDtcblx0fVxuXG5cdGZvciAoIDsgaSA8IDQ7IGkgKz0gMiApIHtcblxuXHRcdC8vIEJvdGggYm94IG1vZGVscyBleGNsdWRlIG1hcmdpblxuXHRcdGlmICggYm94ID09PSBcIm1hcmdpblwiICkge1xuXHRcdFx0ZGVsdGEgKz0galF1ZXJ5LmNzcyggZWxlbSwgYm94ICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApO1xuXHRcdH1cblxuXHRcdC8vIElmIHdlIGdldCBoZXJlIHdpdGggYSBjb250ZW50LWJveCwgd2UncmUgc2Vla2luZyBcInBhZGRpbmdcIiBvciBcImJvcmRlclwiIG9yIFwibWFyZ2luXCJcblx0XHRpZiAoICFpc0JvcmRlckJveCApIHtcblxuXHRcdFx0Ly8gQWRkIHBhZGRpbmdcblx0XHRcdGRlbHRhICs9IGpRdWVyeS5jc3MoIGVsZW0sIFwicGFkZGluZ1wiICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApO1xuXG5cdFx0XHQvLyBGb3IgXCJib3JkZXJcIiBvciBcIm1hcmdpblwiLCBhZGQgYm9yZGVyXG5cdFx0XHRpZiAoIGJveCAhPT0gXCJwYWRkaW5nXCIgKSB7XG5cdFx0XHRcdGRlbHRhICs9IGpRdWVyeS5jc3MoIGVsZW0sIFwiYm9yZGVyXCIgKyBjc3NFeHBhbmRbIGkgXSArIFwiV2lkdGhcIiwgdHJ1ZSwgc3R5bGVzICk7XG5cblx0XHRcdC8vIEJ1dCBzdGlsbCBrZWVwIHRyYWNrIG9mIGl0IG90aGVyd2lzZVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZXh0cmEgKz0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3JkZXJcIiArIGNzc0V4cGFuZFsgaSBdICsgXCJXaWR0aFwiLCB0cnVlLCBzdHlsZXMgKTtcblx0XHRcdH1cblxuXHRcdC8vIElmIHdlIGdldCBoZXJlIHdpdGggYSBib3JkZXItYm94IChjb250ZW50ICsgcGFkZGluZyArIGJvcmRlciksIHdlJ3JlIHNlZWtpbmcgXCJjb250ZW50XCIgb3Jcblx0XHQvLyBcInBhZGRpbmdcIiBvciBcIm1hcmdpblwiXG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gRm9yIFwiY29udGVudFwiLCBzdWJ0cmFjdCBwYWRkaW5nXG5cdFx0XHRpZiAoIGJveCA9PT0gXCJjb250ZW50XCIgKSB7XG5cdFx0XHRcdGRlbHRhIC09IGpRdWVyeS5jc3MoIGVsZW0sIFwicGFkZGluZ1wiICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBGb3IgXCJjb250ZW50XCIgb3IgXCJwYWRkaW5nXCIsIHN1YnRyYWN0IGJvcmRlclxuXHRcdFx0aWYgKCBib3ggIT09IFwibWFyZ2luXCIgKSB7XG5cdFx0XHRcdGRlbHRhIC09IGpRdWVyeS5jc3MoIGVsZW0sIFwiYm9yZGVyXCIgKyBjc3NFeHBhbmRbIGkgXSArIFwiV2lkdGhcIiwgdHJ1ZSwgc3R5bGVzICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQWNjb3VudCBmb3IgcG9zaXRpdmUgY29udGVudC1ib3ggc2Nyb2xsIGd1dHRlciB3aGVuIHJlcXVlc3RlZCBieSBwcm92aWRpbmcgY29tcHV0ZWRWYWxcblx0aWYgKCAhaXNCb3JkZXJCb3ggJiYgY29tcHV0ZWRWYWwgPj0gMCApIHtcblxuXHRcdC8vIG9mZnNldFdpZHRoL29mZnNldEhlaWdodCBpcyBhIHJvdW5kZWQgc3VtIG9mIGNvbnRlbnQsIHBhZGRpbmcsIHNjcm9sbCBndXR0ZXIsIGFuZCBib3JkZXJcblx0XHQvLyBBc3N1bWluZyBpbnRlZ2VyIHNjcm9sbCBndXR0ZXIsIHN1YnRyYWN0IHRoZSByZXN0IGFuZCByb3VuZCBkb3duXG5cdFx0ZGVsdGEgKz0gTWF0aC5tYXgoIDAsIE1hdGguY2VpbChcblx0XHRcdGVsZW1bIFwib2Zmc2V0XCIgKyBkaW1lbnNpb25bIDAgXS50b1VwcGVyQ2FzZSgpICsgZGltZW5zaW9uLnNsaWNlKCAxICkgXSAtXG5cdFx0XHRjb21wdXRlZFZhbCAtXG5cdFx0XHRkZWx0YSAtXG5cdFx0XHRleHRyYSAtXG5cdFx0XHQwLjVcblx0XHQpICk7XG5cdH1cblxuXHRyZXR1cm4gZGVsdGE7XG59XG5cbmZ1bmN0aW9uIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIGRpbWVuc2lvbiwgZXh0cmEgKSB7XG5cblx0Ly8gU3RhcnQgd2l0aCBjb21wdXRlZCBzdHlsZVxuXHR2YXIgc3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICksXG5cdFx0dmFsID0gY3VyQ1NTKCBlbGVtLCBkaW1lbnNpb24sIHN0eWxlcyApLFxuXHRcdGlzQm9yZGVyQm94ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3hTaXppbmdcIiwgZmFsc2UsIHN0eWxlcyApID09PSBcImJvcmRlci1ib3hcIixcblx0XHR2YWx1ZUlzQm9yZGVyQm94ID0gaXNCb3JkZXJCb3g7XG5cblx0Ly8gU3VwcG9ydDogRmlyZWZveCA8PTU0XG5cdC8vIFJldHVybiBhIGNvbmZvdW5kaW5nIG5vbi1waXhlbCB2YWx1ZSBvciBmZWlnbiBpZ25vcmFuY2UsIGFzIGFwcHJvcHJpYXRlLlxuXHRpZiAoIHJudW1ub25weC50ZXN0KCB2YWwgKSApIHtcblx0XHRpZiAoICFleHRyYSApIHtcblx0XHRcdHJldHVybiB2YWw7XG5cdFx0fVxuXHRcdHZhbCA9IFwiYXV0b1wiO1xuXHR9XG5cblx0Ly8gQ2hlY2sgZm9yIHN0eWxlIGluIGNhc2UgYSBicm93c2VyIHdoaWNoIHJldHVybnMgdW5yZWxpYWJsZSB2YWx1ZXNcblx0Ly8gZm9yIGdldENvbXB1dGVkU3R5bGUgc2lsZW50bHkgZmFsbHMgYmFjayB0byB0aGUgcmVsaWFibGUgZWxlbS5zdHlsZVxuXHR2YWx1ZUlzQm9yZGVyQm94ID0gdmFsdWVJc0JvcmRlckJveCAmJlxuXHRcdCggc3VwcG9ydC5ib3hTaXppbmdSZWxpYWJsZSgpIHx8IHZhbCA9PT0gZWxlbS5zdHlsZVsgZGltZW5zaW9uIF0gKTtcblxuXHQvLyBGYWxsIGJhY2sgdG8gb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0IHdoZW4gdmFsdWUgaXMgXCJhdXRvXCJcblx0Ly8gVGhpcyBoYXBwZW5zIGZvciBpbmxpbmUgZWxlbWVudHMgd2l0aCBubyBleHBsaWNpdCBzZXR0aW5nIChnaC0zNTcxKVxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4xIC0gNC4zIG9ubHlcblx0Ly8gQWxzbyB1c2Ugb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0IGZvciBtaXNyZXBvcnRlZCBpbmxpbmUgZGltZW5zaW9ucyAoZ2gtMzYwMilcblx0aWYgKCB2YWwgPT09IFwiYXV0b1wiIHx8XG5cdFx0IXBhcnNlRmxvYXQoIHZhbCApICYmIGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiLCBmYWxzZSwgc3R5bGVzICkgPT09IFwiaW5saW5lXCIgKSB7XG5cblx0XHR2YWwgPSBlbGVtWyBcIm9mZnNldFwiICsgZGltZW5zaW9uWyAwIF0udG9VcHBlckNhc2UoKSArIGRpbWVuc2lvbi5zbGljZSggMSApIF07XG5cblx0XHQvLyBvZmZzZXRXaWR0aC9vZmZzZXRIZWlnaHQgcHJvdmlkZSBib3JkZXItYm94IHZhbHVlc1xuXHRcdHZhbHVlSXNCb3JkZXJCb3ggPSB0cnVlO1xuXHR9XG5cblx0Ly8gTm9ybWFsaXplIFwiXCIgYW5kIGF1dG9cblx0dmFsID0gcGFyc2VGbG9hdCggdmFsICkgfHwgMDtcblxuXHQvLyBBZGp1c3QgZm9yIHRoZSBlbGVtZW50J3MgYm94IG1vZGVsXG5cdHJldHVybiAoIHZhbCArXG5cdFx0Ym94TW9kZWxBZGp1c3RtZW50KFxuXHRcdFx0ZWxlbSxcblx0XHRcdGRpbWVuc2lvbixcblx0XHRcdGV4dHJhIHx8ICggaXNCb3JkZXJCb3ggPyBcImJvcmRlclwiIDogXCJjb250ZW50XCIgKSxcblx0XHRcdHZhbHVlSXNCb3JkZXJCb3gsXG5cdFx0XHRzdHlsZXMsXG5cblx0XHRcdC8vIFByb3ZpZGUgdGhlIGN1cnJlbnQgY29tcHV0ZWQgc2l6ZSB0byByZXF1ZXN0IHNjcm9sbCBndXR0ZXIgY2FsY3VsYXRpb24gKGdoLTM1ODkpXG5cdFx0XHR2YWxcblx0XHQpXG5cdCkgKyBcInB4XCI7XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHQvLyBBZGQgaW4gc3R5bGUgcHJvcGVydHkgaG9va3MgZm9yIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHRcblx0Ly8gYmVoYXZpb3Igb2YgZ2V0dGluZyBhbmQgc2V0dGluZyBhIHN0eWxlIHByb3BlcnR5XG5cdGNzc0hvb2tzOiB7XG5cdFx0b3BhY2l0eToge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XG5cdFx0XHRcdGlmICggY29tcHV0ZWQgKSB7XG5cblx0XHRcdFx0XHQvLyBXZSBzaG91bGQgYWx3YXlzIGdldCBhIG51bWJlciBiYWNrIGZyb20gb3BhY2l0eVxuXHRcdFx0XHRcdHZhciByZXQgPSBjdXJDU1MoIGVsZW0sIFwib3BhY2l0eVwiICk7XG5cdFx0XHRcdFx0cmV0dXJuIHJldCA9PT0gXCJcIiA/IFwiMVwiIDogcmV0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdC8vIERvbid0IGF1dG9tYXRpY2FsbHkgYWRkIFwicHhcIiB0byB0aGVzZSBwb3NzaWJseS11bml0bGVzcyBwcm9wZXJ0aWVzXG5cdGNzc051bWJlcjoge1xuXHRcdFwiYW5pbWF0aW9uSXRlcmF0aW9uQ291bnRcIjogdHJ1ZSxcblx0XHRcImNvbHVtbkNvdW50XCI6IHRydWUsXG5cdFx0XCJmaWxsT3BhY2l0eVwiOiB0cnVlLFxuXHRcdFwiZmxleEdyb3dcIjogdHJ1ZSxcblx0XHRcImZsZXhTaHJpbmtcIjogdHJ1ZSxcblx0XHRcImZvbnRXZWlnaHRcIjogdHJ1ZSxcblx0XHRcImxpbmVIZWlnaHRcIjogdHJ1ZSxcblx0XHRcIm9wYWNpdHlcIjogdHJ1ZSxcblx0XHRcIm9yZGVyXCI6IHRydWUsXG5cdFx0XCJvcnBoYW5zXCI6IHRydWUsXG5cdFx0XCJ3aWRvd3NcIjogdHJ1ZSxcblx0XHRcInpJbmRleFwiOiB0cnVlLFxuXHRcdFwiem9vbVwiOiB0cnVlXG5cdH0sXG5cblx0Ly8gQWRkIGluIHByb3BlcnRpZXMgd2hvc2UgbmFtZXMgeW91IHdpc2ggdG8gZml4IGJlZm9yZVxuXHQvLyBzZXR0aW5nIG9yIGdldHRpbmcgdGhlIHZhbHVlXG5cdGNzc1Byb3BzOiB7fSxcblxuXHQvLyBHZXQgYW5kIHNldCB0aGUgc3R5bGUgcHJvcGVydHkgb24gYSBET00gTm9kZVxuXHRzdHlsZTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlLCBleHRyYSApIHtcblxuXHRcdC8vIERvbid0IHNldCBzdHlsZXMgb24gdGV4dCBhbmQgY29tbWVudCBub2Rlc1xuXHRcdGlmICggIWVsZW0gfHwgZWxlbS5ub2RlVHlwZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09PSA4IHx8ICFlbGVtLnN0eWxlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZVxuXHRcdHZhciByZXQsIHR5cGUsIGhvb2tzLFxuXHRcdFx0b3JpZ05hbWUgPSBjYW1lbENhc2UoIG5hbWUgKSxcblx0XHRcdGlzQ3VzdG9tUHJvcCA9IHJjdXN0b21Qcm9wLnRlc3QoIG5hbWUgKSxcblx0XHRcdHN0eWxlID0gZWxlbS5zdHlsZTtcblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZS4gV2UgZG9uJ3Rcblx0XHQvLyB3YW50IHRvIHF1ZXJ5IHRoZSB2YWx1ZSBpZiBpdCBpcyBhIENTUyBjdXN0b20gcHJvcGVydHlcblx0XHQvLyBzaW5jZSB0aGV5IGFyZSB1c2VyLWRlZmluZWQuXG5cdFx0aWYgKCAhaXNDdXN0b21Qcm9wICkge1xuXHRcdFx0bmFtZSA9IGZpbmFsUHJvcE5hbWUoIG9yaWdOYW1lICk7XG5cdFx0fVxuXG5cdFx0Ly8gR2V0cyBob29rIGZvciB0aGUgcHJlZml4ZWQgdmVyc2lvbiwgdGhlbiB1bnByZWZpeGVkIHZlcnNpb25cblx0XHRob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdIHx8IGpRdWVyeS5jc3NIb29rc1sgb3JpZ05hbWUgXTtcblxuXHRcdC8vIENoZWNrIGlmIHdlJ3JlIHNldHRpbmcgYSB2YWx1ZVxuXHRcdGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdHR5cGUgPSB0eXBlb2YgdmFsdWU7XG5cblx0XHRcdC8vIENvbnZlcnQgXCIrPVwiIG9yIFwiLT1cIiB0byByZWxhdGl2ZSBudW1iZXJzICgjNzM0NSlcblx0XHRcdGlmICggdHlwZSA9PT0gXCJzdHJpbmdcIiAmJiAoIHJldCA9IHJjc3NOdW0uZXhlYyggdmFsdWUgKSApICYmIHJldFsgMSBdICkge1xuXHRcdFx0XHR2YWx1ZSA9IGFkanVzdENTUyggZWxlbSwgbmFtZSwgcmV0ICk7XG5cblx0XHRcdFx0Ly8gRml4ZXMgYnVnICM5MjM3XG5cdFx0XHRcdHR5cGUgPSBcIm51bWJlclwiO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBNYWtlIHN1cmUgdGhhdCBudWxsIGFuZCBOYU4gdmFsdWVzIGFyZW4ndCBzZXQgKCM3MTE2KVxuXHRcdFx0aWYgKCB2YWx1ZSA9PSBudWxsIHx8IHZhbHVlICE9PSB2YWx1ZSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiBhIG51bWJlciB3YXMgcGFzc2VkIGluLCBhZGQgdGhlIHVuaXQgKGV4Y2VwdCBmb3IgY2VydGFpbiBDU1MgcHJvcGVydGllcylcblx0XHRcdGlmICggdHlwZSA9PT0gXCJudW1iZXJcIiApIHtcblx0XHRcdFx0dmFsdWUgKz0gcmV0ICYmIHJldFsgMyBdIHx8ICggalF1ZXJ5LmNzc051bWJlclsgb3JpZ05hbWUgXSA/IFwiXCIgOiBcInB4XCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gYmFja2dyb3VuZC0qIHByb3BzIGFmZmVjdCBvcmlnaW5hbCBjbG9uZSdzIHZhbHVlc1xuXHRcdFx0aWYgKCAhc3VwcG9ydC5jbGVhckNsb25lU3R5bGUgJiYgdmFsdWUgPT09IFwiXCIgJiYgbmFtZS5pbmRleE9mKCBcImJhY2tncm91bmRcIiApID09PSAwICkge1xuXHRcdFx0XHRzdHlsZVsgbmFtZSBdID0gXCJpbmhlcml0XCI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQsIHVzZSB0aGF0IHZhbHVlLCBvdGhlcndpc2UganVzdCBzZXQgdGhlIHNwZWNpZmllZCB2YWx1ZVxuXHRcdFx0aWYgKCAhaG9va3MgfHwgISggXCJzZXRcIiBpbiBob29rcyApIHx8XG5cdFx0XHRcdCggdmFsdWUgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBleHRyYSApICkgIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0XHRpZiAoIGlzQ3VzdG9tUHJvcCApIHtcblx0XHRcdFx0XHRzdHlsZS5zZXRQcm9wZXJ0eSggbmFtZSwgdmFsdWUgKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzdHlsZVsgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRoZSBub24tY29tcHV0ZWQgdmFsdWUgZnJvbSB0aGVyZVxuXHRcdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICYmXG5cdFx0XHRcdCggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBmYWxzZSwgZXh0cmEgKSApICE9PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIGp1c3QgZ2V0IHRoZSB2YWx1ZSBmcm9tIHRoZSBzdHlsZSBvYmplY3Rcblx0XHRcdHJldHVybiBzdHlsZVsgbmFtZSBdO1xuXHRcdH1cblx0fSxcblxuXHRjc3M6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBleHRyYSwgc3R5bGVzICkge1xuXHRcdHZhciB2YWwsIG51bSwgaG9va3MsXG5cdFx0XHRvcmlnTmFtZSA9IGNhbWVsQ2FzZSggbmFtZSApLFxuXHRcdFx0aXNDdXN0b21Qcm9wID0gcmN1c3RvbVByb3AudGVzdCggbmFtZSApO1xuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lLiBXZSBkb24ndFxuXHRcdC8vIHdhbnQgdG8gbW9kaWZ5IHRoZSB2YWx1ZSBpZiBpdCBpcyBhIENTUyBjdXN0b20gcHJvcGVydHlcblx0XHQvLyBzaW5jZSB0aGV5IGFyZSB1c2VyLWRlZmluZWQuXG5cdFx0aWYgKCAhaXNDdXN0b21Qcm9wICkge1xuXHRcdFx0bmFtZSA9IGZpbmFsUHJvcE5hbWUoIG9yaWdOYW1lICk7XG5cdFx0fVxuXG5cdFx0Ly8gVHJ5IHByZWZpeGVkIG5hbWUgZm9sbG93ZWQgYnkgdGhlIHVucHJlZml4ZWQgbmFtZVxuXHRcdGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gfHwgalF1ZXJ5LmNzc0hvb2tzWyBvcmlnTmFtZSBdO1xuXG5cdFx0Ly8gSWYgYSBob29rIHdhcyBwcm92aWRlZCBnZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGZyb20gdGhlcmVcblx0XHRpZiAoIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgKSB7XG5cdFx0XHR2YWwgPSBob29rcy5nZXQoIGVsZW0sIHRydWUsIGV4dHJhICk7XG5cdFx0fVxuXG5cdFx0Ly8gT3RoZXJ3aXNlLCBpZiBhIHdheSB0byBnZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGV4aXN0cywgdXNlIHRoYXRcblx0XHRpZiAoIHZhbCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0dmFsID0gY3VyQ1NTKCBlbGVtLCBuYW1lLCBzdHlsZXMgKTtcblx0XHR9XG5cblx0XHQvLyBDb252ZXJ0IFwibm9ybWFsXCIgdG8gY29tcHV0ZWQgdmFsdWVcblx0XHRpZiAoIHZhbCA9PT0gXCJub3JtYWxcIiAmJiBuYW1lIGluIGNzc05vcm1hbFRyYW5zZm9ybSApIHtcblx0XHRcdHZhbCA9IGNzc05vcm1hbFRyYW5zZm9ybVsgbmFtZSBdO1xuXHRcdH1cblxuXHRcdC8vIE1ha2UgbnVtZXJpYyBpZiBmb3JjZWQgb3IgYSBxdWFsaWZpZXIgd2FzIHByb3ZpZGVkIGFuZCB2YWwgbG9va3MgbnVtZXJpY1xuXHRcdGlmICggZXh0cmEgPT09IFwiXCIgfHwgZXh0cmEgKSB7XG5cdFx0XHRudW0gPSBwYXJzZUZsb2F0KCB2YWwgKTtcblx0XHRcdHJldHVybiBleHRyYSA9PT0gdHJ1ZSB8fCBpc0Zpbml0ZSggbnVtICkgPyBudW0gfHwgMCA6IHZhbDtcblx0XHR9XG5cblx0XHRyZXR1cm4gdmFsO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5lYWNoKCBbIFwiaGVpZ2h0XCIsIFwid2lkdGhcIiBdLCBmdW5jdGlvbiggaSwgZGltZW5zaW9uICkge1xuXHRqUXVlcnkuY3NzSG9va3NbIGRpbWVuc2lvbiBdID0ge1xuXHRcdGdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkLCBleHRyYSApIHtcblx0XHRcdGlmICggY29tcHV0ZWQgKSB7XG5cblx0XHRcdFx0Ly8gQ2VydGFpbiBlbGVtZW50cyBjYW4gaGF2ZSBkaW1lbnNpb24gaW5mbyBpZiB3ZSBpbnZpc2libHkgc2hvdyB0aGVtXG5cdFx0XHRcdC8vIGJ1dCBpdCBtdXN0IGhhdmUgYSBjdXJyZW50IGRpc3BsYXkgc3R5bGUgdGhhdCB3b3VsZCBiZW5lZml0XG5cdFx0XHRcdHJldHVybiByZGlzcGxheXN3YXAudGVzdCggalF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKSApICYmXG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBTYWZhcmkgOCtcblx0XHRcdFx0XHQvLyBUYWJsZSBjb2x1bW5zIGluIFNhZmFyaSBoYXZlIG5vbi16ZXJvIG9mZnNldFdpZHRoICYgemVyb1xuXHRcdFx0XHRcdC8vIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIHVubGVzcyBkaXNwbGF5IGlzIGNoYW5nZWQuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG5cdFx0XHRcdFx0Ly8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYSBkaXNjb25uZWN0ZWQgbm9kZVxuXHRcdFx0XHRcdC8vIGluIElFIHRocm93cyBhbiBlcnJvci5cblx0XHRcdFx0XHQoICFlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoIHx8ICFlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoICkgP1xuXHRcdFx0XHRcdFx0c3dhcCggZWxlbSwgY3NzU2hvdywgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBnZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBkaW1lbnNpb24sIGV4dHJhICk7XG5cdFx0XHRcdFx0XHR9ICkgOlxuXHRcdFx0XHRcdFx0Z2V0V2lkdGhPckhlaWdodCggZWxlbSwgZGltZW5zaW9uLCBleHRyYSApO1xuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSwgZXh0cmEgKSB7XG5cdFx0XHR2YXIgbWF0Y2hlcyxcblx0XHRcdFx0c3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICksXG5cdFx0XHRcdGlzQm9yZGVyQm94ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3hTaXppbmdcIiwgZmFsc2UsIHN0eWxlcyApID09PSBcImJvcmRlci1ib3hcIixcblx0XHRcdFx0c3VidHJhY3QgPSBleHRyYSAmJiBib3hNb2RlbEFkanVzdG1lbnQoXG5cdFx0XHRcdFx0ZWxlbSxcblx0XHRcdFx0XHRkaW1lbnNpb24sXG5cdFx0XHRcdFx0ZXh0cmEsXG5cdFx0XHRcdFx0aXNCb3JkZXJCb3gsXG5cdFx0XHRcdFx0c3R5bGVzXG5cdFx0XHRcdCk7XG5cblx0XHRcdC8vIEFjY291bnQgZm9yIHVucmVsaWFibGUgYm9yZGVyLWJveCBkaW1lbnNpb25zIGJ5IGNvbXBhcmluZyBvZmZzZXQqIHRvIGNvbXB1dGVkIGFuZFxuXHRcdFx0Ly8gZmFraW5nIGEgY29udGVudC1ib3ggdG8gZ2V0IGJvcmRlciBhbmQgcGFkZGluZyAoZ2gtMzY5OSlcblx0XHRcdGlmICggaXNCb3JkZXJCb3ggJiYgc3VwcG9ydC5zY3JvbGxib3hTaXplKCkgPT09IHN0eWxlcy5wb3NpdGlvbiApIHtcblx0XHRcdFx0c3VidHJhY3QgLT0gTWF0aC5jZWlsKFxuXHRcdFx0XHRcdGVsZW1bIFwib2Zmc2V0XCIgKyBkaW1lbnNpb25bIDAgXS50b1VwcGVyQ2FzZSgpICsgZGltZW5zaW9uLnNsaWNlKCAxICkgXSAtXG5cdFx0XHRcdFx0cGFyc2VGbG9hdCggc3R5bGVzWyBkaW1lbnNpb24gXSApIC1cblx0XHRcdFx0XHRib3hNb2RlbEFkanVzdG1lbnQoIGVsZW0sIGRpbWVuc2lvbiwgXCJib3JkZXJcIiwgZmFsc2UsIHN0eWxlcyApIC1cblx0XHRcdFx0XHQwLjVcblx0XHRcdFx0KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ29udmVydCB0byBwaXhlbHMgaWYgdmFsdWUgYWRqdXN0bWVudCBpcyBuZWVkZWRcblx0XHRcdGlmICggc3VidHJhY3QgJiYgKCBtYXRjaGVzID0gcmNzc051bS5leGVjKCB2YWx1ZSApICkgJiZcblx0XHRcdFx0KCBtYXRjaGVzWyAzIF0gfHwgXCJweFwiICkgIT09IFwicHhcIiApIHtcblxuXHRcdFx0XHRlbGVtLnN0eWxlWyBkaW1lbnNpb24gXSA9IHZhbHVlO1xuXHRcdFx0XHR2YWx1ZSA9IGpRdWVyeS5jc3MoIGVsZW0sIGRpbWVuc2lvbiApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gc2V0UG9zaXRpdmVOdW1iZXIoIGVsZW0sIHZhbHVlLCBzdWJ0cmFjdCApO1xuXHRcdH1cblx0fTtcbn0gKTtcblxualF1ZXJ5LmNzc0hvb2tzLm1hcmdpbkxlZnQgPSBhZGRHZXRIb29rSWYoIHN1cHBvcnQucmVsaWFibGVNYXJnaW5MZWZ0LFxuXHRmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XG5cdFx0aWYgKCBjb21wdXRlZCApIHtcblx0XHRcdHJldHVybiAoIHBhcnNlRmxvYXQoIGN1ckNTUyggZWxlbSwgXCJtYXJnaW5MZWZ0XCIgKSApIHx8XG5cdFx0XHRcdGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCAtXG5cdFx0XHRcdFx0c3dhcCggZWxlbSwgeyBtYXJnaW5MZWZ0OiAwIH0sIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcblx0XHRcdFx0XHR9IClcblx0XHRcdFx0KSArIFwicHhcIjtcblx0XHR9XG5cdH1cbik7XG5cbi8vIFRoZXNlIGhvb2tzIGFyZSB1c2VkIGJ5IGFuaW1hdGUgdG8gZXhwYW5kIHByb3BlcnRpZXNcbmpRdWVyeS5lYWNoKCB7XG5cdG1hcmdpbjogXCJcIixcblx0cGFkZGluZzogXCJcIixcblx0Ym9yZGVyOiBcIldpZHRoXCJcbn0sIGZ1bmN0aW9uKCBwcmVmaXgsIHN1ZmZpeCApIHtcblx0alF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZmaXggXSA9IHtcblx0XHRleHBhbmQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHZhciBpID0gMCxcblx0XHRcdFx0ZXhwYW5kZWQgPSB7fSxcblxuXHRcdFx0XHQvLyBBc3N1bWVzIGEgc2luZ2xlIG51bWJlciBpZiBub3QgYSBzdHJpbmdcblx0XHRcdFx0cGFydHMgPSB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyB2YWx1ZS5zcGxpdCggXCIgXCIgKSA6IFsgdmFsdWUgXTtcblxuXHRcdFx0Zm9yICggOyBpIDwgNDsgaSsrICkge1xuXHRcdFx0XHRleHBhbmRlZFsgcHJlZml4ICsgY3NzRXhwYW5kWyBpIF0gKyBzdWZmaXggXSA9XG5cdFx0XHRcdFx0cGFydHNbIGkgXSB8fCBwYXJ0c1sgaSAtIDIgXSB8fCBwYXJ0c1sgMCBdO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZXhwYW5kZWQ7XG5cdFx0fVxuXHR9O1xuXG5cdGlmICggcHJlZml4ICE9PSBcIm1hcmdpblwiICkge1xuXHRcdGpRdWVyeS5jc3NIb29rc1sgcHJlZml4ICsgc3VmZml4IF0uc2V0ID0gc2V0UG9zaXRpdmVOdW1iZXI7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRjc3M6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7XG5cdFx0XHR2YXIgc3R5bGVzLCBsZW4sXG5cdFx0XHRcdG1hcCA9IHt9LFxuXHRcdFx0XHRpID0gMDtcblxuXHRcdFx0aWYgKCBBcnJheS5pc0FycmF5KCBuYW1lICkgKSB7XG5cdFx0XHRcdHN0eWxlcyA9IGdldFN0eWxlcyggZWxlbSApO1xuXHRcdFx0XHRsZW4gPSBuYW1lLmxlbmd0aDtcblxuXHRcdFx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0XHRtYXBbIG5hbWVbIGkgXSBdID0galF1ZXJ5LmNzcyggZWxlbSwgbmFtZVsgaSBdLCBmYWxzZSwgc3R5bGVzICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gbWFwO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSwgdmFsdWUgKSA6XG5cdFx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIG5hbWUgKTtcblx0XHR9LCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTtcblx0fVxufSApO1xuXG5cbmZ1bmN0aW9uIFR3ZWVuKCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZyApIHtcblx0cmV0dXJuIG5ldyBUd2Vlbi5wcm90b3R5cGUuaW5pdCggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcgKTtcbn1cbmpRdWVyeS5Ud2VlbiA9IFR3ZWVuO1xuXG5Ud2Vlbi5wcm90b3R5cGUgPSB7XG5cdGNvbnN0cnVjdG9yOiBUd2Vlbixcblx0aW5pdDogZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nLCB1bml0ICkge1xuXHRcdHRoaXMuZWxlbSA9IGVsZW07XG5cdFx0dGhpcy5wcm9wID0gcHJvcDtcblx0XHR0aGlzLmVhc2luZyA9IGVhc2luZyB8fCBqUXVlcnkuZWFzaW5nLl9kZWZhdWx0O1xuXHRcdHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cdFx0dGhpcy5zdGFydCA9IHRoaXMubm93ID0gdGhpcy5jdXIoKTtcblx0XHR0aGlzLmVuZCA9IGVuZDtcblx0XHR0aGlzLnVuaXQgPSB1bml0IHx8ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8gXCJcIiA6IFwicHhcIiApO1xuXHR9LFxuXHRjdXI6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07XG5cblx0XHRyZXR1cm4gaG9va3MgJiYgaG9va3MuZ2V0ID9cblx0XHRcdGhvb2tzLmdldCggdGhpcyApIDpcblx0XHRcdFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5nZXQoIHRoaXMgKTtcblx0fSxcblx0cnVuOiBmdW5jdGlvbiggcGVyY2VudCApIHtcblx0XHR2YXIgZWFzZWQsXG5cdFx0XHRob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5kdXJhdGlvbiApIHtcblx0XHRcdHRoaXMucG9zID0gZWFzZWQgPSBqUXVlcnkuZWFzaW5nWyB0aGlzLmVhc2luZyBdKFxuXHRcdFx0XHRwZXJjZW50LCB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKiBwZXJjZW50LCAwLCAxLCB0aGlzLm9wdGlvbnMuZHVyYXRpb25cblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucG9zID0gZWFzZWQgPSBwZXJjZW50O1xuXHRcdH1cblx0XHR0aGlzLm5vdyA9ICggdGhpcy5lbmQgLSB0aGlzLnN0YXJ0ICkgKiBlYXNlZCArIHRoaXMuc3RhcnQ7XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5zdGVwICkge1xuXHRcdFx0dGhpcy5vcHRpb25zLnN0ZXAuY2FsbCggdGhpcy5lbGVtLCB0aGlzLm5vdywgdGhpcyApO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgaG9va3Muc2V0ICkge1xuXHRcdFx0aG9va3Muc2V0KCB0aGlzICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5zZXQoIHRoaXMgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn07XG5cblR3ZWVuLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZSA9IFR3ZWVuLnByb3RvdHlwZTtcblxuVHdlZW4ucHJvcEhvb2tzID0ge1xuXHRfZGVmYXVsdDoge1xuXHRcdGdldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXHRcdFx0dmFyIHJlc3VsdDtcblxuXHRcdFx0Ly8gVXNlIGEgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgZGlyZWN0bHkgd2hlbiBpdCBpcyBub3QgYSBET00gZWxlbWVudCxcblx0XHRcdC8vIG9yIHdoZW4gdGhlcmUgaXMgbm8gbWF0Y2hpbmcgc3R5bGUgcHJvcGVydHkgdGhhdCBleGlzdHMuXG5cdFx0XHRpZiAoIHR3ZWVuLmVsZW0ubm9kZVR5cGUgIT09IDEgfHxcblx0XHRcdFx0dHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdICE9IG51bGwgJiYgdHdlZW4uZWxlbS5zdHlsZVsgdHdlZW4ucHJvcCBdID09IG51bGwgKSB7XG5cdFx0XHRcdHJldHVybiB0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF07XG5cdFx0XHR9XG5cblx0XHRcdC8vIFBhc3NpbmcgYW4gZW1wdHkgc3RyaW5nIGFzIGEgM3JkIHBhcmFtZXRlciB0byAuY3NzIHdpbGwgYXV0b21hdGljYWxseVxuXHRcdFx0Ly8gYXR0ZW1wdCBhIHBhcnNlRmxvYXQgYW5kIGZhbGxiYWNrIHRvIGEgc3RyaW5nIGlmIHRoZSBwYXJzZSBmYWlscy5cblx0XHRcdC8vIFNpbXBsZSB2YWx1ZXMgc3VjaCBhcyBcIjEwcHhcIiBhcmUgcGFyc2VkIHRvIEZsb2F0O1xuXHRcdFx0Ly8gY29tcGxleCB2YWx1ZXMgc3VjaCBhcyBcInJvdGF0ZSgxcmFkKVwiIGFyZSByZXR1cm5lZCBhcy1pcy5cblx0XHRcdHJlc3VsdCA9IGpRdWVyeS5jc3MoIHR3ZWVuLmVsZW0sIHR3ZWVuLnByb3AsIFwiXCIgKTtcblxuXHRcdFx0Ly8gRW1wdHkgc3RyaW5ncywgbnVsbCwgdW5kZWZpbmVkIGFuZCBcImF1dG9cIiBhcmUgY29udmVydGVkIHRvIDAuXG5cdFx0XHRyZXR1cm4gIXJlc3VsdCB8fCByZXN1bHQgPT09IFwiYXV0b1wiID8gMCA6IHJlc3VsdDtcblx0XHR9LFxuXHRcdHNldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXG5cdFx0XHQvLyBVc2Ugc3RlcCBob29rIGZvciBiYWNrIGNvbXBhdC5cblx0XHRcdC8vIFVzZSBjc3NIb29rIGlmIGl0cyB0aGVyZS5cblx0XHRcdC8vIFVzZSAuc3R5bGUgaWYgYXZhaWxhYmxlIGFuZCB1c2UgcGxhaW4gcHJvcGVydGllcyB3aGVyZSBhdmFpbGFibGUuXG5cdFx0XHRpZiAoIGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0gKSB7XG5cdFx0XHRcdGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0oIHR3ZWVuICk7XG5cdFx0XHR9IGVsc2UgaWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRcdCggdHdlZW4uZWxlbS5zdHlsZVsgalF1ZXJ5LmNzc1Byb3BzWyB0d2Vlbi5wcm9wIF0gXSAhPSBudWxsIHx8XG5cdFx0XHRcdFx0alF1ZXJ5LmNzc0hvb2tzWyB0d2Vlbi5wcm9wIF0gKSApIHtcblx0XHRcdFx0alF1ZXJ5LnN0eWxlKCB0d2Vlbi5lbGVtLCB0d2Vlbi5wcm9wLCB0d2Vlbi5ub3cgKyB0d2Vlbi51bml0ICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gPSB0d2Vlbi5ub3c7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59O1xuXG4vLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuLy8gUGFuaWMgYmFzZWQgYXBwcm9hY2ggdG8gc2V0dGluZyB0aGluZ3Mgb24gZGlzY29ubmVjdGVkIG5vZGVzXG5Ud2Vlbi5wcm9wSG9va3Muc2Nyb2xsVG9wID0gVHdlZW4ucHJvcEhvb2tzLnNjcm9sbExlZnQgPSB7XG5cdHNldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXHRcdGlmICggdHdlZW4uZWxlbS5ub2RlVHlwZSAmJiB0d2Vlbi5lbGVtLnBhcmVudE5vZGUgKSB7XG5cdFx0XHR0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gPSB0d2Vlbi5ub3c7XG5cdFx0fVxuXHR9XG59O1xuXG5qUXVlcnkuZWFzaW5nID0ge1xuXHRsaW5lYXI6IGZ1bmN0aW9uKCBwICkge1xuXHRcdHJldHVybiBwO1xuXHR9LFxuXHRzd2luZzogZnVuY3Rpb24oIHAgKSB7XG5cdFx0cmV0dXJuIDAuNSAtIE1hdGguY29zKCBwICogTWF0aC5QSSApIC8gMjtcblx0fSxcblx0X2RlZmF1bHQ6IFwic3dpbmdcIlxufTtcblxualF1ZXJ5LmZ4ID0gVHdlZW4ucHJvdG90eXBlLmluaXQ7XG5cbi8vIEJhY2sgY29tcGF0IDwxLjggZXh0ZW5zaW9uIHBvaW50XG5qUXVlcnkuZnguc3RlcCA9IHt9O1xuXG5cblxuXG52YXJcblx0ZnhOb3csIGluUHJvZ3Jlc3MsXG5cdHJmeHR5cGVzID0gL14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLFxuXHRycnVuID0gL3F1ZXVlSG9va3MkLztcblxuZnVuY3Rpb24gc2NoZWR1bGUoKSB7XG5cdGlmICggaW5Qcm9ncmVzcyApIHtcblx0XHRpZiAoIGRvY3VtZW50LmhpZGRlbiA9PT0gZmFsc2UgJiYgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSApIHtcblx0XHRcdHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoIHNjaGVkdWxlICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHdpbmRvdy5zZXRUaW1lb3V0KCBzY2hlZHVsZSwgalF1ZXJ5LmZ4LmludGVydmFsICk7XG5cdFx0fVxuXG5cdFx0alF1ZXJ5LmZ4LnRpY2soKTtcblx0fVxufVxuXG4vLyBBbmltYXRpb25zIGNyZWF0ZWQgc3luY2hyb25vdXNseSB3aWxsIHJ1biBzeW5jaHJvbm91c2x5XG5mdW5jdGlvbiBjcmVhdGVGeE5vdygpIHtcblx0d2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuXHRcdGZ4Tm93ID0gdW5kZWZpbmVkO1xuXHR9ICk7XG5cdHJldHVybiAoIGZ4Tm93ID0gRGF0ZS5ub3coKSApO1xufVxuXG4vLyBHZW5lcmF0ZSBwYXJhbWV0ZXJzIHRvIGNyZWF0ZSBhIHN0YW5kYXJkIGFuaW1hdGlvblxuZnVuY3Rpb24gZ2VuRngoIHR5cGUsIGluY2x1ZGVXaWR0aCApIHtcblx0dmFyIHdoaWNoLFxuXHRcdGkgPSAwLFxuXHRcdGF0dHJzID0geyBoZWlnaHQ6IHR5cGUgfTtcblxuXHQvLyBJZiB3ZSBpbmNsdWRlIHdpZHRoLCBzdGVwIHZhbHVlIGlzIDEgdG8gZG8gYWxsIGNzc0V4cGFuZCB2YWx1ZXMsXG5cdC8vIG90aGVyd2lzZSBzdGVwIHZhbHVlIGlzIDIgdG8gc2tpcCBvdmVyIExlZnQgYW5kIFJpZ2h0XG5cdGluY2x1ZGVXaWR0aCA9IGluY2x1ZGVXaWR0aCA/IDEgOiAwO1xuXHRmb3IgKCA7IGkgPCA0OyBpICs9IDIgLSBpbmNsdWRlV2lkdGggKSB7XG5cdFx0d2hpY2ggPSBjc3NFeHBhbmRbIGkgXTtcblx0XHRhdHRyc1sgXCJtYXJnaW5cIiArIHdoaWNoIF0gPSBhdHRyc1sgXCJwYWRkaW5nXCIgKyB3aGljaCBdID0gdHlwZTtcblx0fVxuXG5cdGlmICggaW5jbHVkZVdpZHRoICkge1xuXHRcdGF0dHJzLm9wYWNpdHkgPSBhdHRycy53aWR0aCA9IHR5cGU7XG5cdH1cblxuXHRyZXR1cm4gYXR0cnM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVR3ZWVuKCB2YWx1ZSwgcHJvcCwgYW5pbWF0aW9uICkge1xuXHR2YXIgdHdlZW4sXG5cdFx0Y29sbGVjdGlvbiA9ICggQW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0gfHwgW10gKS5jb25jYXQoIEFuaW1hdGlvbi50d2VlbmVyc1sgXCIqXCIgXSApLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aDtcblx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRpZiAoICggdHdlZW4gPSBjb2xsZWN0aW9uWyBpbmRleCBdLmNhbGwoIGFuaW1hdGlvbiwgcHJvcCwgdmFsdWUgKSApICkge1xuXG5cdFx0XHQvLyBXZSdyZSBkb25lIHdpdGggdGhpcyBwcm9wZXJ0eVxuXHRcdFx0cmV0dXJuIHR3ZWVuO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBkZWZhdWx0UHJlZmlsdGVyKCBlbGVtLCBwcm9wcywgb3B0cyApIHtcblx0dmFyIHByb3AsIHZhbHVlLCB0b2dnbGUsIGhvb2tzLCBvbGRmaXJlLCBwcm9wVHdlZW4sIHJlc3RvcmVEaXNwbGF5LCBkaXNwbGF5LFxuXHRcdGlzQm94ID0gXCJ3aWR0aFwiIGluIHByb3BzIHx8IFwiaGVpZ2h0XCIgaW4gcHJvcHMsXG5cdFx0YW5pbSA9IHRoaXMsXG5cdFx0b3JpZyA9IHt9LFxuXHRcdHN0eWxlID0gZWxlbS5zdHlsZSxcblx0XHRoaWRkZW4gPSBlbGVtLm5vZGVUeXBlICYmIGlzSGlkZGVuV2l0aGluVHJlZSggZWxlbSApLFxuXHRcdGRhdGFTaG93ID0gZGF0YVByaXYuZ2V0KCBlbGVtLCBcImZ4c2hvd1wiICk7XG5cblx0Ly8gUXVldWUtc2tpcHBpbmcgYW5pbWF0aW9ucyBoaWphY2sgdGhlIGZ4IGhvb2tzXG5cdGlmICggIW9wdHMucXVldWUgKSB7XG5cdFx0aG9va3MgPSBqUXVlcnkuX3F1ZXVlSG9va3MoIGVsZW0sIFwiZnhcIiApO1xuXHRcdGlmICggaG9va3MudW5xdWV1ZWQgPT0gbnVsbCApIHtcblx0XHRcdGhvb2tzLnVucXVldWVkID0gMDtcblx0XHRcdG9sZGZpcmUgPSBob29rcy5lbXB0eS5maXJlO1xuXHRcdFx0aG9va3MuZW1wdHkuZmlyZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoICFob29rcy51bnF1ZXVlZCApIHtcblx0XHRcdFx0XHRvbGRmaXJlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fVxuXHRcdGhvb2tzLnVucXVldWVkKys7XG5cblx0XHRhbmltLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIEVuc3VyZSB0aGUgY29tcGxldGUgaGFuZGxlciBpcyBjYWxsZWQgYmVmb3JlIHRoaXMgY29tcGxldGVzXG5cdFx0XHRhbmltLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGhvb2tzLnVucXVldWVkLS07XG5cdFx0XHRcdGlmICggIWpRdWVyeS5xdWV1ZSggZWxlbSwgXCJmeFwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRcdGhvb2tzLmVtcHR5LmZpcmUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHRcdH0gKTtcblx0fVxuXG5cdC8vIERldGVjdCBzaG93L2hpZGUgYW5pbWF0aW9uc1xuXHRmb3IgKCBwcm9wIGluIHByb3BzICkge1xuXHRcdHZhbHVlID0gcHJvcHNbIHByb3AgXTtcblx0XHRpZiAoIHJmeHR5cGVzLnRlc3QoIHZhbHVlICkgKSB7XG5cdFx0XHRkZWxldGUgcHJvcHNbIHByb3AgXTtcblx0XHRcdHRvZ2dsZSA9IHRvZ2dsZSB8fCB2YWx1ZSA9PT0gXCJ0b2dnbGVcIjtcblx0XHRcdGlmICggdmFsdWUgPT09ICggaGlkZGVuID8gXCJoaWRlXCIgOiBcInNob3dcIiApICkge1xuXG5cdFx0XHRcdC8vIFByZXRlbmQgdG8gYmUgaGlkZGVuIGlmIHRoaXMgaXMgYSBcInNob3dcIiBhbmRcblx0XHRcdFx0Ly8gdGhlcmUgaXMgc3RpbGwgZGF0YSBmcm9tIGEgc3RvcHBlZCBzaG93L2hpZGVcblx0XHRcdFx0aWYgKCB2YWx1ZSA9PT0gXCJzaG93XCIgJiYgZGF0YVNob3cgJiYgZGF0YVNob3dbIHByb3AgXSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdGhpZGRlbiA9IHRydWU7XG5cblx0XHRcdFx0Ly8gSWdub3JlIGFsbCBvdGhlciBuby1vcCBzaG93L2hpZGUgZGF0YVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRvcmlnWyBwcm9wIF0gPSBkYXRhU2hvdyAmJiBkYXRhU2hvd1sgcHJvcCBdIHx8IGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCApO1xuXHRcdH1cblx0fVxuXG5cdC8vIEJhaWwgb3V0IGlmIHRoaXMgaXMgYSBuby1vcCBsaWtlIC5oaWRlKCkuaGlkZSgpXG5cdHByb3BUd2VlbiA9ICFqUXVlcnkuaXNFbXB0eU9iamVjdCggcHJvcHMgKTtcblx0aWYgKCAhcHJvcFR3ZWVuICYmIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBvcmlnICkgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gUmVzdHJpY3QgXCJvdmVyZmxvd1wiIGFuZCBcImRpc3BsYXlcIiBzdHlsZXMgZHVyaW5nIGJveCBhbmltYXRpb25zXG5cdGlmICggaXNCb3ggJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExLCBFZGdlIDEyIC0gMTVcblx0XHQvLyBSZWNvcmQgYWxsIDMgb3ZlcmZsb3cgYXR0cmlidXRlcyBiZWNhdXNlIElFIGRvZXMgbm90IGluZmVyIHRoZSBzaG9ydGhhbmRcblx0XHQvLyBmcm9tIGlkZW50aWNhbGx5LXZhbHVlZCBvdmVyZmxvd1ggYW5kIG92ZXJmbG93WSBhbmQgRWRnZSBqdXN0IG1pcnJvcnNcblx0XHQvLyB0aGUgb3ZlcmZsb3dYIHZhbHVlIHRoZXJlLlxuXHRcdG9wdHMub3ZlcmZsb3cgPSBbIHN0eWxlLm92ZXJmbG93LCBzdHlsZS5vdmVyZmxvd1gsIHN0eWxlLm92ZXJmbG93WSBdO1xuXG5cdFx0Ly8gSWRlbnRpZnkgYSBkaXNwbGF5IHR5cGUsIHByZWZlcnJpbmcgb2xkIHNob3cvaGlkZSBkYXRhIG92ZXIgdGhlIENTUyBjYXNjYWRlXG5cdFx0cmVzdG9yZURpc3BsYXkgPSBkYXRhU2hvdyAmJiBkYXRhU2hvdy5kaXNwbGF5O1xuXHRcdGlmICggcmVzdG9yZURpc3BsYXkgPT0gbnVsbCApIHtcblx0XHRcdHJlc3RvcmVEaXNwbGF5ID0gZGF0YVByaXYuZ2V0KCBlbGVtLCBcImRpc3BsYXlcIiApO1xuXHRcdH1cblx0XHRkaXNwbGF5ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKTtcblx0XHRpZiAoIGRpc3BsYXkgPT09IFwibm9uZVwiICkge1xuXHRcdFx0aWYgKCByZXN0b3JlRGlzcGxheSApIHtcblx0XHRcdFx0ZGlzcGxheSA9IHJlc3RvcmVEaXNwbGF5O1xuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHQvLyBHZXQgbm9uZW1wdHkgdmFsdWUocykgYnkgdGVtcG9yYXJpbHkgZm9yY2luZyB2aXNpYmlsaXR5XG5cdFx0XHRcdHNob3dIaWRlKCBbIGVsZW0gXSwgdHJ1ZSApO1xuXHRcdFx0XHRyZXN0b3JlRGlzcGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheSB8fCByZXN0b3JlRGlzcGxheTtcblx0XHRcdFx0ZGlzcGxheSA9IGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICk7XG5cdFx0XHRcdHNob3dIaWRlKCBbIGVsZW0gXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEFuaW1hdGUgaW5saW5lIGVsZW1lbnRzIGFzIGlubGluZS1ibG9ja1xuXHRcdGlmICggZGlzcGxheSA9PT0gXCJpbmxpbmVcIiB8fCBkaXNwbGF5ID09PSBcImlubGluZS1ibG9ja1wiICYmIHJlc3RvcmVEaXNwbGF5ICE9IG51bGwgKSB7XG5cdFx0XHRpZiAoIGpRdWVyeS5jc3MoIGVsZW0sIFwiZmxvYXRcIiApID09PSBcIm5vbmVcIiApIHtcblxuXHRcdFx0XHQvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBkaXNwbGF5IHZhbHVlIGF0IHRoZSBlbmQgb2YgcHVyZSBzaG93L2hpZGUgYW5pbWF0aW9uc1xuXHRcdFx0XHRpZiAoICFwcm9wVHdlZW4gKSB7XG5cdFx0XHRcdFx0YW5pbS5kb25lKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHN0eWxlLmRpc3BsYXkgPSByZXN0b3JlRGlzcGxheTtcblx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0aWYgKCByZXN0b3JlRGlzcGxheSA9PSBudWxsICkge1xuXHRcdFx0XHRcdFx0ZGlzcGxheSA9IHN0eWxlLmRpc3BsYXk7XG5cdFx0XHRcdFx0XHRyZXN0b3JlRGlzcGxheSA9IGRpc3BsYXkgPT09IFwibm9uZVwiID8gXCJcIiA6IGRpc3BsYXk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHN0eWxlLmRpc3BsYXkgPSBcImlubGluZS1ibG9ja1wiO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlmICggb3B0cy5vdmVyZmxvdyApIHtcblx0XHRzdHlsZS5vdmVyZmxvdyA9IFwiaGlkZGVuXCI7XG5cdFx0YW5pbS5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXHRcdFx0c3R5bGUub3ZlcmZsb3cgPSBvcHRzLm92ZXJmbG93WyAwIF07XG5cdFx0XHRzdHlsZS5vdmVyZmxvd1ggPSBvcHRzLm92ZXJmbG93WyAxIF07XG5cdFx0XHRzdHlsZS5vdmVyZmxvd1kgPSBvcHRzLm92ZXJmbG93WyAyIF07XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gSW1wbGVtZW50IHNob3cvaGlkZSBhbmltYXRpb25zXG5cdHByb3BUd2VlbiA9IGZhbHNlO1xuXHRmb3IgKCBwcm9wIGluIG9yaWcgKSB7XG5cblx0XHQvLyBHZW5lcmFsIHNob3cvaGlkZSBzZXR1cCBmb3IgdGhpcyBlbGVtZW50IGFuaW1hdGlvblxuXHRcdGlmICggIXByb3BUd2VlbiApIHtcblx0XHRcdGlmICggZGF0YVNob3cgKSB7XG5cdFx0XHRcdGlmICggXCJoaWRkZW5cIiBpbiBkYXRhU2hvdyApIHtcblx0XHRcdFx0XHRoaWRkZW4gPSBkYXRhU2hvdy5oaWRkZW47XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRhdGFTaG93ID0gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCBcImZ4c2hvd1wiLCB7IGRpc3BsYXk6IHJlc3RvcmVEaXNwbGF5IH0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3RvcmUgaGlkZGVuL3Zpc2libGUgZm9yIHRvZ2dsZSBzbyBgLnN0b3AoKS50b2dnbGUoKWAgXCJyZXZlcnNlc1wiXG5cdFx0XHRpZiAoIHRvZ2dsZSApIHtcblx0XHRcdFx0ZGF0YVNob3cuaGlkZGVuID0gIWhpZGRlbjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2hvdyBlbGVtZW50cyBiZWZvcmUgYW5pbWF0aW5nIHRoZW1cblx0XHRcdGlmICggaGlkZGVuICkge1xuXHRcdFx0XHRzaG93SGlkZSggWyBlbGVtIF0sIHRydWUgKTtcblx0XHRcdH1cblxuXHRcdFx0LyogZXNsaW50LWRpc2FibGUgbm8tbG9vcC1mdW5jICovXG5cblx0XHRcdGFuaW0uZG9uZSggZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8qIGVzbGludC1lbmFibGUgbm8tbG9vcC1mdW5jICovXG5cblx0XHRcdFx0Ly8gVGhlIGZpbmFsIHN0ZXAgb2YgYSBcImhpZGVcIiBhbmltYXRpb24gaXMgYWN0dWFsbHkgaGlkaW5nIHRoZSBlbGVtZW50XG5cdFx0XHRcdGlmICggIWhpZGRlbiApIHtcblx0XHRcdFx0XHRzaG93SGlkZSggWyBlbGVtIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIFwiZnhzaG93XCIgKTtcblx0XHRcdFx0Zm9yICggcHJvcCBpbiBvcmlnICkge1xuXHRcdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCwgb3JpZ1sgcHJvcCBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHQvLyBQZXItcHJvcGVydHkgc2V0dXBcblx0XHRwcm9wVHdlZW4gPSBjcmVhdGVUd2VlbiggaGlkZGVuID8gZGF0YVNob3dbIHByb3AgXSA6IDAsIHByb3AsIGFuaW0gKTtcblx0XHRpZiAoICEoIHByb3AgaW4gZGF0YVNob3cgKSApIHtcblx0XHRcdGRhdGFTaG93WyBwcm9wIF0gPSBwcm9wVHdlZW4uc3RhcnQ7XG5cdFx0XHRpZiAoIGhpZGRlbiApIHtcblx0XHRcdFx0cHJvcFR3ZWVuLmVuZCA9IHByb3BUd2Vlbi5zdGFydDtcblx0XHRcdFx0cHJvcFR3ZWVuLnN0YXJ0ID0gMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gcHJvcEZpbHRlciggcHJvcHMsIHNwZWNpYWxFYXNpbmcgKSB7XG5cdHZhciBpbmRleCwgbmFtZSwgZWFzaW5nLCB2YWx1ZSwgaG9va3M7XG5cblx0Ly8gY2FtZWxDYXNlLCBzcGVjaWFsRWFzaW5nIGFuZCBleHBhbmQgY3NzSG9vayBwYXNzXG5cdGZvciAoIGluZGV4IGluIHByb3BzICkge1xuXHRcdG5hbWUgPSBjYW1lbENhc2UoIGluZGV4ICk7XG5cdFx0ZWFzaW5nID0gc3BlY2lhbEVhc2luZ1sgbmFtZSBdO1xuXHRcdHZhbHVlID0gcHJvcHNbIGluZGV4IF07XG5cdFx0aWYgKCBBcnJheS5pc0FycmF5KCB2YWx1ZSApICkge1xuXHRcdFx0ZWFzaW5nID0gdmFsdWVbIDEgXTtcblx0XHRcdHZhbHVlID0gcHJvcHNbIGluZGV4IF0gPSB2YWx1ZVsgMCBdO1xuXHRcdH1cblxuXHRcdGlmICggaW5kZXggIT09IG5hbWUgKSB7XG5cdFx0XHRwcm9wc1sgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHRkZWxldGUgcHJvcHNbIGluZGV4IF07XG5cdFx0fVxuXG5cdFx0aG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXTtcblx0XHRpZiAoIGhvb2tzICYmIFwiZXhwYW5kXCIgaW4gaG9va3MgKSB7XG5cdFx0XHR2YWx1ZSA9IGhvb2tzLmV4cGFuZCggdmFsdWUgKTtcblx0XHRcdGRlbGV0ZSBwcm9wc1sgbmFtZSBdO1xuXG5cdFx0XHQvLyBOb3QgcXVpdGUgJC5leHRlbmQsIHRoaXMgd29uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5nIGtleXMuXG5cdFx0XHQvLyBSZXVzaW5nICdpbmRleCcgYmVjYXVzZSB3ZSBoYXZlIHRoZSBjb3JyZWN0IFwibmFtZVwiXG5cdFx0XHRmb3IgKCBpbmRleCBpbiB2YWx1ZSApIHtcblx0XHRcdFx0aWYgKCAhKCBpbmRleCBpbiBwcm9wcyApICkge1xuXHRcdFx0XHRcdHByb3BzWyBpbmRleCBdID0gdmFsdWVbIGluZGV4IF07XG5cdFx0XHRcdFx0c3BlY2lhbEVhc2luZ1sgaW5kZXggXSA9IGVhc2luZztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRzcGVjaWFsRWFzaW5nWyBuYW1lIF0gPSBlYXNpbmc7XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIEFuaW1hdGlvbiggZWxlbSwgcHJvcGVydGllcywgb3B0aW9ucyApIHtcblx0dmFyIHJlc3VsdCxcblx0XHRzdG9wcGVkLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBBbmltYXRpb24ucHJlZmlsdGVycy5sZW5ndGgsXG5cdFx0ZGVmZXJyZWQgPSBqUXVlcnkuRGVmZXJyZWQoKS5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBEb24ndCBtYXRjaCBlbGVtIGluIHRoZSA6YW5pbWF0ZWQgc2VsZWN0b3Jcblx0XHRcdGRlbGV0ZSB0aWNrLmVsZW07XG5cdFx0fSApLFxuXHRcdHRpY2sgPSBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggc3RvcHBlZCApIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGN1cnJlbnRUaW1lID0gZnhOb3cgfHwgY3JlYXRlRnhOb3coKSxcblx0XHRcdFx0cmVtYWluaW5nID0gTWF0aC5tYXgoIDAsIGFuaW1hdGlvbi5zdGFydFRpbWUgKyBhbmltYXRpb24uZHVyYXRpb24gLSBjdXJyZW50VGltZSApLFxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgMi4zIG9ubHlcblx0XHRcdFx0Ly8gQXJjaGFpYyBjcmFzaCBidWcgd29uJ3QgYWxsb3cgdXMgdG8gdXNlIGAxIC0gKCAwLjUgfHwgMCApYCAoIzEyNDk3KVxuXHRcdFx0XHR0ZW1wID0gcmVtYWluaW5nIC8gYW5pbWF0aW9uLmR1cmF0aW9uIHx8IDAsXG5cdFx0XHRcdHBlcmNlbnQgPSAxIC0gdGVtcCxcblx0XHRcdFx0aW5kZXggPSAwLFxuXHRcdFx0XHRsZW5ndGggPSBhbmltYXRpb24udHdlZW5zLmxlbmd0aDtcblxuXHRcdFx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRcdFx0YW5pbWF0aW9uLnR3ZWVuc1sgaW5kZXggXS5ydW4oIHBlcmNlbnQgKTtcblx0XHRcdH1cblxuXHRcdFx0ZGVmZXJyZWQubm90aWZ5V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIHBlcmNlbnQsIHJlbWFpbmluZyBdICk7XG5cblx0XHRcdC8vIElmIHRoZXJlJ3MgbW9yZSB0byBkbywgeWllbGRcblx0XHRcdGlmICggcGVyY2VudCA8IDEgJiYgbGVuZ3RoICkge1xuXHRcdFx0XHRyZXR1cm4gcmVtYWluaW5nO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiB0aGlzIHdhcyBhbiBlbXB0eSBhbmltYXRpb24sIHN5bnRoZXNpemUgYSBmaW5hbCBwcm9ncmVzcyBub3RpZmljYXRpb25cblx0XHRcdGlmICggIWxlbmd0aCApIHtcblx0XHRcdFx0ZGVmZXJyZWQubm90aWZ5V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIDEsIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZXNvbHZlIHRoZSBhbmltYXRpb24gYW5kIHJlcG9ydCBpdHMgY29uY2x1c2lvblxuXHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uIF0gKTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9LFxuXHRcdGFuaW1hdGlvbiA9IGRlZmVycmVkLnByb21pc2UoIHtcblx0XHRcdGVsZW06IGVsZW0sXG5cdFx0XHRwcm9wczogalF1ZXJ5LmV4dGVuZCgge30sIHByb3BlcnRpZXMgKSxcblx0XHRcdG9wdHM6IGpRdWVyeS5leHRlbmQoIHRydWUsIHtcblx0XHRcdFx0c3BlY2lhbEVhc2luZzoge30sXG5cdFx0XHRcdGVhc2luZzogalF1ZXJ5LmVhc2luZy5fZGVmYXVsdFxuXHRcdFx0fSwgb3B0aW9ucyApLFxuXHRcdFx0b3JpZ2luYWxQcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzLFxuXHRcdFx0b3JpZ2luYWxPcHRpb25zOiBvcHRpb25zLFxuXHRcdFx0c3RhcnRUaW1lOiBmeE5vdyB8fCBjcmVhdGVGeE5vdygpLFxuXHRcdFx0ZHVyYXRpb246IG9wdGlvbnMuZHVyYXRpb24sXG5cdFx0XHR0d2VlbnM6IFtdLFxuXHRcdFx0Y3JlYXRlVHdlZW46IGZ1bmN0aW9uKCBwcm9wLCBlbmQgKSB7XG5cdFx0XHRcdHZhciB0d2VlbiA9IGpRdWVyeS5Ud2VlbiggZWxlbSwgYW5pbWF0aW9uLm9wdHMsIHByb3AsIGVuZCxcblx0XHRcdFx0XHRcdGFuaW1hdGlvbi5vcHRzLnNwZWNpYWxFYXNpbmdbIHByb3AgXSB8fCBhbmltYXRpb24ub3B0cy5lYXNpbmcgKTtcblx0XHRcdFx0YW5pbWF0aW9uLnR3ZWVucy5wdXNoKCB0d2VlbiApO1xuXHRcdFx0XHRyZXR1cm4gdHdlZW47XG5cdFx0XHR9LFxuXHRcdFx0c3RvcDogZnVuY3Rpb24oIGdvdG9FbmQgKSB7XG5cdFx0XHRcdHZhciBpbmRleCA9IDAsXG5cblx0XHRcdFx0XHQvLyBJZiB3ZSBhcmUgZ29pbmcgdG8gdGhlIGVuZCwgd2Ugd2FudCB0byBydW4gYWxsIHRoZSB0d2VlbnNcblx0XHRcdFx0XHQvLyBvdGhlcndpc2Ugd2Ugc2tpcCB0aGlzIHBhcnRcblx0XHRcdFx0XHRsZW5ndGggPSBnb3RvRW5kID8gYW5pbWF0aW9uLnR3ZWVucy5sZW5ndGggOiAwO1xuXHRcdFx0XHRpZiAoIHN0b3BwZWQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH1cblx0XHRcdFx0c3RvcHBlZCA9IHRydWU7XG5cdFx0XHRcdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0XHRcdFx0YW5pbWF0aW9uLnR3ZWVuc1sgaW5kZXggXS5ydW4oIDEgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFJlc29sdmUgd2hlbiB3ZSBwbGF5ZWQgdGhlIGxhc3QgZnJhbWU7IG90aGVyd2lzZSwgcmVqZWN0XG5cdFx0XHRcdGlmICggZ290b0VuZCApIHtcblx0XHRcdFx0XHRkZWZlcnJlZC5ub3RpZnlXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgMSwgMCBdICk7XG5cdFx0XHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBnb3RvRW5kIF0gKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRkZWZlcnJlZC5yZWplY3RXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgZ290b0VuZCBdICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9XG5cdFx0fSApLFxuXHRcdHByb3BzID0gYW5pbWF0aW9uLnByb3BzO1xuXG5cdHByb3BGaWx0ZXIoIHByb3BzLCBhbmltYXRpb24ub3B0cy5zcGVjaWFsRWFzaW5nICk7XG5cblx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRyZXN1bHQgPSBBbmltYXRpb24ucHJlZmlsdGVyc1sgaW5kZXggXS5jYWxsKCBhbmltYXRpb24sIGVsZW0sIHByb3BzLCBhbmltYXRpb24ub3B0cyApO1xuXHRcdGlmICggcmVzdWx0ICkge1xuXHRcdFx0aWYgKCBpc0Z1bmN0aW9uKCByZXN1bHQuc3RvcCApICkge1xuXHRcdFx0XHRqUXVlcnkuX3F1ZXVlSG9va3MoIGFuaW1hdGlvbi5lbGVtLCBhbmltYXRpb24ub3B0cy5xdWV1ZSApLnN0b3AgPVxuXHRcdFx0XHRcdHJlc3VsdC5zdG9wLmJpbmQoIHJlc3VsdCApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9XG5cdH1cblxuXHRqUXVlcnkubWFwKCBwcm9wcywgY3JlYXRlVHdlZW4sIGFuaW1hdGlvbiApO1xuXG5cdGlmICggaXNGdW5jdGlvbiggYW5pbWF0aW9uLm9wdHMuc3RhcnQgKSApIHtcblx0XHRhbmltYXRpb24ub3B0cy5zdGFydC5jYWxsKCBlbGVtLCBhbmltYXRpb24gKTtcblx0fVxuXG5cdC8vIEF0dGFjaCBjYWxsYmFja3MgZnJvbSBvcHRpb25zXG5cdGFuaW1hdGlvblxuXHRcdC5wcm9ncmVzcyggYW5pbWF0aW9uLm9wdHMucHJvZ3Jlc3MgKVxuXHRcdC5kb25lKCBhbmltYXRpb24ub3B0cy5kb25lLCBhbmltYXRpb24ub3B0cy5jb21wbGV0ZSApXG5cdFx0LmZhaWwoIGFuaW1hdGlvbi5vcHRzLmZhaWwgKVxuXHRcdC5hbHdheXMoIGFuaW1hdGlvbi5vcHRzLmFsd2F5cyApO1xuXG5cdGpRdWVyeS5meC50aW1lcihcblx0XHRqUXVlcnkuZXh0ZW5kKCB0aWNrLCB7XG5cdFx0XHRlbGVtOiBlbGVtLFxuXHRcdFx0YW5pbTogYW5pbWF0aW9uLFxuXHRcdFx0cXVldWU6IGFuaW1hdGlvbi5vcHRzLnF1ZXVlXG5cdFx0fSApXG5cdCk7XG5cblx0cmV0dXJuIGFuaW1hdGlvbjtcbn1cblxualF1ZXJ5LkFuaW1hdGlvbiA9IGpRdWVyeS5leHRlbmQoIEFuaW1hdGlvbiwge1xuXG5cdHR3ZWVuZXJzOiB7XG5cdFx0XCIqXCI6IFsgZnVuY3Rpb24oIHByb3AsIHZhbHVlICkge1xuXHRcdFx0dmFyIHR3ZWVuID0gdGhpcy5jcmVhdGVUd2VlbiggcHJvcCwgdmFsdWUgKTtcblx0XHRcdGFkanVzdENTUyggdHdlZW4uZWxlbSwgcHJvcCwgcmNzc051bS5leGVjKCB2YWx1ZSApLCB0d2VlbiApO1xuXHRcdFx0cmV0dXJuIHR3ZWVuO1xuXHRcdH0gXVxuXHR9LFxuXG5cdHR3ZWVuZXI6IGZ1bmN0aW9uKCBwcm9wcywgY2FsbGJhY2sgKSB7XG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBwcm9wcyApICkge1xuXHRcdFx0Y2FsbGJhY2sgPSBwcm9wcztcblx0XHRcdHByb3BzID0gWyBcIipcIiBdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRwcm9wcyA9IHByb3BzLm1hdGNoKCBybm90aHRtbHdoaXRlICk7XG5cdFx0fVxuXG5cdFx0dmFyIHByb3AsXG5cdFx0XHRpbmRleCA9IDAsXG5cdFx0XHRsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cblx0XHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdFx0cHJvcCA9IHByb3BzWyBpbmRleCBdO1xuXHRcdFx0QW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0gPSBBbmltYXRpb24udHdlZW5lcnNbIHByb3AgXSB8fCBbXTtcblx0XHRcdEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdLnVuc2hpZnQoIGNhbGxiYWNrICk7XG5cdFx0fVxuXHR9LFxuXG5cdHByZWZpbHRlcnM6IFsgZGVmYXVsdFByZWZpbHRlciBdLFxuXG5cdHByZWZpbHRlcjogZnVuY3Rpb24oIGNhbGxiYWNrLCBwcmVwZW5kICkge1xuXHRcdGlmICggcHJlcGVuZCApIHtcblx0XHRcdEFuaW1hdGlvbi5wcmVmaWx0ZXJzLnVuc2hpZnQoIGNhbGxiYWNrICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdEFuaW1hdGlvbi5wcmVmaWx0ZXJzLnB1c2goIGNhbGxiYWNrICk7XG5cdFx0fVxuXHR9XG59ICk7XG5cbmpRdWVyeS5zcGVlZCA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBmbiApIHtcblx0dmFyIG9wdCA9IHNwZWVkICYmIHR5cGVvZiBzcGVlZCA9PT0gXCJvYmplY3RcIiA/IGpRdWVyeS5leHRlbmQoIHt9LCBzcGVlZCApIDoge1xuXHRcdGNvbXBsZXRlOiBmbiB8fCAhZm4gJiYgZWFzaW5nIHx8XG5cdFx0XHRpc0Z1bmN0aW9uKCBzcGVlZCApICYmIHNwZWVkLFxuXHRcdGR1cmF0aW9uOiBzcGVlZCxcblx0XHRlYXNpbmc6IGZuICYmIGVhc2luZyB8fCBlYXNpbmcgJiYgIWlzRnVuY3Rpb24oIGVhc2luZyApICYmIGVhc2luZ1xuXHR9O1xuXG5cdC8vIEdvIHRvIHRoZSBlbmQgc3RhdGUgaWYgZnggYXJlIG9mZlxuXHRpZiAoIGpRdWVyeS5meC5vZmYgKSB7XG5cdFx0b3B0LmR1cmF0aW9uID0gMDtcblxuXHR9IGVsc2Uge1xuXHRcdGlmICggdHlwZW9mIG9wdC5kdXJhdGlvbiAhPT0gXCJudW1iZXJcIiApIHtcblx0XHRcdGlmICggb3B0LmR1cmF0aW9uIGluIGpRdWVyeS5meC5zcGVlZHMgKSB7XG5cdFx0XHRcdG9wdC5kdXJhdGlvbiA9IGpRdWVyeS5meC5zcGVlZHNbIG9wdC5kdXJhdGlvbiBdO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvcHQuZHVyYXRpb24gPSBqUXVlcnkuZnguc3BlZWRzLl9kZWZhdWx0O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIE5vcm1hbGl6ZSBvcHQucXVldWUgLSB0cnVlL3VuZGVmaW5lZC9udWxsIC0+IFwiZnhcIlxuXHRpZiAoIG9wdC5xdWV1ZSA9PSBudWxsIHx8IG9wdC5xdWV1ZSA9PT0gdHJ1ZSApIHtcblx0XHRvcHQucXVldWUgPSBcImZ4XCI7XG5cdH1cblxuXHQvLyBRdWV1ZWluZ1xuXHRvcHQub2xkID0gb3B0LmNvbXBsZXRlO1xuXG5cdG9wdC5jb21wbGV0ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdGlmICggaXNGdW5jdGlvbiggb3B0Lm9sZCApICkge1xuXHRcdFx0b3B0Lm9sZC5jYWxsKCB0aGlzICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBvcHQucXVldWUgKSB7XG5cdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgb3B0LnF1ZXVlICk7XG5cdFx0fVxuXHR9O1xuXG5cdHJldHVybiBvcHQ7XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGZhZGVUbzogZnVuY3Rpb24oIHNwZWVkLCB0bywgZWFzaW5nLCBjYWxsYmFjayApIHtcblxuXHRcdC8vIFNob3cgYW55IGhpZGRlbiBlbGVtZW50cyBhZnRlciBzZXR0aW5nIG9wYWNpdHkgdG8gMFxuXHRcdHJldHVybiB0aGlzLmZpbHRlciggaXNIaWRkZW5XaXRoaW5UcmVlICkuY3NzKCBcIm9wYWNpdHlcIiwgMCApLnNob3coKVxuXG5cdFx0XHQvLyBBbmltYXRlIHRvIHRoZSB2YWx1ZSBzcGVjaWZpZWRcblx0XHRcdC5lbmQoKS5hbmltYXRlKCB7IG9wYWNpdHk6IHRvIH0sIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdH0sXG5cdGFuaW1hdGU6IGZ1bmN0aW9uKCBwcm9wLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHtcblx0XHR2YXIgZW1wdHkgPSBqUXVlcnkuaXNFbXB0eU9iamVjdCggcHJvcCApLFxuXHRcdFx0b3B0YWxsID0galF1ZXJ5LnNwZWVkKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApLFxuXHRcdFx0ZG9BbmltYXRpb24gPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHQvLyBPcGVyYXRlIG9uIGEgY29weSBvZiBwcm9wIHNvIHBlci1wcm9wZXJ0eSBlYXNpbmcgd29uJ3QgYmUgbG9zdFxuXHRcdFx0XHR2YXIgYW5pbSA9IEFuaW1hdGlvbiggdGhpcywgalF1ZXJ5LmV4dGVuZCgge30sIHByb3AgKSwgb3B0YWxsICk7XG5cblx0XHRcdFx0Ly8gRW1wdHkgYW5pbWF0aW9ucywgb3IgZmluaXNoaW5nIHJlc29sdmVzIGltbWVkaWF0ZWx5XG5cdFx0XHRcdGlmICggZW1wdHkgfHwgZGF0YVByaXYuZ2V0KCB0aGlzLCBcImZpbmlzaFwiICkgKSB7XG5cdFx0XHRcdFx0YW5pbS5zdG9wKCB0cnVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRkb0FuaW1hdGlvbi5maW5pc2ggPSBkb0FuaW1hdGlvbjtcblxuXHRcdHJldHVybiBlbXB0eSB8fCBvcHRhbGwucXVldWUgPT09IGZhbHNlID9cblx0XHRcdHRoaXMuZWFjaCggZG9BbmltYXRpb24gKSA6XG5cdFx0XHR0aGlzLnF1ZXVlKCBvcHRhbGwucXVldWUsIGRvQW5pbWF0aW9uICk7XG5cdH0sXG5cdHN0b3A6IGZ1bmN0aW9uKCB0eXBlLCBjbGVhclF1ZXVlLCBnb3RvRW5kICkge1xuXHRcdHZhciBzdG9wUXVldWUgPSBmdW5jdGlvbiggaG9va3MgKSB7XG5cdFx0XHR2YXIgc3RvcCA9IGhvb2tzLnN0b3A7XG5cdFx0XHRkZWxldGUgaG9va3Muc3RvcDtcblx0XHRcdHN0b3AoIGdvdG9FbmQgKTtcblx0XHR9O1xuXG5cdFx0aWYgKCB0eXBlb2YgdHlwZSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGdvdG9FbmQgPSBjbGVhclF1ZXVlO1xuXHRcdFx0Y2xlYXJRdWV1ZSA9IHR5cGU7XG5cdFx0XHR0eXBlID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRpZiAoIGNsZWFyUXVldWUgJiYgdHlwZSAhPT0gZmFsc2UgKSB7XG5cdFx0XHR0aGlzLnF1ZXVlKCB0eXBlIHx8IFwiZnhcIiwgW10gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBkZXF1ZXVlID0gdHJ1ZSxcblx0XHRcdFx0aW5kZXggPSB0eXBlICE9IG51bGwgJiYgdHlwZSArIFwicXVldWVIb29rc1wiLFxuXHRcdFx0XHR0aW1lcnMgPSBqUXVlcnkudGltZXJzLFxuXHRcdFx0XHRkYXRhID0gZGF0YVByaXYuZ2V0KCB0aGlzICk7XG5cblx0XHRcdGlmICggaW5kZXggKSB7XG5cdFx0XHRcdGlmICggZGF0YVsgaW5kZXggXSAmJiBkYXRhWyBpbmRleCBdLnN0b3AgKSB7XG5cdFx0XHRcdFx0c3RvcFF1ZXVlKCBkYXRhWyBpbmRleCBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZvciAoIGluZGV4IGluIGRhdGEgKSB7XG5cdFx0XHRcdFx0aWYgKCBkYXRhWyBpbmRleCBdICYmIGRhdGFbIGluZGV4IF0uc3RvcCAmJiBycnVuLnRlc3QoIGluZGV4ICkgKSB7XG5cdFx0XHRcdFx0XHRzdG9wUXVldWUoIGRhdGFbIGluZGV4IF0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Zm9yICggaW5kZXggPSB0aW1lcnMubGVuZ3RoOyBpbmRleC0tOyApIHtcblx0XHRcdFx0aWYgKCB0aW1lcnNbIGluZGV4IF0uZWxlbSA9PT0gdGhpcyAmJlxuXHRcdFx0XHRcdCggdHlwZSA9PSBudWxsIHx8IHRpbWVyc1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlwZSApICkge1xuXG5cdFx0XHRcdFx0dGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCggZ290b0VuZCApO1xuXHRcdFx0XHRcdGRlcXVldWUgPSBmYWxzZTtcblx0XHRcdFx0XHR0aW1lcnMuc3BsaWNlKCBpbmRleCwgMSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN0YXJ0IHRoZSBuZXh0IGluIHRoZSBxdWV1ZSBpZiB0aGUgbGFzdCBzdGVwIHdhc24ndCBmb3JjZWQuXG5cdFx0XHQvLyBUaW1lcnMgY3VycmVudGx5IHdpbGwgY2FsbCB0aGVpciBjb21wbGV0ZSBjYWxsYmFja3MsIHdoaWNoXG5cdFx0XHQvLyB3aWxsIGRlcXVldWUgYnV0IG9ubHkgaWYgdGhleSB3ZXJlIGdvdG9FbmQuXG5cdFx0XHRpZiAoIGRlcXVldWUgfHwgIWdvdG9FbmQgKSB7XG5cdFx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXHRmaW5pc2g6IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdGlmICggdHlwZSAhPT0gZmFsc2UgKSB7XG5cdFx0XHR0eXBlID0gdHlwZSB8fCBcImZ4XCI7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGluZGV4LFxuXHRcdFx0XHRkYXRhID0gZGF0YVByaXYuZ2V0KCB0aGlzICksXG5cdFx0XHRcdHF1ZXVlID0gZGF0YVsgdHlwZSArIFwicXVldWVcIiBdLFxuXHRcdFx0XHRob29rcyA9IGRhdGFbIHR5cGUgKyBcInF1ZXVlSG9va3NcIiBdLFxuXHRcdFx0XHR0aW1lcnMgPSBqUXVlcnkudGltZXJzLFxuXHRcdFx0XHRsZW5ndGggPSBxdWV1ZSA/IHF1ZXVlLmxlbmd0aCA6IDA7XG5cblx0XHRcdC8vIEVuYWJsZSBmaW5pc2hpbmcgZmxhZyBvbiBwcml2YXRlIGRhdGFcblx0XHRcdGRhdGEuZmluaXNoID0gdHJ1ZTtcblxuXHRcdFx0Ly8gRW1wdHkgdGhlIHF1ZXVlIGZpcnN0XG5cdFx0XHRqUXVlcnkucXVldWUoIHRoaXMsIHR5cGUsIFtdICk7XG5cblx0XHRcdGlmICggaG9va3MgJiYgaG9va3Muc3RvcCApIHtcblx0XHRcdFx0aG9va3Muc3RvcC5jYWxsKCB0aGlzLCB0cnVlICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIExvb2sgZm9yIGFueSBhY3RpdmUgYW5pbWF0aW9ucywgYW5kIGZpbmlzaCB0aGVtXG5cdFx0XHRmb3IgKCBpbmRleCA9IHRpbWVycy5sZW5ndGg7IGluZGV4LS07ICkge1xuXHRcdFx0XHRpZiAoIHRpbWVyc1sgaW5kZXggXS5lbGVtID09PSB0aGlzICYmIHRpbWVyc1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlwZSApIHtcblx0XHRcdFx0XHR0aW1lcnNbIGluZGV4IF0uYW5pbS5zdG9wKCB0cnVlICk7XG5cdFx0XHRcdFx0dGltZXJzLnNwbGljZSggaW5kZXgsIDEgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBMb29rIGZvciBhbnkgYW5pbWF0aW9ucyBpbiB0aGUgb2xkIHF1ZXVlIGFuZCBmaW5pc2ggdGhlbVxuXHRcdFx0Zm9yICggaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRcdFx0aWYgKCBxdWV1ZVsgaW5kZXggXSAmJiBxdWV1ZVsgaW5kZXggXS5maW5pc2ggKSB7XG5cdFx0XHRcdFx0cXVldWVbIGluZGV4IF0uZmluaXNoLmNhbGwoIHRoaXMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBUdXJuIG9mZiBmaW5pc2hpbmcgZmxhZ1xuXHRcdFx0ZGVsZXRlIGRhdGEuZmluaXNoO1xuXHRcdH0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZWFjaCggWyBcInRvZ2dsZVwiLCBcInNob3dcIiwgXCJoaWRlXCIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7XG5cdHZhciBjc3NGbiA9IGpRdWVyeS5mblsgbmFtZSBdO1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4gc3BlZWQgPT0gbnVsbCB8fCB0eXBlb2Ygc3BlZWQgPT09IFwiYm9vbGVhblwiID9cblx0XHRcdGNzc0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSA6XG5cdFx0XHR0aGlzLmFuaW1hdGUoIGdlbkZ4KCBuYW1lLCB0cnVlICksIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdH07XG59ICk7XG5cbi8vIEdlbmVyYXRlIHNob3J0Y3V0cyBmb3IgY3VzdG9tIGFuaW1hdGlvbnNcbmpRdWVyeS5lYWNoKCB7XG5cdHNsaWRlRG93bjogZ2VuRngoIFwic2hvd1wiICksXG5cdHNsaWRlVXA6IGdlbkZ4KCBcImhpZGVcIiApLFxuXHRzbGlkZVRvZ2dsZTogZ2VuRngoIFwidG9nZ2xlXCIgKSxcblx0ZmFkZUluOiB7IG9wYWNpdHk6IFwic2hvd1wiIH0sXG5cdGZhZGVPdXQ6IHsgb3BhY2l0eTogXCJoaWRlXCIgfSxcblx0ZmFkZVRvZ2dsZTogeyBvcGFjaXR5OiBcInRvZ2dsZVwiIH1cbn0sIGZ1bmN0aW9uKCBuYW1lLCBwcm9wcyApIHtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIHRoaXMuYW5pbWF0ZSggcHJvcHMsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdH07XG59ICk7XG5cbmpRdWVyeS50aW1lcnMgPSBbXTtcbmpRdWVyeS5meC50aWNrID0gZnVuY3Rpb24oKSB7XG5cdHZhciB0aW1lcixcblx0XHRpID0gMCxcblx0XHR0aW1lcnMgPSBqUXVlcnkudGltZXJzO1xuXG5cdGZ4Tm93ID0gRGF0ZS5ub3coKTtcblxuXHRmb3IgKCA7IGkgPCB0aW1lcnMubGVuZ3RoOyBpKysgKSB7XG5cdFx0dGltZXIgPSB0aW1lcnNbIGkgXTtcblxuXHRcdC8vIFJ1biB0aGUgdGltZXIgYW5kIHNhZmVseSByZW1vdmUgaXQgd2hlbiBkb25lIChhbGxvd2luZyBmb3IgZXh0ZXJuYWwgcmVtb3ZhbClcblx0XHRpZiAoICF0aW1lcigpICYmIHRpbWVyc1sgaSBdID09PSB0aW1lciApIHtcblx0XHRcdHRpbWVycy5zcGxpY2UoIGktLSwgMSApO1xuXHRcdH1cblx0fVxuXG5cdGlmICggIXRpbWVycy5sZW5ndGggKSB7XG5cdFx0alF1ZXJ5LmZ4LnN0b3AoKTtcblx0fVxuXHRmeE5vdyA9IHVuZGVmaW5lZDtcbn07XG5cbmpRdWVyeS5meC50aW1lciA9IGZ1bmN0aW9uKCB0aW1lciApIHtcblx0alF1ZXJ5LnRpbWVycy5wdXNoKCB0aW1lciApO1xuXHRqUXVlcnkuZnguc3RhcnQoKTtcbn07XG5cbmpRdWVyeS5meC5pbnRlcnZhbCA9IDEzO1xualF1ZXJ5LmZ4LnN0YXJ0ID0gZnVuY3Rpb24oKSB7XG5cdGlmICggaW5Qcm9ncmVzcyApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRpblByb2dyZXNzID0gdHJ1ZTtcblx0c2NoZWR1bGUoKTtcbn07XG5cbmpRdWVyeS5meC5zdG9wID0gZnVuY3Rpb24oKSB7XG5cdGluUHJvZ3Jlc3MgPSBudWxsO1xufTtcblxualF1ZXJ5LmZ4LnNwZWVkcyA9IHtcblx0c2xvdzogNjAwLFxuXHRmYXN0OiAyMDAsXG5cblx0Ly8gRGVmYXVsdCBzcGVlZFxuXHRfZGVmYXVsdDogNDAwXG59O1xuXG5cbi8vIEJhc2VkIG9mZiBvZiB0aGUgcGx1Z2luIGJ5IENsaW50IEhlbGZlcnMsIHdpdGggcGVybWlzc2lvbi5cbi8vIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDEwMDMyNDAxNDc0Ny9odHRwOi8vYmxpbmRzaWduYWxzLmNvbS9pbmRleC5waHAvMjAwOS8wNy9qcXVlcnktZGVsYXkvXG5qUXVlcnkuZm4uZGVsYXkgPSBmdW5jdGlvbiggdGltZSwgdHlwZSApIHtcblx0dGltZSA9IGpRdWVyeS5meCA/IGpRdWVyeS5meC5zcGVlZHNbIHRpbWUgXSB8fCB0aW1lIDogdGltZTtcblx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXG5cdHJldHVybiB0aGlzLnF1ZXVlKCB0eXBlLCBmdW5jdGlvbiggbmV4dCwgaG9va3MgKSB7XG5cdFx0dmFyIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCggbmV4dCwgdGltZSApO1xuXHRcdGhvb2tzLnN0b3AgPSBmdW5jdGlvbigpIHtcblx0XHRcdHdpbmRvdy5jbGVhclRpbWVvdXQoIHRpbWVvdXQgKTtcblx0XHR9O1xuXHR9ICk7XG59O1xuXG5cbiggZnVuY3Rpb24oKSB7XG5cdHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiaW5wdXRcIiApLFxuXHRcdHNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwic2VsZWN0XCIgKSxcblx0XHRvcHQgPSBzZWxlY3QuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwib3B0aW9uXCIgKSApO1xuXG5cdGlucHV0LnR5cGUgPSBcImNoZWNrYm94XCI7XG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMyBvbmx5XG5cdC8vIERlZmF1bHQgdmFsdWUgZm9yIGEgY2hlY2tib3ggc2hvdWxkIGJlIFwib25cIlxuXHRzdXBwb3J0LmNoZWNrT24gPSBpbnB1dC52YWx1ZSAhPT0gXCJcIjtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0Ly8gTXVzdCBhY2Nlc3Mgc2VsZWN0ZWRJbmRleCB0byBtYWtlIGRlZmF1bHQgb3B0aW9ucyBzZWxlY3Rcblx0c3VwcG9ydC5vcHRTZWxlY3RlZCA9IG9wdC5zZWxlY3RlZDtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0Ly8gQW4gaW5wdXQgbG9zZXMgaXRzIHZhbHVlIGFmdGVyIGJlY29taW5nIGEgcmFkaW9cblx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImlucHV0XCIgKTtcblx0aW5wdXQudmFsdWUgPSBcInRcIjtcblx0aW5wdXQudHlwZSA9IFwicmFkaW9cIjtcblx0c3VwcG9ydC5yYWRpb1ZhbHVlID0gaW5wdXQudmFsdWUgPT09IFwidFwiO1xufSApKCk7XG5cblxudmFyIGJvb2xIb29rLFxuXHRhdHRySGFuZGxlID0galF1ZXJ5LmV4cHIuYXR0ckhhbmRsZTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRhdHRyOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgalF1ZXJ5LmF0dHIsIG5hbWUsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSApO1xuXHR9LFxuXG5cdHJlbW92ZUF0dHI6IGZ1bmN0aW9uKCBuYW1lICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0alF1ZXJ5LnJlbW92ZUF0dHIoIHRoaXMsIG5hbWUgKTtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXHRhdHRyOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7XG5cdFx0dmFyIHJldCwgaG9va3MsXG5cdFx0XHRuVHlwZSA9IGVsZW0ubm9kZVR5cGU7XG5cblx0XHQvLyBEb24ndCBnZXQvc2V0IGF0dHJpYnV0ZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5vZGVzXG5cdFx0aWYgKCBuVHlwZSA9PT0gMyB8fCBuVHlwZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBGYWxsYmFjayB0byBwcm9wIHdoZW4gYXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZFxuXHRcdGlmICggdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlID09PSBcInVuZGVmaW5lZFwiICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5wcm9wKCBlbGVtLCBuYW1lLCB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdC8vIEF0dHJpYnV0ZSBob29rcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgbG93ZXJjYXNlIHZlcnNpb25cblx0XHQvLyBHcmFiIG5lY2Vzc2FyeSBob29rIGlmIG9uZSBpcyBkZWZpbmVkXG5cdFx0aWYgKCBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7XG5cdFx0XHRob29rcyA9IGpRdWVyeS5hdHRySG9va3NbIG5hbWUudG9Mb3dlckNhc2UoKSBdIHx8XG5cdFx0XHRcdCggalF1ZXJ5LmV4cHIubWF0Y2guYm9vbC50ZXN0KCBuYW1lICkgPyBib29sSG9vayA6IHVuZGVmaW5lZCApO1xuXHRcdH1cblxuXHRcdGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdGlmICggdmFsdWUgPT09IG51bGwgKSB7XG5cdFx0XHRcdGpRdWVyeS5yZW1vdmVBdHRyKCBlbGVtLCBuYW1lICk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBob29rcyAmJiBcInNldFwiIGluIGhvb2tzICYmXG5cdFx0XHRcdCggcmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgbmFtZSApICkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblxuXHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIHZhbHVlICsgXCJcIiApO1xuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyAmJiAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApICkgIT09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblxuXHRcdHJldCA9IGpRdWVyeS5maW5kLmF0dHIoIGVsZW0sIG5hbWUgKTtcblxuXHRcdC8vIE5vbi1leGlzdGVudCBhdHRyaWJ1dGVzIHJldHVybiBudWxsLCB3ZSBub3JtYWxpemUgdG8gdW5kZWZpbmVkXG5cdFx0cmV0dXJuIHJldCA9PSBudWxsID8gdW5kZWZpbmVkIDogcmV0O1xuXHR9LFxuXG5cdGF0dHJIb29rczoge1xuXHRcdHR5cGU6IHtcblx0XHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdFx0XHRpZiAoICFzdXBwb3J0LnJhZGlvVmFsdWUgJiYgdmFsdWUgPT09IFwicmFkaW9cIiAmJlxuXHRcdFx0XHRcdG5vZGVOYW1lKCBlbGVtLCBcImlucHV0XCIgKSApIHtcblx0XHRcdFx0XHR2YXIgdmFsID0gZWxlbS52YWx1ZTtcblx0XHRcdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggXCJ0eXBlXCIsIHZhbHVlICk7XG5cdFx0XHRcdFx0aWYgKCB2YWwgKSB7XG5cdFx0XHRcdFx0XHRlbGVtLnZhbHVlID0gdmFsO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0cmVtb3ZlQXR0cjogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdHZhciBuYW1lLFxuXHRcdFx0aSA9IDAsXG5cblx0XHRcdC8vIEF0dHJpYnV0ZSBuYW1lcyBjYW4gY29udGFpbiBub24tSFRNTCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnNcblx0XHRcdC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2F0dHJpYnV0ZXMtMlxuXHRcdFx0YXR0ck5hbWVzID0gdmFsdWUgJiYgdmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKTtcblxuXHRcdGlmICggYXR0ck5hbWVzICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHR3aGlsZSAoICggbmFtZSA9IGF0dHJOYW1lc1sgaSsrIF0gKSApIHtcblx0XHRcdFx0ZWxlbS5yZW1vdmVBdHRyaWJ1dGUoIG5hbWUgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn0gKTtcblxuLy8gSG9va3MgZm9yIGJvb2xlYW4gYXR0cmlidXRlc1xuYm9vbEhvb2sgPSB7XG5cdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBuYW1lICkge1xuXHRcdGlmICggdmFsdWUgPT09IGZhbHNlICkge1xuXG5cdFx0XHQvLyBSZW1vdmUgYm9vbGVhbiBhdHRyaWJ1dGVzIHdoZW4gc2V0IHRvIGZhbHNlXG5cdFx0XHRqUXVlcnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggbmFtZSwgbmFtZSApO1xuXHRcdH1cblx0XHRyZXR1cm4gbmFtZTtcblx0fVxufTtcblxualF1ZXJ5LmVhY2goIGpRdWVyeS5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKCAvXFx3Ky9nICksIGZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXHR2YXIgZ2V0dGVyID0gYXR0ckhhbmRsZVsgbmFtZSBdIHx8IGpRdWVyeS5maW5kLmF0dHI7XG5cblx0YXR0ckhhbmRsZVsgbmFtZSBdID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdHZhciByZXQsIGhhbmRsZSxcblx0XHRcdGxvd2VyY2FzZU5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG5cblx0XHRpZiAoICFpc1hNTCApIHtcblxuXHRcdFx0Ly8gQXZvaWQgYW4gaW5maW5pdGUgbG9vcCBieSB0ZW1wb3JhcmlseSByZW1vdmluZyB0aGlzIGZ1bmN0aW9uIGZyb20gdGhlIGdldHRlclxuXHRcdFx0aGFuZGxlID0gYXR0ckhhbmRsZVsgbG93ZXJjYXNlTmFtZSBdO1xuXHRcdFx0YXR0ckhhbmRsZVsgbG93ZXJjYXNlTmFtZSBdID0gcmV0O1xuXHRcdFx0cmV0ID0gZ2V0dGVyKCBlbGVtLCBuYW1lLCBpc1hNTCApICE9IG51bGwgP1xuXHRcdFx0XHRsb3dlcmNhc2VOYW1lIDpcblx0XHRcdFx0bnVsbDtcblx0XHRcdGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXSA9IGhhbmRsZTtcblx0XHR9XG5cdFx0cmV0dXJuIHJldDtcblx0fTtcbn0gKTtcblxuXG5cblxudmFyIHJmb2N1c2FibGUgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLFxuXHRyY2xpY2thYmxlID0gL14oPzphfGFyZWEpJC9pO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHByb3A6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBqUXVlcnkucHJvcCwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7XG5cdH0sXG5cblx0cmVtb3ZlUHJvcDogZnVuY3Rpb24oIG5hbWUgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRkZWxldGUgdGhpc1sgalF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lIF07XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0cHJvcDogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkge1xuXHRcdHZhciByZXQsIGhvb2tzLFxuXHRcdFx0blR5cGUgPSBlbGVtLm5vZGVUeXBlO1xuXG5cdFx0Ly8gRG9uJ3QgZ2V0L3NldCBwcm9wZXJ0aWVzIG9uIHRleHQsIGNvbW1lbnQgYW5kIGF0dHJpYnV0ZSBub2Rlc1xuXHRcdGlmICggblR5cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7XG5cblx0XHRcdC8vIEZpeCBuYW1lIGFuZCBhdHRhY2ggaG9va3Ncblx0XHRcdG5hbWUgPSBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWU7XG5cdFx0XHRob29rcyA9IGpRdWVyeS5wcm9wSG9va3NbIG5hbWUgXTtcblx0XHR9XG5cblx0XHRpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRpZiAoIGhvb2tzICYmIFwic2V0XCIgaW4gaG9va3MgJiZcblx0XHRcdFx0KCByZXQgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBuYW1lICkgKSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gKCBlbGVtWyBuYW1lIF0gPSB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyAmJiAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApICkgIT09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblxuXHRcdHJldHVybiBlbGVtWyBuYW1lIF07XG5cdH0sXG5cblx0cHJvcEhvb2tzOiB7XG5cdFx0dGFiSW5kZXg6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seVxuXHRcdFx0XHQvLyBlbGVtLnRhYkluZGV4IGRvZXNuJ3QgYWx3YXlzIHJldHVybiB0aGVcblx0XHRcdFx0Ly8gY29ycmVjdCB2YWx1ZSB3aGVuIGl0IGhhc24ndCBiZWVuIGV4cGxpY2l0bHkgc2V0XG5cdFx0XHRcdC8vIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE0MTExNjIzMzM0Ny9odHRwOi8vZmx1aWRwcm9qZWN0Lm9yZy9ibG9nLzIwMDgvMDEvMDkvZ2V0dGluZy1zZXR0aW5nLWFuZC1yZW1vdmluZy10YWJpbmRleC12YWx1ZXMtd2l0aC1qYXZhc2NyaXB0L1xuXHRcdFx0XHQvLyBVc2UgcHJvcGVyIGF0dHJpYnV0ZSByZXRyaWV2YWwoIzEyMDcyKVxuXHRcdFx0XHR2YXIgdGFiaW5kZXggPSBqUXVlcnkuZmluZC5hdHRyKCBlbGVtLCBcInRhYmluZGV4XCIgKTtcblxuXHRcdFx0XHRpZiAoIHRhYmluZGV4ICkge1xuXHRcdFx0XHRcdHJldHVybiBwYXJzZUludCggdGFiaW5kZXgsIDEwICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0cmZvY3VzYWJsZS50ZXN0KCBlbGVtLm5vZGVOYW1lICkgfHxcblx0XHRcdFx0XHRyY2xpY2thYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSAmJlxuXHRcdFx0XHRcdGVsZW0uaHJlZlxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gMDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiAtMTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0cHJvcEZpeDoge1xuXHRcdFwiZm9yXCI6IFwiaHRtbEZvclwiLFxuXHRcdFwiY2xhc3NcIjogXCJjbGFzc05hbWVcIlxuXHR9XG59ICk7XG5cbi8vIFN1cHBvcnQ6IElFIDw9MTEgb25seVxuLy8gQWNjZXNzaW5nIHRoZSBzZWxlY3RlZEluZGV4IHByb3BlcnR5XG4vLyBmb3JjZXMgdGhlIGJyb3dzZXIgdG8gcmVzcGVjdCBzZXR0aW5nIHNlbGVjdGVkXG4vLyBvbiB0aGUgb3B0aW9uXG4vLyBUaGUgZ2V0dGVyIGVuc3VyZXMgYSBkZWZhdWx0IG9wdGlvbiBpcyBzZWxlY3RlZFxuLy8gd2hlbiBpbiBhbiBvcHRncm91cFxuLy8gZXNsaW50IHJ1bGUgXCJuby11bnVzZWQtZXhwcmVzc2lvbnNcIiBpcyBkaXNhYmxlZCBmb3IgdGhpcyBjb2RlXG4vLyBzaW5jZSBpdCBjb25zaWRlcnMgc3VjaCBhY2Nlc3Npb25zIG5vb3BcbmlmICggIXN1cHBvcnQub3B0U2VsZWN0ZWQgKSB7XG5cdGpRdWVyeS5wcm9wSG9va3Muc2VsZWN0ZWQgPSB7XG5cdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdFx0LyogZXNsaW50IG5vLXVudXNlZC1leHByZXNzaW9uczogXCJvZmZcIiAqL1xuXG5cdFx0XHR2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlO1xuXHRcdFx0aWYgKCBwYXJlbnQgJiYgcGFyZW50LnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHBhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9LFxuXHRcdHNldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdC8qIGVzbGludCBuby11bnVzZWQtZXhwcmVzc2lvbnM6IFwib2ZmXCIgKi9cblxuXHRcdFx0dmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTtcblx0XHRcdGlmICggcGFyZW50ICkge1xuXHRcdFx0XHRwYXJlbnQuc2VsZWN0ZWRJbmRleDtcblxuXHRcdFx0XHRpZiAoIHBhcmVudC5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRcdHBhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH07XG59XG5cbmpRdWVyeS5lYWNoKCBbXG5cdFwidGFiSW5kZXhcIixcblx0XCJyZWFkT25seVwiLFxuXHRcIm1heExlbmd0aFwiLFxuXHRcImNlbGxTcGFjaW5nXCIsXG5cdFwiY2VsbFBhZGRpbmdcIixcblx0XCJyb3dTcGFuXCIsXG5cdFwiY29sU3BhblwiLFxuXHRcInVzZU1hcFwiLFxuXHRcImZyYW1lQm9yZGVyXCIsXG5cdFwiY29udGVudEVkaXRhYmxlXCJcbl0sIGZ1bmN0aW9uKCkge1xuXHRqUXVlcnkucHJvcEZpeFsgdGhpcy50b0xvd2VyQ2FzZSgpIF0gPSB0aGlzO1xufSApO1xuXG5cblxuXG5cdC8vIFN0cmlwIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlIGFjY29yZGluZyB0byBIVE1MIHNwZWNcblx0Ly8gaHR0cHM6Ly9pbmZyYS5zcGVjLndoYXR3Zy5vcmcvI3N0cmlwLWFuZC1jb2xsYXBzZS1hc2NpaS13aGl0ZXNwYWNlXG5cdGZ1bmN0aW9uIHN0cmlwQW5kQ29sbGFwc2UoIHZhbHVlICkge1xuXHRcdHZhciB0b2tlbnMgPSB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdO1xuXHRcdHJldHVybiB0b2tlbnMuam9pbiggXCIgXCIgKTtcblx0fVxuXG5cbmZ1bmN0aW9uIGdldENsYXNzKCBlbGVtICkge1xuXHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUgJiYgZWxlbS5nZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIiApIHx8IFwiXCI7XG59XG5cbmZ1bmN0aW9uIGNsYXNzZXNUb0FycmF5KCB2YWx1ZSApIHtcblx0aWYgKCBBcnJheS5pc0FycmF5KCB2YWx1ZSApICkge1xuXHRcdHJldHVybiB2YWx1ZTtcblx0fVxuXHRpZiAoIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4gdmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTtcblx0fVxuXHRyZXR1cm4gW107XG59XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0YWRkQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHR2YXIgY2xhc3NlcywgZWxlbSwgY3VyLCBjdXJWYWx1ZSwgY2xhenosIGosIGZpbmFsVmFsdWUsXG5cdFx0XHRpID0gMDtcblxuXHRcdGlmICggaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBqICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5hZGRDbGFzcyggdmFsdWUuY2FsbCggdGhpcywgaiwgZ2V0Q2xhc3MoIHRoaXMgKSApICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0Y2xhc3NlcyA9IGNsYXNzZXNUb0FycmF5KCB2YWx1ZSApO1xuXG5cdFx0aWYgKCBjbGFzc2VzLmxlbmd0aCApIHtcblx0XHRcdHdoaWxlICggKCBlbGVtID0gdGhpc1sgaSsrIF0gKSApIHtcblx0XHRcdFx0Y3VyVmFsdWUgPSBnZXRDbGFzcyggZWxlbSApO1xuXHRcdFx0XHRjdXIgPSBlbGVtLm5vZGVUeXBlID09PSAxICYmICggXCIgXCIgKyBzdHJpcEFuZENvbGxhcHNlKCBjdXJWYWx1ZSApICsgXCIgXCIgKTtcblxuXHRcdFx0XHRpZiAoIGN1ciApIHtcblx0XHRcdFx0XHRqID0gMDtcblx0XHRcdFx0XHR3aGlsZSAoICggY2xhenogPSBjbGFzc2VzWyBqKysgXSApICkge1xuXHRcdFx0XHRcdFx0aWYgKCBjdXIuaW5kZXhPZiggXCIgXCIgKyBjbGF6eiArIFwiIFwiICkgPCAwICkge1xuXHRcdFx0XHRcdFx0XHRjdXIgKz0gY2xhenogKyBcIiBcIjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBPbmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZvaWQgdW5uZWVkZWQgcmVuZGVyaW5nLlxuXHRcdFx0XHRcdGZpbmFsVmFsdWUgPSBzdHJpcEFuZENvbGxhcHNlKCBjdXIgKTtcblx0XHRcdFx0XHRpZiAoIGN1clZhbHVlICE9PSBmaW5hbFZhbHVlICkge1xuXHRcdFx0XHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIiwgZmluYWxWYWx1ZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdHJlbW92ZUNsYXNzOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dmFyIGNsYXNzZXMsIGVsZW0sIGN1ciwgY3VyVmFsdWUsIGNsYXp6LCBqLCBmaW5hbFZhbHVlLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRpZiAoIGlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaiApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkucmVtb3ZlQ2xhc3MoIHZhbHVlLmNhbGwoIHRoaXMsIGosIGdldENsYXNzKCB0aGlzICkgKSApO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdGlmICggIWFyZ3VtZW50cy5sZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5hdHRyKCBcImNsYXNzXCIsIFwiXCIgKTtcblx0XHR9XG5cblx0XHRjbGFzc2VzID0gY2xhc3Nlc1RvQXJyYXkoIHZhbHVlICk7XG5cblx0XHRpZiAoIGNsYXNzZXMubGVuZ3RoICkge1xuXHRcdFx0d2hpbGUgKCAoIGVsZW0gPSB0aGlzWyBpKysgXSApICkge1xuXHRcdFx0XHRjdXJWYWx1ZSA9IGdldENsYXNzKCBlbGVtICk7XG5cblx0XHRcdFx0Ly8gVGhpcyBleHByZXNzaW9uIGlzIGhlcmUgZm9yIGJldHRlciBjb21wcmVzc2liaWxpdHkgKHNlZSBhZGRDbGFzcylcblx0XHRcdFx0Y3VyID0gZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAoIFwiIFwiICsgc3RyaXBBbmRDb2xsYXBzZSggY3VyVmFsdWUgKSArIFwiIFwiICk7XG5cblx0XHRcdFx0aWYgKCBjdXIgKSB7XG5cdFx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdFx0d2hpbGUgKCAoIGNsYXp6ID0gY2xhc3Nlc1sgaisrIF0gKSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gUmVtb3ZlICphbGwqIGluc3RhbmNlc1xuXHRcdFx0XHRcdFx0d2hpbGUgKCBjdXIuaW5kZXhPZiggXCIgXCIgKyBjbGF6eiArIFwiIFwiICkgPiAtMSApIHtcblx0XHRcdFx0XHRcdFx0Y3VyID0gY3VyLnJlcGxhY2UoIFwiIFwiICsgY2xhenogKyBcIiBcIiwgXCIgXCIgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBPbmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZvaWQgdW5uZWVkZWQgcmVuZGVyaW5nLlxuXHRcdFx0XHRcdGZpbmFsVmFsdWUgPSBzdHJpcEFuZENvbGxhcHNlKCBjdXIgKTtcblx0XHRcdFx0XHRpZiAoIGN1clZhbHVlICE9PSBmaW5hbFZhbHVlICkge1xuXHRcdFx0XHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIiwgZmluYWxWYWx1ZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdHRvZ2dsZUNsYXNzOiBmdW5jdGlvbiggdmFsdWUsIHN0YXRlVmFsICkge1xuXHRcdHZhciB0eXBlID0gdHlwZW9mIHZhbHVlLFxuXHRcdFx0aXNWYWxpZFZhbHVlID0gdHlwZSA9PT0gXCJzdHJpbmdcIiB8fCBBcnJheS5pc0FycmF5KCB2YWx1ZSApO1xuXG5cdFx0aWYgKCB0eXBlb2Ygc3RhdGVWYWwgPT09IFwiYm9vbGVhblwiICYmIGlzVmFsaWRWYWx1ZSApIHtcblx0XHRcdHJldHVybiBzdGF0ZVZhbCA/IHRoaXMuYWRkQ2xhc3MoIHZhbHVlICkgOiB0aGlzLnJlbW92ZUNsYXNzKCB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdGlmICggaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS50b2dnbGVDbGFzcyhcblx0XHRcdFx0XHR2YWx1ZS5jYWxsKCB0aGlzLCBpLCBnZXRDbGFzcyggdGhpcyApLCBzdGF0ZVZhbCApLFxuXHRcdFx0XHRcdHN0YXRlVmFsXG5cdFx0XHRcdCk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgY2xhc3NOYW1lLCBpLCBzZWxmLCBjbGFzc05hbWVzO1xuXG5cdFx0XHRpZiAoIGlzVmFsaWRWYWx1ZSApIHtcblxuXHRcdFx0XHQvLyBUb2dnbGUgaW5kaXZpZHVhbCBjbGFzcyBuYW1lc1xuXHRcdFx0XHRpID0gMDtcblx0XHRcdFx0c2VsZiA9IGpRdWVyeSggdGhpcyApO1xuXHRcdFx0XHRjbGFzc05hbWVzID0gY2xhc3Nlc1RvQXJyYXkoIHZhbHVlICk7XG5cblx0XHRcdFx0d2hpbGUgKCAoIGNsYXNzTmFtZSA9IGNsYXNzTmFtZXNbIGkrKyBdICkgKSB7XG5cblx0XHRcdFx0XHQvLyBDaGVjayBlYWNoIGNsYXNzTmFtZSBnaXZlbiwgc3BhY2Ugc2VwYXJhdGVkIGxpc3Rcblx0XHRcdFx0XHRpZiAoIHNlbGYuaGFzQ2xhc3MoIGNsYXNzTmFtZSApICkge1xuXHRcdFx0XHRcdFx0c2VsZi5yZW1vdmVDbGFzcyggY2xhc3NOYW1lICk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHNlbGYuYWRkQ2xhc3MoIGNsYXNzTmFtZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHQvLyBUb2dnbGUgd2hvbGUgY2xhc3MgbmFtZVxuXHRcdFx0fSBlbHNlIGlmICggdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRcdFx0Y2xhc3NOYW1lID0gZ2V0Q2xhc3MoIHRoaXMgKTtcblx0XHRcdFx0aWYgKCBjbGFzc05hbWUgKSB7XG5cblx0XHRcdFx0XHQvLyBTdG9yZSBjbGFzc05hbWUgaWYgc2V0XG5cdFx0XHRcdFx0ZGF0YVByaXYuc2V0KCB0aGlzLCBcIl9fY2xhc3NOYW1lX19cIiwgY2xhc3NOYW1lICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBJZiB0aGUgZWxlbWVudCBoYXMgYSBjbGFzcyBuYW1lIG9yIGlmIHdlJ3JlIHBhc3NlZCBgZmFsc2VgLFxuXHRcdFx0XHQvLyB0aGVuIHJlbW92ZSB0aGUgd2hvbGUgY2xhc3NuYW1lIChpZiB0aGVyZSB3YXMgb25lLCB0aGUgYWJvdmUgc2F2ZWQgaXQpLlxuXHRcdFx0XHQvLyBPdGhlcndpc2UgYnJpbmcgYmFjayB3aGF0ZXZlciB3YXMgcHJldmlvdXNseSBzYXZlZCAoaWYgYW55dGhpbmcpLFxuXHRcdFx0XHQvLyBmYWxsaW5nIGJhY2sgdG8gdGhlIGVtcHR5IHN0cmluZyBpZiBub3RoaW5nIHdhcyBzdG9yZWQuXG5cdFx0XHRcdGlmICggdGhpcy5zZXRBdHRyaWJ1dGUgKSB7XG5cdFx0XHRcdFx0dGhpcy5zZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIixcblx0XHRcdFx0XHRcdGNsYXNzTmFtZSB8fCB2YWx1ZSA9PT0gZmFsc2UgP1xuXHRcdFx0XHRcdFx0XCJcIiA6XG5cdFx0XHRcdFx0XHRkYXRhUHJpdi5nZXQoIHRoaXMsIFwiX19jbGFzc05hbWVfX1wiICkgfHwgXCJcIlxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0aGFzQ2xhc3M6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR2YXIgY2xhc3NOYW1lLCBlbGVtLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRjbGFzc05hbWUgPSBcIiBcIiArIHNlbGVjdG9yICsgXCIgXCI7XG5cdFx0d2hpbGUgKCAoIGVsZW0gPSB0aGlzWyBpKysgXSApICkge1xuXHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRcdCggXCIgXCIgKyBzdHJpcEFuZENvbGxhcHNlKCBnZXRDbGFzcyggZWxlbSApICkgKyBcIiBcIiApLmluZGV4T2YoIGNsYXNzTmFtZSApID4gLTEgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59ICk7XG5cblxuXG5cbnZhciBycmV0dXJuID0gL1xcci9nO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHZhbDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHZhciBob29rcywgcmV0LCB2YWx1ZUlzRnVuY3Rpb24sXG5cdFx0XHRlbGVtID0gdGhpc1sgMCBdO1xuXG5cdFx0aWYgKCAhYXJndW1lbnRzLmxlbmd0aCApIHtcblx0XHRcdGlmICggZWxlbSApIHtcblx0XHRcdFx0aG9va3MgPSBqUXVlcnkudmFsSG9va3NbIGVsZW0udHlwZSBdIHx8XG5cdFx0XHRcdFx0alF1ZXJ5LnZhbEhvb2tzWyBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTtcblxuXHRcdFx0XHRpZiAoIGhvb2tzICYmXG5cdFx0XHRcdFx0XCJnZXRcIiBpbiBob29rcyAmJlxuXHRcdFx0XHRcdCggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBcInZhbHVlXCIgKSApICE9PSB1bmRlZmluZWRcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldCA9IGVsZW0udmFsdWU7XG5cblx0XHRcdFx0Ly8gSGFuZGxlIG1vc3QgY29tbW9uIHN0cmluZyBjYXNlc1xuXHRcdFx0XHRpZiAoIHR5cGVvZiByZXQgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJldC5yZXBsYWNlKCBycmV0dXJuLCBcIlwiICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBIYW5kbGUgY2FzZXMgd2hlcmUgdmFsdWUgaXMgbnVsbC91bmRlZiBvciBudW1iZXJcblx0XHRcdFx0cmV0dXJuIHJldCA9PSBudWxsID8gXCJcIiA6IHJldDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHZhbHVlSXNGdW5jdGlvbiA9IGlzRnVuY3Rpb24oIHZhbHVlICk7XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdHZhciB2YWw7XG5cblx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSAhPT0gMSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHZhbHVlSXNGdW5jdGlvbiApIHtcblx0XHRcdFx0dmFsID0gdmFsdWUuY2FsbCggdGhpcywgaSwgalF1ZXJ5KCB0aGlzICkudmFsKCkgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHZhbCA9IHZhbHVlO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBUcmVhdCBudWxsL3VuZGVmaW5lZCBhcyBcIlwiOyBjb252ZXJ0IG51bWJlcnMgdG8gc3RyaW5nXG5cdFx0XHRpZiAoIHZhbCA9PSBudWxsICkge1xuXHRcdFx0XHR2YWwgPSBcIlwiO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCB0eXBlb2YgdmFsID09PSBcIm51bWJlclwiICkge1xuXHRcdFx0XHR2YWwgKz0gXCJcIjtcblxuXHRcdFx0fSBlbHNlIGlmICggQXJyYXkuaXNBcnJheSggdmFsICkgKSB7XG5cdFx0XHRcdHZhbCA9IGpRdWVyeS5tYXAoIHZhbCwgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0XHRcdHJldHVybiB2YWx1ZSA9PSBudWxsID8gXCJcIiA6IHZhbHVlICsgXCJcIjtcblx0XHRcdFx0fSApO1xuXHRcdFx0fVxuXG5cdFx0XHRob29rcyA9IGpRdWVyeS52YWxIb29rc1sgdGhpcy50eXBlIF0gfHwgalF1ZXJ5LnZhbEhvb2tzWyB0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTtcblxuXHRcdFx0Ly8gSWYgc2V0IHJldHVybnMgdW5kZWZpbmVkLCBmYWxsIGJhY2sgdG8gbm9ybWFsIHNldHRpbmdcblx0XHRcdGlmICggIWhvb2tzIHx8ICEoIFwic2V0XCIgaW4gaG9va3MgKSB8fCBob29rcy5zZXQoIHRoaXMsIHZhbCwgXCJ2YWx1ZVwiICkgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0dGhpcy52YWx1ZSA9IHZhbDtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXHR2YWxIb29rczoge1xuXHRcdG9wdGlvbjoge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdFx0XHR2YXIgdmFsID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgXCJ2YWx1ZVwiICk7XG5cdFx0XHRcdHJldHVybiB2YWwgIT0gbnVsbCA/XG5cdFx0XHRcdFx0dmFsIDpcblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9MTAgLSAxMSBvbmx5XG5cdFx0XHRcdFx0Ly8gb3B0aW9uLnRleHQgdGhyb3dzIGV4Y2VwdGlvbnMgKCMxNDY4NiwgIzE0ODU4KVxuXHRcdFx0XHRcdC8vIFN0cmlwIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlXG5cdFx0XHRcdFx0Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jc3RyaXAtYW5kLWNvbGxhcHNlLXdoaXRlc3BhY2Vcblx0XHRcdFx0XHRzdHJpcEFuZENvbGxhcHNlKCBqUXVlcnkudGV4dCggZWxlbSApICk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRzZWxlY3Q6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciB2YWx1ZSwgb3B0aW9uLCBpLFxuXHRcdFx0XHRcdG9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsXG5cdFx0XHRcdFx0aW5kZXggPSBlbGVtLnNlbGVjdGVkSW5kZXgsXG5cdFx0XHRcdFx0b25lID0gZWxlbS50eXBlID09PSBcInNlbGVjdC1vbmVcIixcblx0XHRcdFx0XHR2YWx1ZXMgPSBvbmUgPyBudWxsIDogW10sXG5cdFx0XHRcdFx0bWF4ID0gb25lID8gaW5kZXggKyAxIDogb3B0aW9ucy5sZW5ndGg7XG5cblx0XHRcdFx0aWYgKCBpbmRleCA8IDAgKSB7XG5cdFx0XHRcdFx0aSA9IG1heDtcblxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGkgPSBvbmUgPyBpbmRleCA6IDA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBMb29wIHRocm91Z2ggYWxsIHRoZSBzZWxlY3RlZCBvcHRpb25zXG5cdFx0XHRcdGZvciAoIDsgaSA8IG1heDsgaSsrICkge1xuXHRcdFx0XHRcdG9wdGlvbiA9IG9wdGlvbnNbIGkgXTtcblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG5cdFx0XHRcdFx0Ly8gSUU4LTkgZG9lc24ndCB1cGRhdGUgc2VsZWN0ZWQgYWZ0ZXIgZm9ybSByZXNldCAoIzI1NTEpXG5cdFx0XHRcdFx0aWYgKCAoIG9wdGlvbi5zZWxlY3RlZCB8fCBpID09PSBpbmRleCApICYmXG5cblx0XHRcdFx0XHRcdFx0Ly8gRG9uJ3QgcmV0dXJuIG9wdGlvbnMgdGhhdCBhcmUgZGlzYWJsZWQgb3IgaW4gYSBkaXNhYmxlZCBvcHRncm91cFxuXHRcdFx0XHRcdFx0XHQhb3B0aW9uLmRpc2FibGVkICYmXG5cdFx0XHRcdFx0XHRcdCggIW9wdGlvbi5wYXJlbnROb2RlLmRpc2FibGVkIHx8XG5cdFx0XHRcdFx0XHRcdFx0IW5vZGVOYW1lKCBvcHRpb24ucGFyZW50Tm9kZSwgXCJvcHRncm91cFwiICkgKSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gR2V0IHRoZSBzcGVjaWZpYyB2YWx1ZSBmb3IgdGhlIG9wdGlvblxuXHRcdFx0XHRcdFx0dmFsdWUgPSBqUXVlcnkoIG9wdGlvbiApLnZhbCgpO1xuXG5cdFx0XHRcdFx0XHQvLyBXZSBkb24ndCBuZWVkIGFuIGFycmF5IGZvciBvbmUgc2VsZWN0c1xuXHRcdFx0XHRcdFx0aWYgKCBvbmUgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gTXVsdGktU2VsZWN0cyByZXR1cm4gYW4gYXJyYXlcblx0XHRcdFx0XHRcdHZhbHVlcy5wdXNoKCB2YWx1ZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiB2YWx1ZXM7XG5cdFx0XHR9LFxuXG5cdFx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcblx0XHRcdFx0dmFyIG9wdGlvblNldCwgb3B0aW9uLFxuXHRcdFx0XHRcdG9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsXG5cdFx0XHRcdFx0dmFsdWVzID0galF1ZXJ5Lm1ha2VBcnJheSggdmFsdWUgKSxcblx0XHRcdFx0XHRpID0gb3B0aW9ucy5sZW5ndGg7XG5cblx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0b3B0aW9uID0gb3B0aW9uc1sgaSBdO1xuXG5cdFx0XHRcdFx0LyogZXNsaW50LWRpc2FibGUgbm8tY29uZC1hc3NpZ24gKi9cblxuXHRcdFx0XHRcdGlmICggb3B0aW9uLnNlbGVjdGVkID1cblx0XHRcdFx0XHRcdGpRdWVyeS5pbkFycmF5KCBqUXVlcnkudmFsSG9va3Mub3B0aW9uLmdldCggb3B0aW9uICksIHZhbHVlcyApID4gLTFcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdG9wdGlvblNldCA9IHRydWU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0LyogZXNsaW50LWVuYWJsZSBuby1jb25kLWFzc2lnbiAqL1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gRm9yY2UgYnJvd3NlcnMgdG8gYmVoYXZlIGNvbnNpc3RlbnRseSB3aGVuIG5vbi1tYXRjaGluZyB2YWx1ZSBpcyBzZXRcblx0XHRcdFx0aWYgKCAhb3B0aW9uU2V0ICkge1xuXHRcdFx0XHRcdGVsZW0uc2VsZWN0ZWRJbmRleCA9IC0xO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB2YWx1ZXM7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59ICk7XG5cbi8vIFJhZGlvcyBhbmQgY2hlY2tib3hlcyBnZXR0ZXIvc2V0dGVyXG5qUXVlcnkuZWFjaCggWyBcInJhZGlvXCIsIFwiY2hlY2tib3hcIiBdLCBmdW5jdGlvbigpIHtcblx0alF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0gPSB7XG5cdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XG5cdFx0XHRpZiAoIEFycmF5LmlzQXJyYXkoIHZhbHVlICkgKSB7XG5cdFx0XHRcdHJldHVybiAoIGVsZW0uY2hlY2tlZCA9IGpRdWVyeS5pbkFycmF5KCBqUXVlcnkoIGVsZW0gKS52YWwoKSwgdmFsdWUgKSA+IC0xICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRpZiAoICFzdXBwb3J0LmNoZWNrT24gKSB7XG5cdFx0alF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0uZ2V0ID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoIFwidmFsdWVcIiApID09PSBudWxsID8gXCJvblwiIDogZWxlbS52YWx1ZTtcblx0XHR9O1xuXHR9XG59ICk7XG5cblxuXG5cbi8vIFJldHVybiBqUXVlcnkgZm9yIGF0dHJpYnV0ZXMtb25seSBpbmNsdXNpb25cblxuXG5zdXBwb3J0LmZvY3VzaW4gPSBcIm9uZm9jdXNpblwiIGluIHdpbmRvdztcblxuXG52YXIgcmZvY3VzTW9ycGggPSAvXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8sXG5cdHN0b3BQcm9wYWdhdGlvbkNhbGxiYWNrID0gZnVuY3Rpb24oIGUgKSB7XG5cdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcblx0fTtcblxualF1ZXJ5LmV4dGVuZCggalF1ZXJ5LmV2ZW50LCB7XG5cblx0dHJpZ2dlcjogZnVuY3Rpb24oIGV2ZW50LCBkYXRhLCBlbGVtLCBvbmx5SGFuZGxlcnMgKSB7XG5cblx0XHR2YXIgaSwgY3VyLCB0bXAsIGJ1YmJsZVR5cGUsIG9udHlwZSwgaGFuZGxlLCBzcGVjaWFsLCBsYXN0RWxlbWVudCxcblx0XHRcdGV2ZW50UGF0aCA9IFsgZWxlbSB8fCBkb2N1bWVudCBdLFxuXHRcdFx0dHlwZSA9IGhhc093bi5jYWxsKCBldmVudCwgXCJ0eXBlXCIgKSA/IGV2ZW50LnR5cGUgOiBldmVudCxcblx0XHRcdG5hbWVzcGFjZXMgPSBoYXNPd24uY2FsbCggZXZlbnQsIFwibmFtZXNwYWNlXCIgKSA/IGV2ZW50Lm5hbWVzcGFjZS5zcGxpdCggXCIuXCIgKSA6IFtdO1xuXG5cdFx0Y3VyID0gbGFzdEVsZW1lbnQgPSB0bXAgPSBlbGVtID0gZWxlbSB8fCBkb2N1bWVudDtcblxuXHRcdC8vIERvbid0IGRvIGV2ZW50cyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzXG5cdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT09IDggKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gZm9jdXMvYmx1ciBtb3JwaHMgdG8gZm9jdXNpbi9vdXQ7IGVuc3VyZSB3ZSdyZSBub3QgZmlyaW5nIHRoZW0gcmlnaHQgbm93XG5cdFx0aWYgKCByZm9jdXNNb3JwaC50ZXN0KCB0eXBlICsgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCApICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICggdHlwZS5pbmRleE9mKCBcIi5cIiApID4gLTEgKSB7XG5cblx0XHRcdC8vIE5hbWVzcGFjZWQgdHJpZ2dlcjsgY3JlYXRlIGEgcmVnZXhwIHRvIG1hdGNoIGV2ZW50IHR5cGUgaW4gaGFuZGxlKClcblx0XHRcdG5hbWVzcGFjZXMgPSB0eXBlLnNwbGl0KCBcIi5cIiApO1xuXHRcdFx0dHlwZSA9IG5hbWVzcGFjZXMuc2hpZnQoKTtcblx0XHRcdG5hbWVzcGFjZXMuc29ydCgpO1xuXHRcdH1cblx0XHRvbnR5cGUgPSB0eXBlLmluZGV4T2YoIFwiOlwiICkgPCAwICYmIFwib25cIiArIHR5cGU7XG5cblx0XHQvLyBDYWxsZXIgY2FuIHBhc3MgaW4gYSBqUXVlcnkuRXZlbnQgb2JqZWN0LCBPYmplY3QsIG9yIGp1c3QgYW4gZXZlbnQgdHlwZSBzdHJpbmdcblx0XHRldmVudCA9IGV2ZW50WyBqUXVlcnkuZXhwYW5kbyBdID9cblx0XHRcdGV2ZW50IDpcblx0XHRcdG5ldyBqUXVlcnkuRXZlbnQoIHR5cGUsIHR5cGVvZiBldmVudCA9PT0gXCJvYmplY3RcIiAmJiBldmVudCApO1xuXG5cdFx0Ly8gVHJpZ2dlciBiaXRtYXNrOiAmIDEgZm9yIG5hdGl2ZSBoYW5kbGVyczsgJiAyIGZvciBqUXVlcnkgKGFsd2F5cyB0cnVlKVxuXHRcdGV2ZW50LmlzVHJpZ2dlciA9IG9ubHlIYW5kbGVycyA/IDIgOiAzO1xuXHRcdGV2ZW50Lm5hbWVzcGFjZSA9IG5hbWVzcGFjZXMuam9pbiggXCIuXCIgKTtcblx0XHRldmVudC5ybmFtZXNwYWNlID0gZXZlbnQubmFtZXNwYWNlID9cblx0XHRcdG5ldyBSZWdFeHAoIFwiKF58XFxcXC4pXCIgKyBuYW1lc3BhY2VzLmpvaW4oIFwiXFxcXC4oPzouKlxcXFwufClcIiApICsgXCIoXFxcXC58JClcIiApIDpcblx0XHRcdG51bGw7XG5cblx0XHQvLyBDbGVhbiB1cCB0aGUgZXZlbnQgaW4gY2FzZSBpdCBpcyBiZWluZyByZXVzZWRcblx0XHRldmVudC5yZXN1bHQgPSB1bmRlZmluZWQ7XG5cdFx0aWYgKCAhZXZlbnQudGFyZ2V0ICkge1xuXHRcdFx0ZXZlbnQudGFyZ2V0ID0gZWxlbTtcblx0XHR9XG5cblx0XHQvLyBDbG9uZSBhbnkgaW5jb21pbmcgZGF0YSBhbmQgcHJlcGVuZCB0aGUgZXZlbnQsIGNyZWF0aW5nIHRoZSBoYW5kbGVyIGFyZyBsaXN0XG5cdFx0ZGF0YSA9IGRhdGEgPT0gbnVsbCA/XG5cdFx0XHRbIGV2ZW50IF0gOlxuXHRcdFx0alF1ZXJ5Lm1ha2VBcnJheSggZGF0YSwgWyBldmVudCBdICk7XG5cblx0XHQvLyBBbGxvdyBzcGVjaWFsIGV2ZW50cyB0byBkcmF3IG91dHNpZGUgdGhlIGxpbmVzXG5cdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cdFx0aWYgKCAhb25seUhhbmRsZXJzICYmIHNwZWNpYWwudHJpZ2dlciAmJiBzcGVjaWFsLnRyaWdnZXIuYXBwbHkoIGVsZW0sIGRhdGEgKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gRGV0ZXJtaW5lIGV2ZW50IHByb3BhZ2F0aW9uIHBhdGggaW4gYWR2YW5jZSwgcGVyIFczQyBldmVudHMgc3BlYyAoIzk5NTEpXG5cdFx0Ly8gQnViYmxlIHVwIHRvIGRvY3VtZW50LCB0aGVuIHRvIHdpbmRvdzsgd2F0Y2ggZm9yIGEgZ2xvYmFsIG93bmVyRG9jdW1lbnQgdmFyICgjOTcyNClcblx0XHRpZiAoICFvbmx5SGFuZGxlcnMgJiYgIXNwZWNpYWwubm9CdWJibGUgJiYgIWlzV2luZG93KCBlbGVtICkgKSB7XG5cblx0XHRcdGJ1YmJsZVR5cGUgPSBzcGVjaWFsLmRlbGVnYXRlVHlwZSB8fCB0eXBlO1xuXHRcdFx0aWYgKCAhcmZvY3VzTW9ycGgudGVzdCggYnViYmxlVHlwZSArIHR5cGUgKSApIHtcblx0XHRcdFx0Y3VyID0gY3VyLnBhcmVudE5vZGU7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKCA7IGN1cjsgY3VyID0gY3VyLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdGV2ZW50UGF0aC5wdXNoKCBjdXIgKTtcblx0XHRcdFx0dG1wID0gY3VyO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBPbmx5IGFkZCB3aW5kb3cgaWYgd2UgZ290IHRvIGRvY3VtZW50IChlLmcuLCBub3QgcGxhaW4gb2JqIG9yIGRldGFjaGVkIERPTSlcblx0XHRcdGlmICggdG1wID09PSAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudCApICkge1xuXHRcdFx0XHRldmVudFBhdGgucHVzaCggdG1wLmRlZmF1bHRWaWV3IHx8IHRtcC5wYXJlbnRXaW5kb3cgfHwgd2luZG93ICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gRmlyZSBoYW5kbGVycyBvbiB0aGUgZXZlbnQgcGF0aFxuXHRcdGkgPSAwO1xuXHRcdHdoaWxlICggKCBjdXIgPSBldmVudFBhdGhbIGkrKyBdICkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cdFx0XHRsYXN0RWxlbWVudCA9IGN1cjtcblx0XHRcdGV2ZW50LnR5cGUgPSBpID4gMSA/XG5cdFx0XHRcdGJ1YmJsZVR5cGUgOlxuXHRcdFx0XHRzcGVjaWFsLmJpbmRUeXBlIHx8IHR5cGU7XG5cblx0XHRcdC8vIGpRdWVyeSBoYW5kbGVyXG5cdFx0XHRoYW5kbGUgPSAoIGRhdGFQcml2LmdldCggY3VyLCBcImV2ZW50c1wiICkgfHwge30gKVsgZXZlbnQudHlwZSBdICYmXG5cdFx0XHRcdGRhdGFQcml2LmdldCggY3VyLCBcImhhbmRsZVwiICk7XG5cdFx0XHRpZiAoIGhhbmRsZSApIHtcblx0XHRcdFx0aGFuZGxlLmFwcGx5KCBjdXIsIGRhdGEgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTmF0aXZlIGhhbmRsZXJcblx0XHRcdGhhbmRsZSA9IG9udHlwZSAmJiBjdXJbIG9udHlwZSBdO1xuXHRcdFx0aWYgKCBoYW5kbGUgJiYgaGFuZGxlLmFwcGx5ICYmIGFjY2VwdERhdGEoIGN1ciApICkge1xuXHRcdFx0XHRldmVudC5yZXN1bHQgPSBoYW5kbGUuYXBwbHkoIGN1ciwgZGF0YSApO1xuXHRcdFx0XHRpZiAoIGV2ZW50LnJlc3VsdCA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRldmVudC50eXBlID0gdHlwZTtcblxuXHRcdC8vIElmIG5vYm9keSBwcmV2ZW50ZWQgdGhlIGRlZmF1bHQgYWN0aW9uLCBkbyBpdCBub3dcblx0XHRpZiAoICFvbmx5SGFuZGxlcnMgJiYgIWV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpICkge1xuXG5cdFx0XHRpZiAoICggIXNwZWNpYWwuX2RlZmF1bHQgfHxcblx0XHRcdFx0c3BlY2lhbC5fZGVmYXVsdC5hcHBseSggZXZlbnRQYXRoLnBvcCgpLCBkYXRhICkgPT09IGZhbHNlICkgJiZcblx0XHRcdFx0YWNjZXB0RGF0YSggZWxlbSApICkge1xuXG5cdFx0XHRcdC8vIENhbGwgYSBuYXRpdmUgRE9NIG1ldGhvZCBvbiB0aGUgdGFyZ2V0IHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgZXZlbnQuXG5cdFx0XHRcdC8vIERvbid0IGRvIGRlZmF1bHQgYWN0aW9ucyBvbiB3aW5kb3csIHRoYXQncyB3aGVyZSBnbG9iYWwgdmFyaWFibGVzIGJlICgjNjE3MClcblx0XHRcdFx0aWYgKCBvbnR5cGUgJiYgaXNGdW5jdGlvbiggZWxlbVsgdHlwZSBdICkgJiYgIWlzV2luZG93KCBlbGVtICkgKSB7XG5cblx0XHRcdFx0XHQvLyBEb24ndCByZS10cmlnZ2VyIGFuIG9uRk9PIGV2ZW50IHdoZW4gd2UgY2FsbCBpdHMgRk9PKCkgbWV0aG9kXG5cdFx0XHRcdFx0dG1wID0gZWxlbVsgb250eXBlIF07XG5cblx0XHRcdFx0XHRpZiAoIHRtcCApIHtcblx0XHRcdFx0XHRcdGVsZW1bIG9udHlwZSBdID0gbnVsbDtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBQcmV2ZW50IHJlLXRyaWdnZXJpbmcgb2YgdGhlIHNhbWUgZXZlbnQsIHNpbmNlIHdlIGFscmVhZHkgYnViYmxlZCBpdCBhYm92ZVxuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgPSB0eXBlO1xuXG5cdFx0XHRcdFx0aWYgKCBldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXHRcdFx0XHRcdFx0bGFzdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggdHlwZSwgc3RvcFByb3BhZ2F0aW9uQ2FsbGJhY2sgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRlbGVtWyB0eXBlIF0oKTtcblxuXHRcdFx0XHRcdGlmICggZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblx0XHRcdFx0XHRcdGxhc3RFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIHR5cGUsIHN0b3BQcm9wYWdhdGlvbkNhbGxiYWNrICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCA9IHVuZGVmaW5lZDtcblxuXHRcdFx0XHRcdGlmICggdG1wICkge1xuXHRcdFx0XHRcdFx0ZWxlbVsgb250eXBlIF0gPSB0bXA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGV2ZW50LnJlc3VsdDtcblx0fSxcblxuXHQvLyBQaWdneWJhY2sgb24gYSBkb25vciBldmVudCB0byBzaW11bGF0ZSBhIGRpZmZlcmVudCBvbmVcblx0Ly8gVXNlZCBvbmx5IGZvciBgZm9jdXMoaW4gfCBvdXQpYCBldmVudHNcblx0c2ltdWxhdGU6IGZ1bmN0aW9uKCB0eXBlLCBlbGVtLCBldmVudCApIHtcblx0XHR2YXIgZSA9IGpRdWVyeS5leHRlbmQoXG5cdFx0XHRuZXcgalF1ZXJ5LkV2ZW50KCksXG5cdFx0XHRldmVudCxcblx0XHRcdHtcblx0XHRcdFx0dHlwZTogdHlwZSxcblx0XHRcdFx0aXNTaW11bGF0ZWQ6IHRydWVcblx0XHRcdH1cblx0XHQpO1xuXG5cdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIGUsIG51bGwsIGVsZW0gKTtcblx0fVxuXG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblxuXHR0cmlnZ2VyOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCB0aGlzICk7XG5cdFx0fSApO1xuXHR9LFxuXHR0cmlnZ2VySGFuZGxlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7XG5cdFx0dmFyIGVsZW0gPSB0aGlzWyAwIF07XG5cdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCBlbGVtLCB0cnVlICk7XG5cdFx0fVxuXHR9XG59ICk7XG5cblxuLy8gU3VwcG9ydDogRmlyZWZveCA8PTQ0XG4vLyBGaXJlZm94IGRvZXNuJ3QgaGF2ZSBmb2N1cyhpbiB8IG91dCkgZXZlbnRzXG4vLyBSZWxhdGVkIHRpY2tldCAtIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY4Nzc4N1xuLy9cbi8vIFN1cHBvcnQ6IENocm9tZSA8PTQ4IC0gNDksIFNhZmFyaSA8PTkuMCAtIDkuMVxuLy8gZm9jdXMoaW4gfCBvdXQpIGV2ZW50cyBmaXJlIGFmdGVyIGZvY3VzICYgYmx1ciBldmVudHMsXG4vLyB3aGljaCBpcyBzcGVjIHZpb2xhdGlvbiAtIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8jZXZlbnRzLWZvY3VzZXZlbnQtZXZlbnQtb3JkZXJcbi8vIFJlbGF0ZWQgdGlja2V0IC0gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDQ5ODU3XG5pZiAoICFzdXBwb3J0LmZvY3VzaW4gKSB7XG5cdGpRdWVyeS5lYWNoKCB7IGZvY3VzOiBcImZvY3VzaW5cIiwgYmx1cjogXCJmb2N1c291dFwiIH0sIGZ1bmN0aW9uKCBvcmlnLCBmaXggKSB7XG5cblx0XHQvLyBBdHRhY2ggYSBzaW5nbGUgY2FwdHVyaW5nIGhhbmRsZXIgb24gdGhlIGRvY3VtZW50IHdoaWxlIHNvbWVvbmUgd2FudHMgZm9jdXNpbi9mb2N1c291dFxuXHRcdHZhciBoYW5kbGVyID0gZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnNpbXVsYXRlKCBmaXgsIGV2ZW50LnRhcmdldCwgalF1ZXJ5LmV2ZW50LmZpeCggZXZlbnQgKSApO1xuXHRcdH07XG5cblx0XHRqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZml4IF0gPSB7XG5cdFx0XHRzZXR1cDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBkb2MgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcyxcblx0XHRcdFx0XHRhdHRhY2hlcyA9IGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXggKTtcblxuXHRcdFx0XHRpZiAoICFhdHRhY2hlcyApIHtcblx0XHRcdFx0XHRkb2MuYWRkRXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXgsICggYXR0YWNoZXMgfHwgMCApICsgMSApO1xuXHRcdFx0fSxcblx0XHRcdHRlYXJkb3duOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIGRvYyA9IHRoaXMub3duZXJEb2N1bWVudCB8fCB0aGlzLFxuXHRcdFx0XHRcdGF0dGFjaGVzID0gZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCApIC0gMTtcblxuXHRcdFx0XHRpZiAoICFhdHRhY2hlcyApIHtcblx0XHRcdFx0XHRkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApO1xuXHRcdFx0XHRcdGRhdGFQcml2LnJlbW92ZSggZG9jLCBmaXggKTtcblxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXgsIGF0dGFjaGVzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9ICk7XG59XG52YXIgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG5cbnZhciBub25jZSA9IERhdGUubm93KCk7XG5cbnZhciBycXVlcnkgPSAoIC9cXD8vICk7XG5cblxuXG4vLyBDcm9zcy1icm93c2VyIHhtbCBwYXJzaW5nXG5qUXVlcnkucGFyc2VYTUwgPSBmdW5jdGlvbiggZGF0YSApIHtcblx0dmFyIHhtbDtcblx0aWYgKCAhZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdC8vIFN1cHBvcnQ6IElFIDkgLSAxMSBvbmx5XG5cdC8vIElFIHRocm93cyBvbiBwYXJzZUZyb21TdHJpbmcgd2l0aCBpbnZhbGlkIGlucHV0LlxuXHR0cnkge1xuXHRcdHhtbCA9ICggbmV3IHdpbmRvdy5ET01QYXJzZXIoKSApLnBhcnNlRnJvbVN0cmluZyggZGF0YSwgXCJ0ZXh0L3htbFwiICk7XG5cdH0gY2F0Y2ggKCBlICkge1xuXHRcdHhtbCA9IHVuZGVmaW5lZDtcblx0fVxuXG5cdGlmICggIXhtbCB8fCB4bWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIFwicGFyc2VyZXJyb3JcIiApLmxlbmd0aCApIHtcblx0XHRqUXVlcnkuZXJyb3IoIFwiSW52YWxpZCBYTUw6IFwiICsgZGF0YSApO1xuXHR9XG5cdHJldHVybiB4bWw7XG59O1xuXG5cbnZhclxuXHRyYnJhY2tldCA9IC9cXFtcXF0kLyxcblx0ckNSTEYgPSAvXFxyP1xcbi9nLFxuXHRyc3VibWl0dGVyVHlwZXMgPSAvXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksXG5cdHJzdWJtaXR0YWJsZSA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTtcblxuZnVuY3Rpb24gYnVpbGRQYXJhbXMoIHByZWZpeCwgb2JqLCB0cmFkaXRpb25hbCwgYWRkICkge1xuXHR2YXIgbmFtZTtcblxuXHRpZiAoIEFycmF5LmlzQXJyYXkoIG9iaiApICkge1xuXG5cdFx0Ly8gU2VyaWFsaXplIGFycmF5IGl0ZW0uXG5cdFx0alF1ZXJ5LmVhY2goIG9iaiwgZnVuY3Rpb24oIGksIHYgKSB7XG5cdFx0XHRpZiAoIHRyYWRpdGlvbmFsIHx8IHJicmFja2V0LnRlc3QoIHByZWZpeCApICkge1xuXG5cdFx0XHRcdC8vIFRyZWF0IGVhY2ggYXJyYXkgaXRlbSBhcyBhIHNjYWxhci5cblx0XHRcdFx0YWRkKCBwcmVmaXgsIHYgKTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHQvLyBJdGVtIGlzIG5vbi1zY2FsYXIgKGFycmF5IG9yIG9iamVjdCksIGVuY29kZSBpdHMgbnVtZXJpYyBpbmRleC5cblx0XHRcdFx0YnVpbGRQYXJhbXMoXG5cdFx0XHRcdFx0cHJlZml4ICsgXCJbXCIgKyAoIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmIHYgIT0gbnVsbCA/IGkgOiBcIlwiICkgKyBcIl1cIixcblx0XHRcdFx0XHR2LFxuXHRcdFx0XHRcdHRyYWRpdGlvbmFsLFxuXHRcdFx0XHRcdGFkZFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHR9IGVsc2UgaWYgKCAhdHJhZGl0aW9uYWwgJiYgdG9UeXBlKCBvYmogKSA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdC8vIFNlcmlhbGl6ZSBvYmplY3QgaXRlbS5cblx0XHRmb3IgKCBuYW1lIGluIG9iaiApIHtcblx0XHRcdGJ1aWxkUGFyYW1zKCBwcmVmaXggKyBcIltcIiArIG5hbWUgKyBcIl1cIiwgb2JqWyBuYW1lIF0sIHRyYWRpdGlvbmFsLCBhZGQgKTtcblx0XHR9XG5cblx0fSBlbHNlIHtcblxuXHRcdC8vIFNlcmlhbGl6ZSBzY2FsYXIgaXRlbS5cblx0XHRhZGQoIHByZWZpeCwgb2JqICk7XG5cdH1cbn1cblxuLy8gU2VyaWFsaXplIGFuIGFycmF5IG9mIGZvcm0gZWxlbWVudHMgb3IgYSBzZXQgb2Zcbi8vIGtleS92YWx1ZXMgaW50byBhIHF1ZXJ5IHN0cmluZ1xualF1ZXJ5LnBhcmFtID0gZnVuY3Rpb24oIGEsIHRyYWRpdGlvbmFsICkge1xuXHR2YXIgcHJlZml4LFxuXHRcdHMgPSBbXSxcblx0XHRhZGQgPSBmdW5jdGlvbigga2V5LCB2YWx1ZU9yRnVuY3Rpb24gKSB7XG5cblx0XHRcdC8vIElmIHZhbHVlIGlzIGEgZnVuY3Rpb24sIGludm9rZSBpdCBhbmQgdXNlIGl0cyByZXR1cm4gdmFsdWVcblx0XHRcdHZhciB2YWx1ZSA9IGlzRnVuY3Rpb24oIHZhbHVlT3JGdW5jdGlvbiApID9cblx0XHRcdFx0dmFsdWVPckZ1bmN0aW9uKCkgOlxuXHRcdFx0XHR2YWx1ZU9yRnVuY3Rpb247XG5cblx0XHRcdHNbIHMubGVuZ3RoIF0gPSBlbmNvZGVVUklDb21wb25lbnQoIGtleSApICsgXCI9XCIgK1xuXHRcdFx0XHRlbmNvZGVVUklDb21wb25lbnQoIHZhbHVlID09IG51bGwgPyBcIlwiIDogdmFsdWUgKTtcblx0XHR9O1xuXG5cdC8vIElmIGFuIGFycmF5IHdhcyBwYXNzZWQgaW4sIGFzc3VtZSB0aGF0IGl0IGlzIGFuIGFycmF5IG9mIGZvcm0gZWxlbWVudHMuXG5cdGlmICggQXJyYXkuaXNBcnJheSggYSApIHx8ICggYS5qcXVlcnkgJiYgIWpRdWVyeS5pc1BsYWluT2JqZWN0KCBhICkgKSApIHtcblxuXHRcdC8vIFNlcmlhbGl6ZSB0aGUgZm9ybSBlbGVtZW50c1xuXHRcdGpRdWVyeS5lYWNoKCBhLCBmdW5jdGlvbigpIHtcblx0XHRcdGFkZCggdGhpcy5uYW1lLCB0aGlzLnZhbHVlICk7XG5cdFx0fSApO1xuXG5cdH0gZWxzZSB7XG5cblx0XHQvLyBJZiB0cmFkaXRpb25hbCwgZW5jb2RlIHRoZSBcIm9sZFwiIHdheSAodGhlIHdheSAxLjMuMiBvciBvbGRlclxuXHRcdC8vIGRpZCBpdCksIG90aGVyd2lzZSBlbmNvZGUgcGFyYW1zIHJlY3Vyc2l2ZWx5LlxuXHRcdGZvciAoIHByZWZpeCBpbiBhICkge1xuXHRcdFx0YnVpbGRQYXJhbXMoIHByZWZpeCwgYVsgcHJlZml4IF0sIHRyYWRpdGlvbmFsLCBhZGQgKTtcblx0XHR9XG5cdH1cblxuXHQvLyBSZXR1cm4gdGhlIHJlc3VsdGluZyBzZXJpYWxpemF0aW9uXG5cdHJldHVybiBzLmpvaW4oIFwiJlwiICk7XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHNlcmlhbGl6ZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5wYXJhbSggdGhpcy5zZXJpYWxpemVBcnJheSgpICk7XG5cdH0sXG5cdHNlcmlhbGl6ZUFycmF5OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBDYW4gYWRkIHByb3BIb29rIGZvciBcImVsZW1lbnRzXCIgdG8gZmlsdGVyIG9yIGFkZCBmb3JtIGVsZW1lbnRzXG5cdFx0XHR2YXIgZWxlbWVudHMgPSBqUXVlcnkucHJvcCggdGhpcywgXCJlbGVtZW50c1wiICk7XG5cdFx0XHRyZXR1cm4gZWxlbWVudHMgPyBqUXVlcnkubWFrZUFycmF5KCBlbGVtZW50cyApIDogdGhpcztcblx0XHR9IClcblx0XHQuZmlsdGVyKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciB0eXBlID0gdGhpcy50eXBlO1xuXG5cdFx0XHQvLyBVc2UgLmlzKCBcIjpkaXNhYmxlZFwiICkgc28gdGhhdCBmaWVsZHNldFtkaXNhYmxlZF0gd29ya3Ncblx0XHRcdHJldHVybiB0aGlzLm5hbWUgJiYgIWpRdWVyeSggdGhpcyApLmlzKCBcIjpkaXNhYmxlZFwiICkgJiZcblx0XHRcdFx0cnN1Ym1pdHRhYmxlLnRlc3QoIHRoaXMubm9kZU5hbWUgKSAmJiAhcnN1Ym1pdHRlclR5cGVzLnRlc3QoIHR5cGUgKSAmJlxuXHRcdFx0XHQoIHRoaXMuY2hlY2tlZCB8fCAhcmNoZWNrYWJsZVR5cGUudGVzdCggdHlwZSApICk7XG5cdFx0fSApXG5cdFx0Lm1hcCggZnVuY3Rpb24oIGksIGVsZW0gKSB7XG5cdFx0XHR2YXIgdmFsID0galF1ZXJ5KCB0aGlzICkudmFsKCk7XG5cblx0XHRcdGlmICggdmFsID09IG51bGwgKSB7XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIEFycmF5LmlzQXJyYXkoIHZhbCApICkge1xuXHRcdFx0XHRyZXR1cm4galF1ZXJ5Lm1hcCggdmFsLCBmdW5jdGlvbiggdmFsICkge1xuXHRcdFx0XHRcdHJldHVybiB7IG5hbWU6IGVsZW0ubmFtZSwgdmFsdWU6IHZhbC5yZXBsYWNlKCByQ1JMRiwgXCJcXHJcXG5cIiApIH07XG5cdFx0XHRcdH0gKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCBcIlxcclxcblwiICkgfTtcblx0XHR9ICkuZ2V0KCk7XG5cdH1cbn0gKTtcblxuXG52YXJcblx0cjIwID0gLyUyMC9nLFxuXHRyaGFzaCA9IC8jLiokLyxcblx0cmFudGlDYWNoZSA9IC8oWz8mXSlfPVteJl0qLyxcblx0cmhlYWRlcnMgPSAvXiguKj8pOlsgXFx0XSooW15cXHJcXG5dKikkL21nLFxuXG5cdC8vICM3NjUzLCAjODEyNSwgIzgxNTI6IGxvY2FsIHByb3RvY29sIGRldGVjdGlvblxuXHRybG9jYWxQcm90b2NvbCA9IC9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLFxuXHRybm9Db250ZW50ID0gL14oPzpHRVR8SEVBRCkkLyxcblx0cnByb3RvY29sID0gL15cXC9cXC8vLFxuXG5cdC8qIFByZWZpbHRlcnNcblx0ICogMSkgVGhleSBhcmUgdXNlZnVsIHRvIGludHJvZHVjZSBjdXN0b20gZGF0YVR5cGVzIChzZWUgYWpheC9qc29ucC5qcyBmb3IgYW4gZXhhbXBsZSlcblx0ICogMikgVGhlc2UgYXJlIGNhbGxlZDpcblx0ICogICAgLSBCRUZPUkUgYXNraW5nIGZvciBhIHRyYW5zcG9ydFxuXHQgKiAgICAtIEFGVEVSIHBhcmFtIHNlcmlhbGl6YXRpb24gKHMuZGF0YSBpcyBhIHN0cmluZyBpZiBzLnByb2Nlc3NEYXRhIGlzIHRydWUpXG5cdCAqIDMpIGtleSBpcyB0aGUgZGF0YVR5cGVcblx0ICogNCkgdGhlIGNhdGNoYWxsIHN5bWJvbCBcIipcIiBjYW4gYmUgdXNlZFxuXHQgKiA1KSBleGVjdXRpb24gd2lsbCBzdGFydCB3aXRoIHRyYW5zcG9ydCBkYXRhVHlwZSBhbmQgVEhFTiBjb250aW51ZSBkb3duIHRvIFwiKlwiIGlmIG5lZWRlZFxuXHQgKi9cblx0cHJlZmlsdGVycyA9IHt9LFxuXG5cdC8qIFRyYW5zcG9ydHMgYmluZGluZ3Ncblx0ICogMSkga2V5IGlzIHRoZSBkYXRhVHlwZVxuXHQgKiAyKSB0aGUgY2F0Y2hhbGwgc3ltYm9sIFwiKlwiIGNhbiBiZSB1c2VkXG5cdCAqIDMpIHNlbGVjdGlvbiB3aWxsIHN0YXJ0IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGdvIHRvIFwiKlwiIGlmIG5lZWRlZFxuXHQgKi9cblx0dHJhbnNwb3J0cyA9IHt9LFxuXG5cdC8vIEF2b2lkIGNvbW1lbnQtcHJvbG9nIGNoYXIgc2VxdWVuY2UgKCMxMDA5OCk7IG11c3QgYXBwZWFzZSBsaW50IGFuZCBldmFkZSBjb21wcmVzc2lvblxuXHRhbGxUeXBlcyA9IFwiKi9cIi5jb25jYXQoIFwiKlwiICksXG5cblx0Ly8gQW5jaG9yIHRhZyBmb3IgcGFyc2luZyB0aGUgZG9jdW1lbnQgb3JpZ2luXG5cdG9yaWdpbkFuY2hvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiYVwiICk7XG5cdG9yaWdpbkFuY2hvci5ocmVmID0gbG9jYXRpb24uaHJlZjtcblxuLy8gQmFzZSBcImNvbnN0cnVjdG9yXCIgZm9yIGpRdWVyeS5hamF4UHJlZmlsdGVyIGFuZCBqUXVlcnkuYWpheFRyYW5zcG9ydFxuZnVuY3Rpb24gYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBzdHJ1Y3R1cmUgKSB7XG5cblx0Ly8gZGF0YVR5cGVFeHByZXNzaW9uIGlzIG9wdGlvbmFsIGFuZCBkZWZhdWx0cyB0byBcIipcIlxuXHRyZXR1cm4gZnVuY3Rpb24oIGRhdGFUeXBlRXhwcmVzc2lvbiwgZnVuYyApIHtcblxuXHRcdGlmICggdHlwZW9mIGRhdGFUeXBlRXhwcmVzc2lvbiAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGZ1bmMgPSBkYXRhVHlwZUV4cHJlc3Npb247XG5cdFx0XHRkYXRhVHlwZUV4cHJlc3Npb24gPSBcIipcIjtcblx0XHR9XG5cblx0XHR2YXIgZGF0YVR5cGUsXG5cdFx0XHRpID0gMCxcblx0XHRcdGRhdGFUeXBlcyA9IGRhdGFUeXBlRXhwcmVzc2lvbi50b0xvd2VyQ2FzZSgpLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107XG5cblx0XHRpZiAoIGlzRnVuY3Rpb24oIGZ1bmMgKSApIHtcblxuXHRcdFx0Ly8gRm9yIGVhY2ggZGF0YVR5cGUgaW4gdGhlIGRhdGFUeXBlRXhwcmVzc2lvblxuXHRcdFx0d2hpbGUgKCAoIGRhdGFUeXBlID0gZGF0YVR5cGVzWyBpKysgXSApICkge1xuXG5cdFx0XHRcdC8vIFByZXBlbmQgaWYgcmVxdWVzdGVkXG5cdFx0XHRcdGlmICggZGF0YVR5cGVbIDAgXSA9PT0gXCIrXCIgKSB7XG5cdFx0XHRcdFx0ZGF0YVR5cGUgPSBkYXRhVHlwZS5zbGljZSggMSApIHx8IFwiKlwiO1xuXHRcdFx0XHRcdCggc3RydWN0dXJlWyBkYXRhVHlwZSBdID0gc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdICkudW5zaGlmdCggZnVuYyApO1xuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSBhcHBlbmRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQoIHN0cnVjdHVyZVsgZGF0YVR5cGUgXSA9IHN0cnVjdHVyZVsgZGF0YVR5cGUgXSB8fCBbXSApLnB1c2goIGZ1bmMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fTtcbn1cblxuLy8gQmFzZSBpbnNwZWN0aW9uIGZ1bmN0aW9uIGZvciBwcmVmaWx0ZXJzIGFuZCB0cmFuc3BvcnRzXG5mdW5jdGlvbiBpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggc3RydWN0dXJlLCBvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSICkge1xuXG5cdHZhciBpbnNwZWN0ZWQgPSB7fSxcblx0XHRzZWVraW5nVHJhbnNwb3J0ID0gKCBzdHJ1Y3R1cmUgPT09IHRyYW5zcG9ydHMgKTtcblxuXHRmdW5jdGlvbiBpbnNwZWN0KCBkYXRhVHlwZSApIHtcblx0XHR2YXIgc2VsZWN0ZWQ7XG5cdFx0aW5zcGVjdGVkWyBkYXRhVHlwZSBdID0gdHJ1ZTtcblx0XHRqUXVlcnkuZWFjaCggc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdLCBmdW5jdGlvbiggXywgcHJlZmlsdGVyT3JGYWN0b3J5ICkge1xuXHRcdFx0dmFyIGRhdGFUeXBlT3JUcmFuc3BvcnQgPSBwcmVmaWx0ZXJPckZhY3RvcnkoIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFYSFIgKTtcblx0XHRcdGlmICggdHlwZW9mIGRhdGFUeXBlT3JUcmFuc3BvcnQgPT09IFwic3RyaW5nXCIgJiZcblx0XHRcdFx0IXNlZWtpbmdUcmFuc3BvcnQgJiYgIWluc3BlY3RlZFsgZGF0YVR5cGVPclRyYW5zcG9ydCBdICkge1xuXG5cdFx0XHRcdG9wdGlvbnMuZGF0YVR5cGVzLnVuc2hpZnQoIGRhdGFUeXBlT3JUcmFuc3BvcnQgKTtcblx0XHRcdFx0aW5zcGVjdCggZGF0YVR5cGVPclRyYW5zcG9ydCApO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9IGVsc2UgaWYgKCBzZWVraW5nVHJhbnNwb3J0ICkge1xuXHRcdFx0XHRyZXR1cm4gISggc2VsZWN0ZWQgPSBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHRcdHJldHVybiBzZWxlY3RlZDtcblx0fVxuXG5cdHJldHVybiBpbnNwZWN0KCBvcHRpb25zLmRhdGFUeXBlc1sgMCBdICkgfHwgIWluc3BlY3RlZFsgXCIqXCIgXSAmJiBpbnNwZWN0KCBcIipcIiApO1xufVxuXG4vLyBBIHNwZWNpYWwgZXh0ZW5kIGZvciBhamF4IG9wdGlvbnNcbi8vIHRoYXQgdGFrZXMgXCJmbGF0XCIgb3B0aW9ucyAobm90IHRvIGJlIGRlZXAgZXh0ZW5kZWQpXG4vLyBGaXhlcyAjOTg4N1xuZnVuY3Rpb24gYWpheEV4dGVuZCggdGFyZ2V0LCBzcmMgKSB7XG5cdHZhciBrZXksIGRlZXAsXG5cdFx0ZmxhdE9wdGlvbnMgPSBqUXVlcnkuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zIHx8IHt9O1xuXG5cdGZvciAoIGtleSBpbiBzcmMgKSB7XG5cdFx0aWYgKCBzcmNbIGtleSBdICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHQoIGZsYXRPcHRpb25zWyBrZXkgXSA/IHRhcmdldCA6ICggZGVlcCB8fCAoIGRlZXAgPSB7fSApICkgKVsga2V5IF0gPSBzcmNbIGtleSBdO1xuXHRcdH1cblx0fVxuXHRpZiAoIGRlZXAgKSB7XG5cdFx0alF1ZXJ5LmV4dGVuZCggdHJ1ZSwgdGFyZ2V0LCBkZWVwICk7XG5cdH1cblxuXHRyZXR1cm4gdGFyZ2V0O1xufVxuXG4vKiBIYW5kbGVzIHJlc3BvbnNlcyB0byBhbiBhamF4IHJlcXVlc3Q6XG4gKiAtIGZpbmRzIHRoZSByaWdodCBkYXRhVHlwZSAobWVkaWF0ZXMgYmV0d2VlbiBjb250ZW50LXR5cGUgYW5kIGV4cGVjdGVkIGRhdGFUeXBlKVxuICogLSByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlXG4gKi9cbmZ1bmN0aW9uIGFqYXhIYW5kbGVSZXNwb25zZXMoIHMsIGpxWEhSLCByZXNwb25zZXMgKSB7XG5cblx0dmFyIGN0LCB0eXBlLCBmaW5hbERhdGFUeXBlLCBmaXJzdERhdGFUeXBlLFxuXHRcdGNvbnRlbnRzID0gcy5jb250ZW50cyxcblx0XHRkYXRhVHlwZXMgPSBzLmRhdGFUeXBlcztcblxuXHQvLyBSZW1vdmUgYXV0byBkYXRhVHlwZSBhbmQgZ2V0IGNvbnRlbnQtdHlwZSBpbiB0aGUgcHJvY2Vzc1xuXHR3aGlsZSAoIGRhdGFUeXBlc1sgMCBdID09PSBcIipcIiApIHtcblx0XHRkYXRhVHlwZXMuc2hpZnQoKTtcblx0XHRpZiAoIGN0ID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRjdCA9IHMubWltZVR5cGUgfHwganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoIFwiQ29udGVudC1UeXBlXCIgKTtcblx0XHR9XG5cdH1cblxuXHQvLyBDaGVjayBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBrbm93biBjb250ZW50LXR5cGVcblx0aWYgKCBjdCApIHtcblx0XHRmb3IgKCB0eXBlIGluIGNvbnRlbnRzICkge1xuXHRcdFx0aWYgKCBjb250ZW50c1sgdHlwZSBdICYmIGNvbnRlbnRzWyB0eXBlIF0udGVzdCggY3QgKSApIHtcblx0XHRcdFx0ZGF0YVR5cGVzLnVuc2hpZnQoIHR5cGUgKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgYSByZXNwb25zZSBmb3IgdGhlIGV4cGVjdGVkIGRhdGFUeXBlXG5cdGlmICggZGF0YVR5cGVzWyAwIF0gaW4gcmVzcG9uc2VzICkge1xuXHRcdGZpbmFsRGF0YVR5cGUgPSBkYXRhVHlwZXNbIDAgXTtcblx0fSBlbHNlIHtcblxuXHRcdC8vIFRyeSBjb252ZXJ0aWJsZSBkYXRhVHlwZXNcblx0XHRmb3IgKCB0eXBlIGluIHJlc3BvbnNlcyApIHtcblx0XHRcdGlmICggIWRhdGFUeXBlc1sgMCBdIHx8IHMuY29udmVydGVyc1sgdHlwZSArIFwiIFwiICsgZGF0YVR5cGVzWyAwIF0gXSApIHtcblx0XHRcdFx0ZmluYWxEYXRhVHlwZSA9IHR5cGU7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCAhZmlyc3REYXRhVHlwZSApIHtcblx0XHRcdFx0Zmlyc3REYXRhVHlwZSA9IHR5cGU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gT3IganVzdCB1c2UgZmlyc3Qgb25lXG5cdFx0ZmluYWxEYXRhVHlwZSA9IGZpbmFsRGF0YVR5cGUgfHwgZmlyc3REYXRhVHlwZTtcblx0fVxuXG5cdC8vIElmIHdlIGZvdW5kIGEgZGF0YVR5cGVcblx0Ly8gV2UgYWRkIHRoZSBkYXRhVHlwZSB0byB0aGUgbGlzdCBpZiBuZWVkZWRcblx0Ly8gYW5kIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyByZXNwb25zZVxuXHRpZiAoIGZpbmFsRGF0YVR5cGUgKSB7XG5cdFx0aWYgKCBmaW5hbERhdGFUeXBlICE9PSBkYXRhVHlwZXNbIDAgXSApIHtcblx0XHRcdGRhdGFUeXBlcy51bnNoaWZ0KCBmaW5hbERhdGFUeXBlICk7XG5cdFx0fVxuXHRcdHJldHVybiByZXNwb25zZXNbIGZpbmFsRGF0YVR5cGUgXTtcblx0fVxufVxuXG4vKiBDaGFpbiBjb252ZXJzaW9ucyBnaXZlbiB0aGUgcmVxdWVzdCBhbmQgdGhlIG9yaWdpbmFsIHJlc3BvbnNlXG4gKiBBbHNvIHNldHMgdGhlIHJlc3BvbnNlWFhYIGZpZWxkcyBvbiB0aGUganFYSFIgaW5zdGFuY2VcbiAqL1xuZnVuY3Rpb24gYWpheENvbnZlcnQoIHMsIHJlc3BvbnNlLCBqcVhIUiwgaXNTdWNjZXNzICkge1xuXHR2YXIgY29udjIsIGN1cnJlbnQsIGNvbnYsIHRtcCwgcHJldixcblx0XHRjb252ZXJ0ZXJzID0ge30sXG5cblx0XHQvLyBXb3JrIHdpdGggYSBjb3B5IG9mIGRhdGFUeXBlcyBpbiBjYXNlIHdlIG5lZWQgdG8gbW9kaWZ5IGl0IGZvciBjb252ZXJzaW9uXG5cdFx0ZGF0YVR5cGVzID0gcy5kYXRhVHlwZXMuc2xpY2UoKTtcblxuXHQvLyBDcmVhdGUgY29udmVydGVycyBtYXAgd2l0aCBsb3dlcmNhc2VkIGtleXNcblx0aWYgKCBkYXRhVHlwZXNbIDEgXSApIHtcblx0XHRmb3IgKCBjb252IGluIHMuY29udmVydGVycyApIHtcblx0XHRcdGNvbnZlcnRlcnNbIGNvbnYudG9Mb3dlckNhc2UoKSBdID0gcy5jb252ZXJ0ZXJzWyBjb252IF07XG5cdFx0fVxuXHR9XG5cblx0Y3VycmVudCA9IGRhdGFUeXBlcy5zaGlmdCgpO1xuXG5cdC8vIENvbnZlcnQgdG8gZWFjaCBzZXF1ZW50aWFsIGRhdGFUeXBlXG5cdHdoaWxlICggY3VycmVudCApIHtcblxuXHRcdGlmICggcy5yZXNwb25zZUZpZWxkc1sgY3VycmVudCBdICkge1xuXHRcdFx0anFYSFJbIHMucmVzcG9uc2VGaWVsZHNbIGN1cnJlbnQgXSBdID0gcmVzcG9uc2U7XG5cdFx0fVxuXG5cdFx0Ly8gQXBwbHkgdGhlIGRhdGFGaWx0ZXIgaWYgcHJvdmlkZWRcblx0XHRpZiAoICFwcmV2ICYmIGlzU3VjY2VzcyAmJiBzLmRhdGFGaWx0ZXIgKSB7XG5cdFx0XHRyZXNwb25zZSA9IHMuZGF0YUZpbHRlciggcmVzcG9uc2UsIHMuZGF0YVR5cGUgKTtcblx0XHR9XG5cblx0XHRwcmV2ID0gY3VycmVudDtcblx0XHRjdXJyZW50ID0gZGF0YVR5cGVzLnNoaWZ0KCk7XG5cblx0XHRpZiAoIGN1cnJlbnQgKSB7XG5cblx0XHRcdC8vIFRoZXJlJ3Mgb25seSB3b3JrIHRvIGRvIGlmIGN1cnJlbnQgZGF0YVR5cGUgaXMgbm9uLWF1dG9cblx0XHRcdGlmICggY3VycmVudCA9PT0gXCIqXCIgKSB7XG5cblx0XHRcdFx0Y3VycmVudCA9IHByZXY7XG5cblx0XHRcdC8vIENvbnZlcnQgcmVzcG9uc2UgaWYgcHJldiBkYXRhVHlwZSBpcyBub24tYXV0byBhbmQgZGlmZmVycyBmcm9tIGN1cnJlbnRcblx0XHRcdH0gZWxzZSBpZiAoIHByZXYgIT09IFwiKlwiICYmIHByZXYgIT09IGN1cnJlbnQgKSB7XG5cblx0XHRcdFx0Ly8gU2VlayBhIGRpcmVjdCBjb252ZXJ0ZXJcblx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIHByZXYgKyBcIiBcIiArIGN1cnJlbnQgXSB8fCBjb252ZXJ0ZXJzWyBcIiogXCIgKyBjdXJyZW50IF07XG5cblx0XHRcdFx0Ly8gSWYgbm9uZSBmb3VuZCwgc2VlayBhIHBhaXJcblx0XHRcdFx0aWYgKCAhY29udiApIHtcblx0XHRcdFx0XHRmb3IgKCBjb252MiBpbiBjb252ZXJ0ZXJzICkge1xuXG5cdFx0XHRcdFx0XHQvLyBJZiBjb252MiBvdXRwdXRzIGN1cnJlbnRcblx0XHRcdFx0XHRcdHRtcCA9IGNvbnYyLnNwbGl0KCBcIiBcIiApO1xuXHRcdFx0XHRcdFx0aWYgKCB0bXBbIDEgXSA9PT0gY3VycmVudCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBJZiBwcmV2IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYWNjZXB0ZWQgaW5wdXRcblx0XHRcdFx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIHByZXYgKyBcIiBcIiArIHRtcFsgMCBdIF0gfHxcblx0XHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJzWyBcIiogXCIgKyB0bXBbIDAgXSBdO1xuXHRcdFx0XHRcdFx0XHRpZiAoIGNvbnYgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBDb25kZW5zZSBlcXVpdmFsZW5jZSBjb252ZXJ0ZXJzXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBjb252ID09PSB0cnVlICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIGNvbnYyIF07XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBPdGhlcndpc2UsIGluc2VydCB0aGUgaW50ZXJtZWRpYXRlIGRhdGFUeXBlXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggY29udmVydGVyc1sgY29udjIgXSAhPT0gdHJ1ZSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnQgPSB0bXBbIDAgXTtcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFUeXBlcy51bnNoaWZ0KCB0bXBbIDEgXSApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEFwcGx5IGNvbnZlcnRlciAoaWYgbm90IGFuIGVxdWl2YWxlbmNlKVxuXHRcdFx0XHRpZiAoIGNvbnYgIT09IHRydWUgKSB7XG5cblx0XHRcdFx0XHQvLyBVbmxlc3MgZXJyb3JzIGFyZSBhbGxvd2VkIHRvIGJ1YmJsZSwgY2F0Y2ggYW5kIHJldHVybiB0aGVtXG5cdFx0XHRcdFx0aWYgKCBjb252ICYmIHMudGhyb3dzICkge1xuXHRcdFx0XHRcdFx0cmVzcG9uc2UgPSBjb252KCByZXNwb25zZSApO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRyZXNwb25zZSA9IGNvbnYoIHJlc3BvbnNlICk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoICggZSApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHRzdGF0ZTogXCJwYXJzZXJlcnJvclwiLFxuXHRcdFx0XHRcdFx0XHRcdGVycm9yOiBjb252ID8gZSA6IFwiTm8gY29udmVyc2lvbiBmcm9tIFwiICsgcHJldiArIFwiIHRvIFwiICsgY3VycmVudFxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7IHN0YXRlOiBcInN1Y2Nlc3NcIiwgZGF0YTogcmVzcG9uc2UgfTtcbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdC8vIENvdW50ZXIgZm9yIGhvbGRpbmcgdGhlIG51bWJlciBvZiBhY3RpdmUgcXVlcmllc1xuXHRhY3RpdmU6IDAsXG5cblx0Ly8gTGFzdC1Nb2RpZmllZCBoZWFkZXIgY2FjaGUgZm9yIG5leHQgcmVxdWVzdFxuXHRsYXN0TW9kaWZpZWQ6IHt9LFxuXHRldGFnOiB7fSxcblxuXHRhamF4U2V0dGluZ3M6IHtcblx0XHR1cmw6IGxvY2F0aW9uLmhyZWYsXG5cdFx0dHlwZTogXCJHRVRcIixcblx0XHRpc0xvY2FsOiBybG9jYWxQcm90b2NvbC50ZXN0KCBsb2NhdGlvbi5wcm90b2NvbCApLFxuXHRcdGdsb2JhbDogdHJ1ZSxcblx0XHRwcm9jZXNzRGF0YTogdHJ1ZSxcblx0XHRhc3luYzogdHJ1ZSxcblx0XHRjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLThcIixcblxuXHRcdC8qXG5cdFx0dGltZW91dDogMCxcblx0XHRkYXRhOiBudWxsLFxuXHRcdGRhdGFUeXBlOiBudWxsLFxuXHRcdHVzZXJuYW1lOiBudWxsLFxuXHRcdHBhc3N3b3JkOiBudWxsLFxuXHRcdGNhY2hlOiBudWxsLFxuXHRcdHRocm93czogZmFsc2UsXG5cdFx0dHJhZGl0aW9uYWw6IGZhbHNlLFxuXHRcdGhlYWRlcnM6IHt9LFxuXHRcdCovXG5cblx0XHRhY2NlcHRzOiB7XG5cdFx0XHRcIipcIjogYWxsVHlwZXMsXG5cdFx0XHR0ZXh0OiBcInRleHQvcGxhaW5cIixcblx0XHRcdGh0bWw6IFwidGV4dC9odG1sXCIsXG5cdFx0XHR4bWw6IFwiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbFwiLFxuXHRcdFx0anNvbjogXCJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHRcIlxuXHRcdH0sXG5cblx0XHRjb250ZW50czoge1xuXHRcdFx0eG1sOiAvXFxieG1sXFxiLyxcblx0XHRcdGh0bWw6IC9cXGJodG1sLyxcblx0XHRcdGpzb246IC9cXGJqc29uXFxiL1xuXHRcdH0sXG5cblx0XHRyZXNwb25zZUZpZWxkczoge1xuXHRcdFx0eG1sOiBcInJlc3BvbnNlWE1MXCIsXG5cdFx0XHR0ZXh0OiBcInJlc3BvbnNlVGV4dFwiLFxuXHRcdFx0anNvbjogXCJyZXNwb25zZUpTT05cIlxuXHRcdH0sXG5cblx0XHQvLyBEYXRhIGNvbnZlcnRlcnNcblx0XHQvLyBLZXlzIHNlcGFyYXRlIHNvdXJjZSAob3IgY2F0Y2hhbGwgXCIqXCIpIGFuZCBkZXN0aW5hdGlvbiB0eXBlcyB3aXRoIGEgc2luZ2xlIHNwYWNlXG5cdFx0Y29udmVydGVyczoge1xuXG5cdFx0XHQvLyBDb252ZXJ0IGFueXRoaW5nIHRvIHRleHRcblx0XHRcdFwiKiB0ZXh0XCI6IFN0cmluZyxcblxuXHRcdFx0Ly8gVGV4dCB0byBodG1sICh0cnVlID0gbm8gdHJhbnNmb3JtYXRpb24pXG5cdFx0XHRcInRleHQgaHRtbFwiOiB0cnVlLFxuXG5cdFx0XHQvLyBFdmFsdWF0ZSB0ZXh0IGFzIGEganNvbiBleHByZXNzaW9uXG5cdFx0XHRcInRleHQganNvblwiOiBKU09OLnBhcnNlLFxuXG5cdFx0XHQvLyBQYXJzZSB0ZXh0IGFzIHhtbFxuXHRcdFx0XCJ0ZXh0IHhtbFwiOiBqUXVlcnkucGFyc2VYTUxcblx0XHR9LFxuXG5cdFx0Ly8gRm9yIG9wdGlvbnMgdGhhdCBzaG91bGRuJ3QgYmUgZGVlcCBleHRlbmRlZDpcblx0XHQvLyB5b3UgY2FuIGFkZCB5b3VyIG93biBjdXN0b20gb3B0aW9ucyBoZXJlIGlmXG5cdFx0Ly8gYW5kIHdoZW4geW91IGNyZWF0ZSBvbmUgdGhhdCBzaG91bGRuJ3QgYmVcblx0XHQvLyBkZWVwIGV4dGVuZGVkIChzZWUgYWpheEV4dGVuZClcblx0XHRmbGF0T3B0aW9uczoge1xuXHRcdFx0dXJsOiB0cnVlLFxuXHRcdFx0Y29udGV4dDogdHJ1ZVxuXHRcdH1cblx0fSxcblxuXHQvLyBDcmVhdGVzIGEgZnVsbCBmbGVkZ2VkIHNldHRpbmdzIG9iamVjdCBpbnRvIHRhcmdldFxuXHQvLyB3aXRoIGJvdGggYWpheFNldHRpbmdzIGFuZCBzZXR0aW5ncyBmaWVsZHMuXG5cdC8vIElmIHRhcmdldCBpcyBvbWl0dGVkLCB3cml0ZXMgaW50byBhamF4U2V0dGluZ3MuXG5cdGFqYXhTZXR1cDogZnVuY3Rpb24oIHRhcmdldCwgc2V0dGluZ3MgKSB7XG5cdFx0cmV0dXJuIHNldHRpbmdzID9cblxuXHRcdFx0Ly8gQnVpbGRpbmcgYSBzZXR0aW5ncyBvYmplY3Rcblx0XHRcdGFqYXhFeHRlbmQoIGFqYXhFeHRlbmQoIHRhcmdldCwgalF1ZXJ5LmFqYXhTZXR0aW5ncyApLCBzZXR0aW5ncyApIDpcblxuXHRcdFx0Ly8gRXh0ZW5kaW5nIGFqYXhTZXR0aW5nc1xuXHRcdFx0YWpheEV4dGVuZCggalF1ZXJ5LmFqYXhTZXR0aW5ncywgdGFyZ2V0ICk7XG5cdH0sXG5cblx0YWpheFByZWZpbHRlcjogYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBwcmVmaWx0ZXJzICksXG5cdGFqYXhUcmFuc3BvcnQ6IGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyggdHJhbnNwb3J0cyApLFxuXG5cdC8vIE1haW4gbWV0aG9kXG5cdGFqYXg6IGZ1bmN0aW9uKCB1cmwsIG9wdGlvbnMgKSB7XG5cblx0XHQvLyBJZiB1cmwgaXMgYW4gb2JqZWN0LCBzaW11bGF0ZSBwcmUtMS41IHNpZ25hdHVyZVxuXHRcdGlmICggdHlwZW9mIHVybCA9PT0gXCJvYmplY3RcIiApIHtcblx0XHRcdG9wdGlvbnMgPSB1cmw7XG5cdFx0XHR1cmwgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0Ly8gRm9yY2Ugb3B0aW9ucyB0byBiZSBhbiBvYmplY3Rcblx0XHRvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuXHRcdHZhciB0cmFuc3BvcnQsXG5cblx0XHRcdC8vIFVSTCB3aXRob3V0IGFudGktY2FjaGUgcGFyYW1cblx0XHRcdGNhY2hlVVJMLFxuXG5cdFx0XHQvLyBSZXNwb25zZSBoZWFkZXJzXG5cdFx0XHRyZXNwb25zZUhlYWRlcnNTdHJpbmcsXG5cdFx0XHRyZXNwb25zZUhlYWRlcnMsXG5cblx0XHRcdC8vIHRpbWVvdXQgaGFuZGxlXG5cdFx0XHR0aW1lb3V0VGltZXIsXG5cblx0XHRcdC8vIFVybCBjbGVhbnVwIHZhclxuXHRcdFx0dXJsQW5jaG9yLFxuXG5cdFx0XHQvLyBSZXF1ZXN0IHN0YXRlIChiZWNvbWVzIGZhbHNlIHVwb24gc2VuZCBhbmQgdHJ1ZSB1cG9uIGNvbXBsZXRpb24pXG5cdFx0XHRjb21wbGV0ZWQsXG5cblx0XHRcdC8vIFRvIGtub3cgaWYgZ2xvYmFsIGV2ZW50cyBhcmUgdG8gYmUgZGlzcGF0Y2hlZFxuXHRcdFx0ZmlyZUdsb2JhbHMsXG5cblx0XHRcdC8vIExvb3AgdmFyaWFibGVcblx0XHRcdGksXG5cblx0XHRcdC8vIHVuY2FjaGVkIHBhcnQgb2YgdGhlIHVybFxuXHRcdFx0dW5jYWNoZWQsXG5cblx0XHRcdC8vIENyZWF0ZSB0aGUgZmluYWwgb3B0aW9ucyBvYmplY3Rcblx0XHRcdHMgPSBqUXVlcnkuYWpheFNldHVwKCB7fSwgb3B0aW9ucyApLFxuXG5cdFx0XHQvLyBDYWxsYmFja3MgY29udGV4dFxuXHRcdFx0Y2FsbGJhY2tDb250ZXh0ID0gcy5jb250ZXh0IHx8IHMsXG5cblx0XHRcdC8vIENvbnRleHQgZm9yIGdsb2JhbCBldmVudHMgaXMgY2FsbGJhY2tDb250ZXh0IGlmIGl0IGlzIGEgRE9NIG5vZGUgb3IgalF1ZXJ5IGNvbGxlY3Rpb25cblx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dCA9IHMuY29udGV4dCAmJlxuXHRcdFx0XHQoIGNhbGxiYWNrQ29udGV4dC5ub2RlVHlwZSB8fCBjYWxsYmFja0NvbnRleHQuanF1ZXJ5ICkgP1xuXHRcdFx0XHRcdGpRdWVyeSggY2FsbGJhY2tDb250ZXh0ICkgOlxuXHRcdFx0XHRcdGpRdWVyeS5ldmVudCxcblxuXHRcdFx0Ly8gRGVmZXJyZWRzXG5cdFx0XHRkZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpLFxuXHRcdFx0Y29tcGxldGVEZWZlcnJlZCA9IGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLFxuXG5cdFx0XHQvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrc1xuXHRcdFx0c3RhdHVzQ29kZSA9IHMuc3RhdHVzQ29kZSB8fCB7fSxcblxuXHRcdFx0Ly8gSGVhZGVycyAodGhleSBhcmUgc2VudCBhbGwgYXQgb25jZSlcblx0XHRcdHJlcXVlc3RIZWFkZXJzID0ge30sXG5cdFx0XHRyZXF1ZXN0SGVhZGVyc05hbWVzID0ge30sXG5cblx0XHRcdC8vIERlZmF1bHQgYWJvcnQgbWVzc2FnZVxuXHRcdFx0c3RyQWJvcnQgPSBcImNhbmNlbGVkXCIsXG5cblx0XHRcdC8vIEZha2UgeGhyXG5cdFx0XHRqcVhIUiA9IHtcblx0XHRcdFx0cmVhZHlTdGF0ZTogMCxcblxuXHRcdFx0XHQvLyBCdWlsZHMgaGVhZGVycyBoYXNodGFibGUgaWYgbmVlZGVkXG5cdFx0XHRcdGdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbigga2V5ICkge1xuXHRcdFx0XHRcdHZhciBtYXRjaDtcblx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblx0XHRcdFx0XHRcdGlmICggIXJlc3BvbnNlSGVhZGVycyApIHtcblx0XHRcdFx0XHRcdFx0cmVzcG9uc2VIZWFkZXJzID0ge307XG5cdFx0XHRcdFx0XHRcdHdoaWxlICggKCBtYXRjaCA9IHJoZWFkZXJzLmV4ZWMoIHJlc3BvbnNlSGVhZGVyc1N0cmluZyApICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzcG9uc2VIZWFkZXJzWyBtYXRjaFsgMSBdLnRvTG93ZXJDYXNlKCkgXSA9IG1hdGNoWyAyIF07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdG1hdGNoID0gcmVzcG9uc2VIZWFkZXJzWyBrZXkudG9Mb3dlckNhc2UoKSBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gbWF0Y2ggPT0gbnVsbCA/IG51bGwgOiBtYXRjaDtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBSYXcgc3RyaW5nXG5cdFx0XHRcdGdldEFsbFJlc3BvbnNlSGVhZGVyczogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGNvbXBsZXRlZCA/IHJlc3BvbnNlSGVhZGVyc1N0cmluZyA6IG51bGw7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gQ2FjaGVzIHRoZSBoZWFkZXJcblx0XHRcdFx0c2V0UmVxdWVzdEhlYWRlcjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdFx0XHRcdGlmICggY29tcGxldGVkID09IG51bGwgKSB7XG5cdFx0XHRcdFx0XHRuYW1lID0gcmVxdWVzdEhlYWRlcnNOYW1lc1sgbmFtZS50b0xvd2VyQ2FzZSgpIF0gPVxuXHRcdFx0XHRcdFx0XHRyZXF1ZXN0SGVhZGVyc05hbWVzWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSB8fCBuYW1lO1xuXHRcdFx0XHRcdFx0cmVxdWVzdEhlYWRlcnNbIG5hbWUgXSA9IHZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBPdmVycmlkZXMgcmVzcG9uc2UgY29udGVudC10eXBlIGhlYWRlclxuXHRcdFx0XHRvdmVycmlkZU1pbWVUeXBlOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCA9PSBudWxsICkge1xuXHRcdFx0XHRcdFx0cy5taW1lVHlwZSA9IHR5cGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzXG5cdFx0XHRcdHN0YXR1c0NvZGU6IGZ1bmN0aW9uKCBtYXAgKSB7XG5cdFx0XHRcdFx0dmFyIGNvZGU7XG5cdFx0XHRcdFx0aWYgKCBtYXAgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBFeGVjdXRlIHRoZSBhcHByb3ByaWF0ZSBjYWxsYmFja3Ncblx0XHRcdFx0XHRcdFx0anFYSFIuYWx3YXlzKCBtYXBbIGpxWEhSLnN0YXR1cyBdICk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdC8vIExhenktYWRkIHRoZSBuZXcgY2FsbGJhY2tzIGluIGEgd2F5IHRoYXQgcHJlc2VydmVzIG9sZCBvbmVzXG5cdFx0XHRcdFx0XHRcdGZvciAoIGNvZGUgaW4gbWFwICkge1xuXHRcdFx0XHRcdFx0XHRcdHN0YXR1c0NvZGVbIGNvZGUgXSA9IFsgc3RhdHVzQ29kZVsgY29kZSBdLCBtYXBbIGNvZGUgXSBdO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIENhbmNlbCB0aGUgcmVxdWVzdFxuXHRcdFx0XHRhYm9ydDogZnVuY3Rpb24oIHN0YXR1c1RleHQgKSB7XG5cdFx0XHRcdFx0dmFyIGZpbmFsVGV4dCA9IHN0YXR1c1RleHQgfHwgc3RyQWJvcnQ7XG5cdFx0XHRcdFx0aWYgKCB0cmFuc3BvcnQgKSB7XG5cdFx0XHRcdFx0XHR0cmFuc3BvcnQuYWJvcnQoIGZpbmFsVGV4dCApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRkb25lKCAwLCBmaW5hbFRleHQgKTtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdC8vIEF0dGFjaCBkZWZlcnJlZHNcblx0XHRkZWZlcnJlZC5wcm9taXNlKCBqcVhIUiApO1xuXG5cdFx0Ly8gQWRkIHByb3RvY29sIGlmIG5vdCBwcm92aWRlZCAocHJlZmlsdGVycyBtaWdodCBleHBlY3QgaXQpXG5cdFx0Ly8gSGFuZGxlIGZhbHN5IHVybCBpbiB0aGUgc2V0dGluZ3Mgb2JqZWN0ICgjMTAwOTM6IGNvbnNpc3RlbmN5IHdpdGggb2xkIHNpZ25hdHVyZSlcblx0XHQvLyBXZSBhbHNvIHVzZSB0aGUgdXJsIHBhcmFtZXRlciBpZiBhdmFpbGFibGVcblx0XHRzLnVybCA9ICggKCB1cmwgfHwgcy51cmwgfHwgbG9jYXRpb24uaHJlZiApICsgXCJcIiApXG5cdFx0XHQucmVwbGFjZSggcnByb3RvY29sLCBsb2NhdGlvbi5wcm90b2NvbCArIFwiLy9cIiApO1xuXG5cdFx0Ly8gQWxpYXMgbWV0aG9kIG9wdGlvbiB0byB0eXBlIGFzIHBlciB0aWNrZXQgIzEyMDA0XG5cdFx0cy50eXBlID0gb3B0aW9ucy5tZXRob2QgfHwgb3B0aW9ucy50eXBlIHx8IHMubWV0aG9kIHx8IHMudHlwZTtcblxuXHRcdC8vIEV4dHJhY3QgZGF0YVR5cGVzIGxpc3Rcblx0XHRzLmRhdGFUeXBlcyA9ICggcy5kYXRhVHlwZSB8fCBcIipcIiApLnRvTG93ZXJDYXNlKCkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbIFwiXCIgXTtcblxuXHRcdC8vIEEgY3Jvc3MtZG9tYWluIHJlcXVlc3QgaXMgaW4gb3JkZXIgd2hlbiB0aGUgb3JpZ2luIGRvZXNuJ3QgbWF0Y2ggdGhlIGN1cnJlbnQgb3JpZ2luLlxuXHRcdGlmICggcy5jcm9zc0RvbWFpbiA9PSBudWxsICkge1xuXHRcdFx0dXJsQW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJhXCIgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUUgPD04IC0gMTEsIEVkZ2UgMTIgLSAxNVxuXHRcdFx0Ly8gSUUgdGhyb3dzIGV4Y2VwdGlvbiBvbiBhY2Nlc3NpbmcgdGhlIGhyZWYgcHJvcGVydHkgaWYgdXJsIGlzIG1hbGZvcm1lZCxcblx0XHRcdC8vIGUuZy4gaHR0cDovL2V4YW1wbGUuY29tOjgweC9cblx0XHRcdHRyeSB7XG5cdFx0XHRcdHVybEFuY2hvci5ocmVmID0gcy51cmw7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD04IC0gMTEgb25seVxuXHRcdFx0XHQvLyBBbmNob3IncyBob3N0IHByb3BlcnR5IGlzbid0IGNvcnJlY3RseSBzZXQgd2hlbiBzLnVybCBpcyByZWxhdGl2ZVxuXHRcdFx0XHR1cmxBbmNob3IuaHJlZiA9IHVybEFuY2hvci5ocmVmO1xuXHRcdFx0XHRzLmNyb3NzRG9tYWluID0gb3JpZ2luQW5jaG9yLnByb3RvY29sICsgXCIvL1wiICsgb3JpZ2luQW5jaG9yLmhvc3QgIT09XG5cdFx0XHRcdFx0dXJsQW5jaG9yLnByb3RvY29sICsgXCIvL1wiICsgdXJsQW5jaG9yLmhvc3Q7XG5cdFx0XHR9IGNhdGNoICggZSApIHtcblxuXHRcdFx0XHQvLyBJZiB0aGVyZSBpcyBhbiBlcnJvciBwYXJzaW5nIHRoZSBVUkwsIGFzc3VtZSBpdCBpcyBjcm9zc0RvbWFpbixcblx0XHRcdFx0Ly8gaXQgY2FuIGJlIHJlamVjdGVkIGJ5IHRoZSB0cmFuc3BvcnQgaWYgaXQgaXMgaW52YWxpZFxuXHRcdFx0XHRzLmNyb3NzRG9tYWluID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDb252ZXJ0IGRhdGEgaWYgbm90IGFscmVhZHkgYSBzdHJpbmdcblx0XHRpZiAoIHMuZGF0YSAmJiBzLnByb2Nlc3NEYXRhICYmIHR5cGVvZiBzLmRhdGEgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRzLmRhdGEgPSBqUXVlcnkucGFyYW0oIHMuZGF0YSwgcy50cmFkaXRpb25hbCApO1xuXHRcdH1cblxuXHRcdC8vIEFwcGx5IHByZWZpbHRlcnNcblx0XHRpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggcHJlZmlsdGVycywgcywgb3B0aW9ucywganFYSFIgKTtcblxuXHRcdC8vIElmIHJlcXVlc3Qgd2FzIGFib3J0ZWQgaW5zaWRlIGEgcHJlZmlsdGVyLCBzdG9wIHRoZXJlXG5cdFx0aWYgKCBjb21wbGV0ZWQgKSB7XG5cdFx0XHRyZXR1cm4ganFYSFI7XG5cdFx0fVxuXG5cdFx0Ly8gV2UgY2FuIGZpcmUgZ2xvYmFsIGV2ZW50cyBhcyBvZiBub3cgaWYgYXNrZWQgdG9cblx0XHQvLyBEb24ndCBmaXJlIGV2ZW50cyBpZiBqUXVlcnkuZXZlbnQgaXMgdW5kZWZpbmVkIGluIGFuIEFNRC11c2FnZSBzY2VuYXJpbyAoIzE1MTE4KVxuXHRcdGZpcmVHbG9iYWxzID0galF1ZXJ5LmV2ZW50ICYmIHMuZ2xvYmFsO1xuXG5cdFx0Ly8gV2F0Y2ggZm9yIGEgbmV3IHNldCBvZiByZXF1ZXN0c1xuXHRcdGlmICggZmlyZUdsb2JhbHMgJiYgalF1ZXJ5LmFjdGl2ZSsrID09PSAwICkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIFwiYWpheFN0YXJ0XCIgKTtcblx0XHR9XG5cblx0XHQvLyBVcHBlcmNhc2UgdGhlIHR5cGVcblx0XHRzLnR5cGUgPSBzLnR5cGUudG9VcHBlckNhc2UoKTtcblxuXHRcdC8vIERldGVybWluZSBpZiByZXF1ZXN0IGhhcyBjb250ZW50XG5cdFx0cy5oYXNDb250ZW50ID0gIXJub0NvbnRlbnQudGVzdCggcy50eXBlICk7XG5cblx0XHQvLyBTYXZlIHRoZSBVUkwgaW4gY2FzZSB3ZSdyZSB0b3lpbmcgd2l0aCB0aGUgSWYtTW9kaWZpZWQtU2luY2Vcblx0XHQvLyBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIgbGF0ZXIgb25cblx0XHQvLyBSZW1vdmUgaGFzaCB0byBzaW1wbGlmeSB1cmwgbWFuaXB1bGF0aW9uXG5cdFx0Y2FjaGVVUkwgPSBzLnVybC5yZXBsYWNlKCByaGFzaCwgXCJcIiApO1xuXG5cdFx0Ly8gTW9yZSBvcHRpb25zIGhhbmRsaW5nIGZvciByZXF1ZXN0cyB3aXRoIG5vIGNvbnRlbnRcblx0XHRpZiAoICFzLmhhc0NvbnRlbnQgKSB7XG5cblx0XHRcdC8vIFJlbWVtYmVyIHRoZSBoYXNoIHNvIHdlIGNhbiBwdXQgaXQgYmFja1xuXHRcdFx0dW5jYWNoZWQgPSBzLnVybC5zbGljZSggY2FjaGVVUkwubGVuZ3RoICk7XG5cblx0XHRcdC8vIElmIGRhdGEgaXMgYXZhaWxhYmxlIGFuZCBzaG91bGQgYmUgcHJvY2Vzc2VkLCBhcHBlbmQgZGF0YSB0byB1cmxcblx0XHRcdGlmICggcy5kYXRhICYmICggcy5wcm9jZXNzRGF0YSB8fCB0eXBlb2Ygcy5kYXRhID09PSBcInN0cmluZ1wiICkgKSB7XG5cdFx0XHRcdGNhY2hlVVJMICs9ICggcnF1ZXJ5LnRlc3QoIGNhY2hlVVJMICkgPyBcIiZcIiA6IFwiP1wiICkgKyBzLmRhdGE7XG5cblx0XHRcdFx0Ly8gIzk2ODI6IHJlbW92ZSBkYXRhIHNvIHRoYXQgaXQncyBub3QgdXNlZCBpbiBhbiBldmVudHVhbCByZXRyeVxuXHRcdFx0XHRkZWxldGUgcy5kYXRhO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgb3IgdXBkYXRlIGFudGktY2FjaGUgcGFyYW0gaWYgbmVlZGVkXG5cdFx0XHRpZiAoIHMuY2FjaGUgPT09IGZhbHNlICkge1xuXHRcdFx0XHRjYWNoZVVSTCA9IGNhY2hlVVJMLnJlcGxhY2UoIHJhbnRpQ2FjaGUsIFwiJDFcIiApO1xuXHRcdFx0XHR1bmNhY2hlZCA9ICggcnF1ZXJ5LnRlc3QoIGNhY2hlVVJMICkgPyBcIiZcIiA6IFwiP1wiICkgKyBcIl89XCIgKyAoIG5vbmNlKysgKSArIHVuY2FjaGVkO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBQdXQgaGFzaCBhbmQgYW50aS1jYWNoZSBvbiB0aGUgVVJMIHRoYXQgd2lsbCBiZSByZXF1ZXN0ZWQgKGdoLTE3MzIpXG5cdFx0XHRzLnVybCA9IGNhY2hlVVJMICsgdW5jYWNoZWQ7XG5cblx0XHQvLyBDaGFuZ2UgJyUyMCcgdG8gJysnIGlmIHRoaXMgaXMgZW5jb2RlZCBmb3JtIGJvZHkgY29udGVudCAoZ2gtMjY1OClcblx0XHR9IGVsc2UgaWYgKCBzLmRhdGEgJiYgcy5wcm9jZXNzRGF0YSAmJlxuXHRcdFx0KCBzLmNvbnRlbnRUeXBlIHx8IFwiXCIgKS5pbmRleE9mKCBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiICkgPT09IDAgKSB7XG5cdFx0XHRzLmRhdGEgPSBzLmRhdGEucmVwbGFjZSggcjIwLCBcIitcIiApO1xuXHRcdH1cblxuXHRcdC8vIFNldCB0aGUgSWYtTW9kaWZpZWQtU2luY2UgYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyLCBpZiBpbiBpZk1vZGlmaWVkIG1vZGUuXG5cdFx0aWYgKCBzLmlmTW9kaWZpZWQgKSB7XG5cdFx0XHRpZiAoIGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gKSB7XG5cdFx0XHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIFwiSWYtTW9kaWZpZWQtU2luY2VcIiwgalF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSApO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSApIHtcblx0XHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggXCJJZi1Ob25lLU1hdGNoXCIsIGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gU2V0IHRoZSBjb3JyZWN0IGhlYWRlciwgaWYgZGF0YSBpcyBiZWluZyBzZW50XG5cdFx0aWYgKCBzLmRhdGEgJiYgcy5oYXNDb250ZW50ICYmIHMuY29udGVudFR5cGUgIT09IGZhbHNlIHx8IG9wdGlvbnMuY29udGVudFR5cGUgKSB7XG5cdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBcIkNvbnRlbnQtVHlwZVwiLCBzLmNvbnRlbnRUeXBlICk7XG5cdFx0fVxuXG5cdFx0Ly8gU2V0IHRoZSBBY2NlcHRzIGhlYWRlciBmb3IgdGhlIHNlcnZlciwgZGVwZW5kaW5nIG9uIHRoZSBkYXRhVHlwZVxuXHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoXG5cdFx0XHRcIkFjY2VwdFwiLFxuXHRcdFx0cy5kYXRhVHlwZXNbIDAgXSAmJiBzLmFjY2VwdHNbIHMuZGF0YVR5cGVzWyAwIF0gXSA/XG5cdFx0XHRcdHMuYWNjZXB0c1sgcy5kYXRhVHlwZXNbIDAgXSBdICtcblx0XHRcdFx0XHQoIHMuZGF0YVR5cGVzWyAwIF0gIT09IFwiKlwiID8gXCIsIFwiICsgYWxsVHlwZXMgKyBcIjsgcT0wLjAxXCIgOiBcIlwiICkgOlxuXHRcdFx0XHRzLmFjY2VwdHNbIFwiKlwiIF1cblx0XHQpO1xuXG5cdFx0Ly8gQ2hlY2sgZm9yIGhlYWRlcnMgb3B0aW9uXG5cdFx0Zm9yICggaSBpbiBzLmhlYWRlcnMgKSB7XG5cdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBzLmhlYWRlcnNbIGkgXSApO1xuXHRcdH1cblxuXHRcdC8vIEFsbG93IGN1c3RvbSBoZWFkZXJzL21pbWV0eXBlcyBhbmQgZWFybHkgYWJvcnRcblx0XHRpZiAoIHMuYmVmb3JlU2VuZCAmJlxuXHRcdFx0KCBzLmJlZm9yZVNlbmQuY2FsbCggY2FsbGJhY2tDb250ZXh0LCBqcVhIUiwgcyApID09PSBmYWxzZSB8fCBjb21wbGV0ZWQgKSApIHtcblxuXHRcdFx0Ly8gQWJvcnQgaWYgbm90IGRvbmUgYWxyZWFkeSBhbmQgcmV0dXJuXG5cdFx0XHRyZXR1cm4ganFYSFIuYWJvcnQoKTtcblx0XHR9XG5cblx0XHQvLyBBYm9ydGluZyBpcyBubyBsb25nZXIgYSBjYW5jZWxsYXRpb25cblx0XHRzdHJBYm9ydCA9IFwiYWJvcnRcIjtcblxuXHRcdC8vIEluc3RhbGwgY2FsbGJhY2tzIG9uIGRlZmVycmVkc1xuXHRcdGNvbXBsZXRlRGVmZXJyZWQuYWRkKCBzLmNvbXBsZXRlICk7XG5cdFx0anFYSFIuZG9uZSggcy5zdWNjZXNzICk7XG5cdFx0anFYSFIuZmFpbCggcy5lcnJvciApO1xuXG5cdFx0Ly8gR2V0IHRyYW5zcG9ydFxuXHRcdHRyYW5zcG9ydCA9IGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCB0cmFuc3BvcnRzLCBzLCBvcHRpb25zLCBqcVhIUiApO1xuXG5cdFx0Ly8gSWYgbm8gdHJhbnNwb3J0LCB3ZSBhdXRvLWFib3J0XG5cdFx0aWYgKCAhdHJhbnNwb3J0ICkge1xuXHRcdFx0ZG9uZSggLTEsIFwiTm8gVHJhbnNwb3J0XCIgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0anFYSFIucmVhZHlTdGF0ZSA9IDE7XG5cblx0XHRcdC8vIFNlbmQgZ2xvYmFsIGV2ZW50XG5cdFx0XHRpZiAoIGZpcmVHbG9iYWxzICkge1xuXHRcdFx0XHRnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggXCJhamF4U2VuZFwiLCBbIGpxWEhSLCBzIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgcmVxdWVzdCB3YXMgYWJvcnRlZCBpbnNpZGUgYWpheFNlbmQsIHN0b3AgdGhlcmVcblx0XHRcdGlmICggY29tcGxldGVkICkge1xuXHRcdFx0XHRyZXR1cm4ganFYSFI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFRpbWVvdXRcblx0XHRcdGlmICggcy5hc3luYyAmJiBzLnRpbWVvdXQgPiAwICkge1xuXHRcdFx0XHR0aW1lb3V0VGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0anFYSFIuYWJvcnQoIFwidGltZW91dFwiICk7XG5cdFx0XHRcdH0sIHMudGltZW91dCApO1xuXHRcdFx0fVxuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb21wbGV0ZWQgPSBmYWxzZTtcblx0XHRcdFx0dHJhbnNwb3J0LnNlbmQoIHJlcXVlc3RIZWFkZXJzLCBkb25lICk7XG5cdFx0XHR9IGNhdGNoICggZSApIHtcblxuXHRcdFx0XHQvLyBSZXRocm93IHBvc3QtY29tcGxldGlvbiBleGNlcHRpb25zXG5cdFx0XHRcdGlmICggY29tcGxldGVkICkge1xuXHRcdFx0XHRcdHRocm93IGU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBQcm9wYWdhdGUgb3RoZXJzIGFzIHJlc3VsdHNcblx0XHRcdFx0ZG9uZSggLTEsIGUgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDYWxsYmFjayBmb3Igd2hlbiBldmVyeXRoaW5nIGlzIGRvbmVcblx0XHRmdW5jdGlvbiBkb25lKCBzdGF0dXMsIG5hdGl2ZVN0YXR1c1RleHQsIHJlc3BvbnNlcywgaGVhZGVycyApIHtcblx0XHRcdHZhciBpc1N1Y2Nlc3MsIHN1Y2Nlc3MsIGVycm9yLCByZXNwb25zZSwgbW9kaWZpZWQsXG5cdFx0XHRcdHN0YXR1c1RleHQgPSBuYXRpdmVTdGF0dXNUZXh0O1xuXG5cdFx0XHQvLyBJZ25vcmUgcmVwZWF0IGludm9jYXRpb25zXG5cdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb21wbGV0ZWQgPSB0cnVlO1xuXG5cdFx0XHQvLyBDbGVhciB0aW1lb3V0IGlmIGl0IGV4aXN0c1xuXHRcdFx0aWYgKCB0aW1lb3V0VGltZXIgKSB7XG5cdFx0XHRcdHdpbmRvdy5jbGVhclRpbWVvdXQoIHRpbWVvdXRUaW1lciApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBEZXJlZmVyZW5jZSB0cmFuc3BvcnQgZm9yIGVhcmx5IGdhcmJhZ2UgY29sbGVjdGlvblxuXHRcdFx0Ly8gKG5vIG1hdHRlciBob3cgbG9uZyB0aGUganFYSFIgb2JqZWN0IHdpbGwgYmUgdXNlZClcblx0XHRcdHRyYW5zcG9ydCA9IHVuZGVmaW5lZDtcblxuXHRcdFx0Ly8gQ2FjaGUgcmVzcG9uc2UgaGVhZGVyc1xuXHRcdFx0cmVzcG9uc2VIZWFkZXJzU3RyaW5nID0gaGVhZGVycyB8fCBcIlwiO1xuXG5cdFx0XHQvLyBTZXQgcmVhZHlTdGF0ZVxuXHRcdFx0anFYSFIucmVhZHlTdGF0ZSA9IHN0YXR1cyA+IDAgPyA0IDogMDtcblxuXHRcdFx0Ly8gRGV0ZXJtaW5lIGlmIHN1Y2Nlc3NmdWxcblx0XHRcdGlzU3VjY2VzcyA9IHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwIHx8IHN0YXR1cyA9PT0gMzA0O1xuXG5cdFx0XHQvLyBHZXQgcmVzcG9uc2UgZGF0YVxuXHRcdFx0aWYgKCByZXNwb25zZXMgKSB7XG5cdFx0XHRcdHJlc3BvbnNlID0gYWpheEhhbmRsZVJlc3BvbnNlcyggcywganFYSFIsIHJlc3BvbnNlcyApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDb252ZXJ0IG5vIG1hdHRlciB3aGF0ICh0aGF0IHdheSByZXNwb25zZVhYWCBmaWVsZHMgYXJlIGFsd2F5cyBzZXQpXG5cdFx0XHRyZXNwb25zZSA9IGFqYXhDb252ZXJ0KCBzLCByZXNwb25zZSwganFYSFIsIGlzU3VjY2VzcyApO1xuXG5cdFx0XHQvLyBJZiBzdWNjZXNzZnVsLCBoYW5kbGUgdHlwZSBjaGFpbmluZ1xuXHRcdFx0aWYgKCBpc1N1Y2Nlc3MgKSB7XG5cblx0XHRcdFx0Ly8gU2V0IHRoZSBJZi1Nb2RpZmllZC1TaW5jZSBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIsIGlmIGluIGlmTW9kaWZpZWQgbW9kZS5cblx0XHRcdFx0aWYgKCBzLmlmTW9kaWZpZWQgKSB7XG5cdFx0XHRcdFx0bW9kaWZpZWQgPSBqcVhIUi5nZXRSZXNwb25zZUhlYWRlciggXCJMYXN0LU1vZGlmaWVkXCIgKTtcblx0XHRcdFx0XHRpZiAoIG1vZGlmaWVkICkge1xuXHRcdFx0XHRcdFx0alF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSA9IG1vZGlmaWVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRtb2RpZmllZCA9IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCBcImV0YWdcIiApO1xuXHRcdFx0XHRcdGlmICggbW9kaWZpZWQgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSA9IG1vZGlmaWVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIGlmIG5vIGNvbnRlbnRcblx0XHRcdFx0aWYgKCBzdGF0dXMgPT09IDIwNCB8fCBzLnR5cGUgPT09IFwiSEVBRFwiICkge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSBcIm5vY29udGVudFwiO1xuXG5cdFx0XHRcdC8vIGlmIG5vdCBtb2RpZmllZFxuXHRcdFx0XHR9IGVsc2UgaWYgKCBzdGF0dXMgPT09IDMwNCApIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gXCJub3Rtb2RpZmllZFwiO1xuXG5cdFx0XHRcdC8vIElmIHdlIGhhdmUgZGF0YSwgbGV0J3MgY29udmVydCBpdFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSByZXNwb25zZS5zdGF0ZTtcblx0XHRcdFx0XHRzdWNjZXNzID0gcmVzcG9uc2UuZGF0YTtcblx0XHRcdFx0XHRlcnJvciA9IHJlc3BvbnNlLmVycm9yO1xuXHRcdFx0XHRcdGlzU3VjY2VzcyA9ICFlcnJvcjtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHQvLyBFeHRyYWN0IGVycm9yIGZyb20gc3RhdHVzVGV4dCBhbmQgbm9ybWFsaXplIGZvciBub24tYWJvcnRzXG5cdFx0XHRcdGVycm9yID0gc3RhdHVzVGV4dDtcblx0XHRcdFx0aWYgKCBzdGF0dXMgfHwgIXN0YXR1c1RleHQgKSB7XG5cdFx0XHRcdFx0c3RhdHVzVGV4dCA9IFwiZXJyb3JcIjtcblx0XHRcdFx0XHRpZiAoIHN0YXR1cyA8IDAgKSB7XG5cdFx0XHRcdFx0XHRzdGF0dXMgPSAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBTZXQgZGF0YSBmb3IgdGhlIGZha2UgeGhyIG9iamVjdFxuXHRcdFx0anFYSFIuc3RhdHVzID0gc3RhdHVzO1xuXHRcdFx0anFYSFIuc3RhdHVzVGV4dCA9ICggbmF0aXZlU3RhdHVzVGV4dCB8fCBzdGF0dXNUZXh0ICkgKyBcIlwiO1xuXG5cdFx0XHQvLyBTdWNjZXNzL0Vycm9yXG5cdFx0XHRpZiAoIGlzU3VjY2VzcyApIHtcblx0XHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBzdWNjZXNzLCBzdGF0dXNUZXh0LCBqcVhIUiBdICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkZWZlcnJlZC5yZWplY3RXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsganFYSFIsIHN0YXR1c1RleHQsIGVycm9yIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3RhdHVzLWRlcGVuZGVudCBjYWxsYmFja3Ncblx0XHRcdGpxWEhSLnN0YXR1c0NvZGUoIHN0YXR1c0NvZGUgKTtcblx0XHRcdHN0YXR1c0NvZGUgPSB1bmRlZmluZWQ7XG5cblx0XHRcdGlmICggZmlyZUdsb2JhbHMgKSB7XG5cdFx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKCBpc1N1Y2Nlc3MgPyBcImFqYXhTdWNjZXNzXCIgOiBcImFqYXhFcnJvclwiLFxuXHRcdFx0XHRcdFsganFYSFIsIHMsIGlzU3VjY2VzcyA/IHN1Y2Nlc3MgOiBlcnJvciBdICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENvbXBsZXRlXG5cdFx0XHRjb21wbGV0ZURlZmVycmVkLmZpcmVXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsganFYSFIsIHN0YXR1c1RleHQgXSApO1xuXG5cdFx0XHRpZiAoIGZpcmVHbG9iYWxzICkge1xuXHRcdFx0XHRnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggXCJhamF4Q29tcGxldGVcIiwgWyBqcVhIUiwgcyBdICk7XG5cblx0XHRcdFx0Ly8gSGFuZGxlIHRoZSBnbG9iYWwgQUpBWCBjb3VudGVyXG5cdFx0XHRcdGlmICggISggLS1qUXVlcnkuYWN0aXZlICkgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIFwiYWpheFN0b3BcIiApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGpxWEhSO1xuXHR9LFxuXG5cdGdldEpTT046IGZ1bmN0aW9uKCB1cmwsIGRhdGEsIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBqUXVlcnkuZ2V0KCB1cmwsIGRhdGEsIGNhbGxiYWNrLCBcImpzb25cIiApO1xuXHR9LFxuXG5cdGdldFNjcmlwdDogZnVuY3Rpb24oIHVybCwgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5nZXQoIHVybCwgdW5kZWZpbmVkLCBjYWxsYmFjaywgXCJzY3JpcHRcIiApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5lYWNoKCBbIFwiZ2V0XCIsIFwicG9zdFwiIF0sIGZ1bmN0aW9uKCBpLCBtZXRob2QgKSB7XG5cdGpRdWVyeVsgbWV0aG9kIF0gPSBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjaywgdHlwZSApIHtcblxuXHRcdC8vIFNoaWZ0IGFyZ3VtZW50cyBpZiBkYXRhIGFyZ3VtZW50IHdhcyBvbWl0dGVkXG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBkYXRhICkgKSB7XG5cdFx0XHR0eXBlID0gdHlwZSB8fCBjYWxsYmFjaztcblx0XHRcdGNhbGxiYWNrID0gZGF0YTtcblx0XHRcdGRhdGEgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0Ly8gVGhlIHVybCBjYW4gYmUgYW4gb3B0aW9ucyBvYmplY3QgKHdoaWNoIHRoZW4gbXVzdCBoYXZlIC51cmwpXG5cdFx0cmV0dXJuIGpRdWVyeS5hamF4KCBqUXVlcnkuZXh0ZW5kKCB7XG5cdFx0XHR1cmw6IHVybCxcblx0XHRcdHR5cGU6IG1ldGhvZCxcblx0XHRcdGRhdGFUeXBlOiB0eXBlLFxuXHRcdFx0ZGF0YTogZGF0YSxcblx0XHRcdHN1Y2Nlc3M6IGNhbGxiYWNrXG5cdFx0fSwgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIHVybCApICYmIHVybCApICk7XG5cdH07XG59ICk7XG5cblxualF1ZXJ5Ll9ldmFsVXJsID0gZnVuY3Rpb24oIHVybCApIHtcblx0cmV0dXJuIGpRdWVyeS5hamF4KCB7XG5cdFx0dXJsOiB1cmwsXG5cblx0XHQvLyBNYWtlIHRoaXMgZXhwbGljaXQsIHNpbmNlIHVzZXIgY2FuIG92ZXJyaWRlIHRoaXMgdGhyb3VnaCBhamF4U2V0dXAgKCMxMTI2NClcblx0XHR0eXBlOiBcIkdFVFwiLFxuXHRcdGRhdGFUeXBlOiBcInNjcmlwdFwiLFxuXHRcdGNhY2hlOiB0cnVlLFxuXHRcdGFzeW5jOiBmYWxzZSxcblx0XHRnbG9iYWw6IGZhbHNlLFxuXHRcdFwidGhyb3dzXCI6IHRydWVcblx0fSApO1xufTtcblxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHdyYXBBbGw6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdHZhciB3cmFwO1xuXG5cdFx0aWYgKCB0aGlzWyAwIF0gKSB7XG5cdFx0XHRpZiAoIGlzRnVuY3Rpb24oIGh0bWwgKSApIHtcblx0XHRcdFx0aHRtbCA9IGh0bWwuY2FsbCggdGhpc1sgMCBdICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFRoZSBlbGVtZW50cyB0byB3cmFwIHRoZSB0YXJnZXQgYXJvdW5kXG5cdFx0XHR3cmFwID0galF1ZXJ5KCBodG1sLCB0aGlzWyAwIF0ub3duZXJEb2N1bWVudCApLmVxKCAwICkuY2xvbmUoIHRydWUgKTtcblxuXHRcdFx0aWYgKCB0aGlzWyAwIF0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0d3JhcC5pbnNlcnRCZWZvcmUoIHRoaXNbIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHR3cmFwLm1hcCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBlbGVtID0gdGhpcztcblxuXHRcdFx0XHR3aGlsZSAoIGVsZW0uZmlyc3RFbGVtZW50Q2hpbGQgKSB7XG5cdFx0XHRcdFx0ZWxlbSA9IGVsZW0uZmlyc3RFbGVtZW50Q2hpbGQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gZWxlbTtcblx0XHRcdH0gKS5hcHBlbmQoIHRoaXMgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHR3cmFwSW5uZXI6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdGlmICggaXNGdW5jdGlvbiggaHRtbCApICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLndyYXBJbm5lciggaHRtbC5jYWxsKCB0aGlzLCBpICkgKTtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBzZWxmID0galF1ZXJ5KCB0aGlzICksXG5cdFx0XHRcdGNvbnRlbnRzID0gc2VsZi5jb250ZW50cygpO1xuXG5cdFx0XHRpZiAoIGNvbnRlbnRzLmxlbmd0aCApIHtcblx0XHRcdFx0Y29udGVudHMud3JhcEFsbCggaHRtbCApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzZWxmLmFwcGVuZCggaHRtbCApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHR3cmFwOiBmdW5jdGlvbiggaHRtbCApIHtcblx0XHR2YXIgaHRtbElzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uKCBodG1sICk7XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdGpRdWVyeSggdGhpcyApLndyYXBBbGwoIGh0bWxJc0Z1bmN0aW9uID8gaHRtbC5jYWxsKCB0aGlzLCBpICkgOiBodG1sICk7XG5cdFx0fSApO1xuXHR9LFxuXG5cdHVud3JhcDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHRoaXMucGFyZW50KCBzZWxlY3RvciApLm5vdCggXCJib2R5XCIgKS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeSggdGhpcyApLnJlcGxhY2VXaXRoKCB0aGlzLmNoaWxkTm9kZXMgKTtcblx0XHR9ICk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn0gKTtcblxuXG5qUXVlcnkuZXhwci5wc2V1ZG9zLmhpZGRlbiA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRyZXR1cm4gIWpRdWVyeS5leHByLnBzZXVkb3MudmlzaWJsZSggZWxlbSApO1xufTtcbmpRdWVyeS5leHByLnBzZXVkb3MudmlzaWJsZSA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRyZXR1cm4gISEoIGVsZW0ub2Zmc2V0V2lkdGggfHwgZWxlbS5vZmZzZXRIZWlnaHQgfHwgZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCApO1xufTtcblxuXG5cblxualF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIgPSBmdW5jdGlvbigpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gbmV3IHdpbmRvdy5YTUxIdHRwUmVxdWVzdCgpO1xuXHR9IGNhdGNoICggZSApIHt9XG59O1xuXG52YXIgeGhyU3VjY2Vzc1N0YXR1cyA9IHtcblxuXHRcdC8vIEZpbGUgcHJvdG9jb2wgYWx3YXlzIHlpZWxkcyBzdGF0dXMgY29kZSAwLCBhc3N1bWUgMjAwXG5cdFx0MDogMjAwLFxuXG5cdFx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0XHQvLyAjMTQ1MDogc29tZXRpbWVzIElFIHJldHVybnMgMTIyMyB3aGVuIGl0IHNob3VsZCBiZSAyMDRcblx0XHQxMjIzOiAyMDRcblx0fSxcblx0eGhyU3VwcG9ydGVkID0galF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIoKTtcblxuc3VwcG9ydC5jb3JzID0gISF4aHJTdXBwb3J0ZWQgJiYgKCBcIndpdGhDcmVkZW50aWFsc1wiIGluIHhoclN1cHBvcnRlZCApO1xuc3VwcG9ydC5hamF4ID0geGhyU3VwcG9ydGVkID0gISF4aHJTdXBwb3J0ZWQ7XG5cbmpRdWVyeS5hamF4VHJhbnNwb3J0KCBmdW5jdGlvbiggb3B0aW9ucyApIHtcblx0dmFyIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrO1xuXG5cdC8vIENyb3NzIGRvbWFpbiBvbmx5IGFsbG93ZWQgaWYgc3VwcG9ydGVkIHRocm91Z2ggWE1MSHR0cFJlcXVlc3Rcblx0aWYgKCBzdXBwb3J0LmNvcnMgfHwgeGhyU3VwcG9ydGVkICYmICFvcHRpb25zLmNyb3NzRG9tYWluICkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRzZW5kOiBmdW5jdGlvbiggaGVhZGVycywgY29tcGxldGUgKSB7XG5cdFx0XHRcdHZhciBpLFxuXHRcdFx0XHRcdHhociA9IG9wdGlvbnMueGhyKCk7XG5cblx0XHRcdFx0eGhyLm9wZW4oXG5cdFx0XHRcdFx0b3B0aW9ucy50eXBlLFxuXHRcdFx0XHRcdG9wdGlvbnMudXJsLFxuXHRcdFx0XHRcdG9wdGlvbnMuYXN5bmMsXG5cdFx0XHRcdFx0b3B0aW9ucy51c2VybmFtZSxcblx0XHRcdFx0XHRvcHRpb25zLnBhc3N3b3JkXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0Ly8gQXBwbHkgY3VzdG9tIGZpZWxkcyBpZiBwcm92aWRlZFxuXHRcdFx0XHRpZiAoIG9wdGlvbnMueGhyRmllbGRzICkge1xuXHRcdFx0XHRcdGZvciAoIGkgaW4gb3B0aW9ucy54aHJGaWVsZHMgKSB7XG5cdFx0XHRcdFx0XHR4aHJbIGkgXSA9IG9wdGlvbnMueGhyRmllbGRzWyBpIF07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gT3ZlcnJpZGUgbWltZSB0eXBlIGlmIG5lZWRlZFxuXHRcdFx0XHRpZiAoIG9wdGlvbnMubWltZVR5cGUgJiYgeGhyLm92ZXJyaWRlTWltZVR5cGUgKSB7XG5cdFx0XHRcdFx0eGhyLm92ZXJyaWRlTWltZVR5cGUoIG9wdGlvbnMubWltZVR5cGUgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFgtUmVxdWVzdGVkLVdpdGggaGVhZGVyXG5cdFx0XHRcdC8vIEZvciBjcm9zcy1kb21haW4gcmVxdWVzdHMsIHNlZWluZyBhcyBjb25kaXRpb25zIGZvciBhIHByZWZsaWdodCBhcmVcblx0XHRcdFx0Ly8gYWtpbiB0byBhIGppZ3NhdyBwdXp6bGUsIHdlIHNpbXBseSBuZXZlciBzZXQgaXQgdG8gYmUgc3VyZS5cblx0XHRcdFx0Ly8gKGl0IGNhbiBhbHdheXMgYmUgc2V0IG9uIGEgcGVyLXJlcXVlc3QgYmFzaXMgb3IgZXZlbiB1c2luZyBhamF4U2V0dXApXG5cdFx0XHRcdC8vIEZvciBzYW1lLWRvbWFpbiByZXF1ZXN0cywgd29uJ3QgY2hhbmdlIGhlYWRlciBpZiBhbHJlYWR5IHByb3ZpZGVkLlxuXHRcdFx0XHRpZiAoICFvcHRpb25zLmNyb3NzRG9tYWluICYmICFoZWFkZXJzWyBcIlgtUmVxdWVzdGVkLVdpdGhcIiBdICkge1xuXHRcdFx0XHRcdGhlYWRlcnNbIFwiWC1SZXF1ZXN0ZWQtV2l0aFwiIF0gPSBcIlhNTEh0dHBSZXF1ZXN0XCI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBTZXQgaGVhZGVyc1xuXHRcdFx0XHRmb3IgKCBpIGluIGhlYWRlcnMgKSB7XG5cdFx0XHRcdFx0eGhyLnNldFJlcXVlc3RIZWFkZXIoIGksIGhlYWRlcnNbIGkgXSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQ2FsbGJhY2tcblx0XHRcdFx0Y2FsbGJhY2sgPSBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdFx0XHRjYWxsYmFjayA9IGVycm9yQ2FsbGJhY2sgPSB4aHIub25sb2FkID1cblx0XHRcdFx0XHRcdFx0XHR4aHIub25lcnJvciA9IHhoci5vbmFib3J0ID0geGhyLm9udGltZW91dCA9XG5cdFx0XHRcdFx0XHRcdFx0XHR4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbDtcblxuXHRcdFx0XHRcdFx0XHRpZiAoIHR5cGUgPT09IFwiYWJvcnRcIiApIHtcblx0XHRcdFx0XHRcdFx0XHR4aHIuYWJvcnQoKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggdHlwZSA9PT0gXCJlcnJvclwiICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0XHRcdFx0XHRcdFx0XHQvLyBPbiBhIG1hbnVhbCBuYXRpdmUgYWJvcnQsIElFOSB0aHJvd3Ncblx0XHRcdFx0XHRcdFx0XHQvLyBlcnJvcnMgb24gYW55IHByb3BlcnR5IGFjY2VzcyB0aGF0IGlzIG5vdCByZWFkeVN0YXRlXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCB0eXBlb2YgeGhyLnN0YXR1cyAhPT0gXCJudW1iZXJcIiApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbXBsZXRlKCAwLCBcImVycm9yXCIgKTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29tcGxldGUoXG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gRmlsZTogcHJvdG9jb2wgYWx3YXlzIHlpZWxkcyBzdGF0dXMgMDsgc2VlICM4NjA1LCAjMTQyMDdcblx0XHRcdFx0XHRcdFx0XHRcdFx0eGhyLnN0YXR1cyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0eGhyLnN0YXR1c1RleHRcblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGNvbXBsZXRlKFxuXHRcdFx0XHRcdFx0XHRcdFx0eGhyU3VjY2Vzc1N0YXR1c1sgeGhyLnN0YXR1cyBdIHx8IHhoci5zdGF0dXMsXG5cdFx0XHRcdFx0XHRcdFx0XHR4aHIuc3RhdHVzVGV4dCxcblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0XHRcdFx0XHRcdFx0XHRcdC8vIElFOSBoYXMgbm8gWEhSMiBidXQgdGhyb3dzIG9uIGJpbmFyeSAodHJhYy0xMTQyNilcblx0XHRcdFx0XHRcdFx0XHRcdC8vIEZvciBYSFIyIG5vbi10ZXh0LCBsZXQgdGhlIGNhbGxlciBoYW5kbGUgaXQgKGdoLTI0OTgpXG5cdFx0XHRcdFx0XHRcdFx0XHQoIHhoci5yZXNwb25zZVR5cGUgfHwgXCJ0ZXh0XCIgKSAhPT0gXCJ0ZXh0XCIgIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlb2YgeGhyLnJlc3BvbnNlVGV4dCAhPT0gXCJzdHJpbmdcIiA/XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHsgYmluYXJ5OiB4aHIucmVzcG9uc2UgfSA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHsgdGV4dDogeGhyLnJlc3BvbnNlVGV4dCB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0eGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH07XG5cblx0XHRcdFx0Ly8gTGlzdGVuIHRvIGV2ZW50c1xuXHRcdFx0XHR4aHIub25sb2FkID0gY2FsbGJhY2soKTtcblx0XHRcdFx0ZXJyb3JDYWxsYmFjayA9IHhoci5vbmVycm9yID0geGhyLm9udGltZW91dCA9IGNhbGxiYWNrKCBcImVycm9yXCIgKTtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA5IG9ubHlcblx0XHRcdFx0Ly8gVXNlIG9ucmVhZHlzdGF0ZWNoYW5nZSB0byByZXBsYWNlIG9uYWJvcnRcblx0XHRcdFx0Ly8gdG8gaGFuZGxlIHVuY2F1Z2h0IGFib3J0c1xuXHRcdFx0XHRpZiAoIHhoci5vbmFib3J0ICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0eGhyLm9uYWJvcnQgPSBlcnJvckNhbGxiYWNrO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHRcdFx0Ly8gQ2hlY2sgcmVhZHlTdGF0ZSBiZWZvcmUgdGltZW91dCBhcyBpdCBjaGFuZ2VzXG5cdFx0XHRcdFx0XHRpZiAoIHhoci5yZWFkeVN0YXRlID09PSA0ICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIEFsbG93IG9uZXJyb3IgdG8gYmUgY2FsbGVkIGZpcnN0LFxuXHRcdFx0XHRcdFx0XHQvLyBidXQgdGhhdCB3aWxsIG5vdCBoYW5kbGUgYSBuYXRpdmUgYWJvcnRcblx0XHRcdFx0XHRcdFx0Ly8gQWxzbywgc2F2ZSBlcnJvckNhbGxiYWNrIHRvIGEgdmFyaWFibGVcblx0XHRcdFx0XHRcdFx0Ly8gYXMgeGhyLm9uZXJyb3IgY2Fubm90IGJlIGFjY2Vzc2VkXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZXJyb3JDYWxsYmFjaygpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBDcmVhdGUgdGhlIGFib3J0IGNhbGxiYWNrXG5cdFx0XHRcdGNhbGxiYWNrID0gY2FsbGJhY2soIFwiYWJvcnRcIiApO1xuXG5cdFx0XHRcdHRyeSB7XG5cblx0XHRcdFx0XHQvLyBEbyBzZW5kIHRoZSByZXF1ZXN0ICh0aGlzIG1heSByYWlzZSBhbiBleGNlcHRpb24pXG5cdFx0XHRcdFx0eGhyLnNlbmQoIG9wdGlvbnMuaGFzQ29udGVudCAmJiBvcHRpb25zLmRhdGEgfHwgbnVsbCApO1xuXHRcdFx0XHR9IGNhdGNoICggZSApIHtcblxuXHRcdFx0XHRcdC8vICMxNDY4MzogT25seSByZXRocm93IGlmIHRoaXMgaGFzbid0IGJlZW4gbm90aWZpZWQgYXMgYW4gZXJyb3IgeWV0XG5cdFx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRcdHRocm93IGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cdFx0XHRhYm9ydDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0Y2FsbGJhY2soKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdH1cbn0gKTtcblxuXG5cblxuLy8gUHJldmVudCBhdXRvLWV4ZWN1dGlvbiBvZiBzY3JpcHRzIHdoZW4gbm8gZXhwbGljaXQgZGF0YVR5cGUgd2FzIHByb3ZpZGVkIChTZWUgZ2gtMjQzMilcbmpRdWVyeS5hamF4UHJlZmlsdGVyKCBmdW5jdGlvbiggcyApIHtcblx0aWYgKCBzLmNyb3NzRG9tYWluICkge1xuXHRcdHMuY29udGVudHMuc2NyaXB0ID0gZmFsc2U7XG5cdH1cbn0gKTtcblxuLy8gSW5zdGFsbCBzY3JpcHQgZGF0YVR5cGVcbmpRdWVyeS5hamF4U2V0dXAoIHtcblx0YWNjZXB0czoge1xuXHRcdHNjcmlwdDogXCJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIFwiICtcblx0XHRcdFwiYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0XCJcblx0fSxcblx0Y29udGVudHM6IHtcblx0XHRzY3JpcHQ6IC9cXGIoPzpqYXZhfGVjbWEpc2NyaXB0XFxiL1xuXHR9LFxuXHRjb252ZXJ0ZXJzOiB7XG5cdFx0XCJ0ZXh0IHNjcmlwdFwiOiBmdW5jdGlvbiggdGV4dCApIHtcblx0XHRcdGpRdWVyeS5nbG9iYWxFdmFsKCB0ZXh0ICk7XG5cdFx0XHRyZXR1cm4gdGV4dDtcblx0XHR9XG5cdH1cbn0gKTtcblxuLy8gSGFuZGxlIGNhY2hlJ3Mgc3BlY2lhbCBjYXNlIGFuZCBjcm9zc0RvbWFpblxualF1ZXJ5LmFqYXhQcmVmaWx0ZXIoIFwic2NyaXB0XCIsIGZ1bmN0aW9uKCBzICkge1xuXHRpZiAoIHMuY2FjaGUgPT09IHVuZGVmaW5lZCApIHtcblx0XHRzLmNhY2hlID0gZmFsc2U7XG5cdH1cblx0aWYgKCBzLmNyb3NzRG9tYWluICkge1xuXHRcdHMudHlwZSA9IFwiR0VUXCI7XG5cdH1cbn0gKTtcblxuLy8gQmluZCBzY3JpcHQgdGFnIGhhY2sgdHJhbnNwb3J0XG5qUXVlcnkuYWpheFRyYW5zcG9ydCggXCJzY3JpcHRcIiwgZnVuY3Rpb24oIHMgKSB7XG5cblx0Ly8gVGhpcyB0cmFuc3BvcnQgb25seSBkZWFscyB3aXRoIGNyb3NzIGRvbWFpbiByZXF1ZXN0c1xuXHRpZiAoIHMuY3Jvc3NEb21haW4gKSB7XG5cdFx0dmFyIHNjcmlwdCwgY2FsbGJhY2s7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHNlbmQ6IGZ1bmN0aW9uKCBfLCBjb21wbGV0ZSApIHtcblx0XHRcdFx0c2NyaXB0ID0galF1ZXJ5KCBcIjxzY3JpcHQ+XCIgKS5wcm9wKCB7XG5cdFx0XHRcdFx0Y2hhcnNldDogcy5zY3JpcHRDaGFyc2V0LFxuXHRcdFx0XHRcdHNyYzogcy51cmxcblx0XHRcdFx0fSApLm9uKFxuXHRcdFx0XHRcdFwibG9hZCBlcnJvclwiLFxuXHRcdFx0XHRcdGNhbGxiYWNrID0gZnVuY3Rpb24oIGV2dCApIHtcblx0XHRcdFx0XHRcdHNjcmlwdC5yZW1vdmUoKTtcblx0XHRcdFx0XHRcdGNhbGxiYWNrID0gbnVsbDtcblx0XHRcdFx0XHRcdGlmICggZXZ0ICkge1xuXHRcdFx0XHRcdFx0XHRjb21wbGV0ZSggZXZ0LnR5cGUgPT09IFwiZXJyb3JcIiA/IDQwNCA6IDIwMCwgZXZ0LnR5cGUgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0Ly8gVXNlIG5hdGl2ZSBET00gbWFuaXB1bGF0aW9uIHRvIGF2b2lkIG91ciBkb21NYW5pcCBBSkFYIHRyaWNrZXJ5XG5cdFx0XHRcdGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoIHNjcmlwdFsgMCBdICk7XG5cdFx0XHR9LFxuXHRcdFx0YWJvcnQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9XG59ICk7XG5cblxuXG5cbnZhciBvbGRDYWxsYmFja3MgPSBbXSxcblx0cmpzb25wID0gLyg9KVxcPyg/PSZ8JCl8XFw/XFw/LztcblxuLy8gRGVmYXVsdCBqc29ucCBzZXR0aW5nc1xualF1ZXJ5LmFqYXhTZXR1cCgge1xuXHRqc29ucDogXCJjYWxsYmFja1wiLFxuXHRqc29ucENhbGxiYWNrOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgY2FsbGJhY2sgPSBvbGRDYWxsYmFja3MucG9wKCkgfHwgKCBqUXVlcnkuZXhwYW5kbyArIFwiX1wiICsgKCBub25jZSsrICkgKTtcblx0XHR0aGlzWyBjYWxsYmFjayBdID0gdHJ1ZTtcblx0XHRyZXR1cm4gY2FsbGJhY2s7XG5cdH1cbn0gKTtcblxuLy8gRGV0ZWN0LCBub3JtYWxpemUgb3B0aW9ucyBhbmQgaW5zdGFsbCBjYWxsYmFja3MgZm9yIGpzb25wIHJlcXVlc3RzXG5qUXVlcnkuYWpheFByZWZpbHRlciggXCJqc29uIGpzb25wXCIsIGZ1bmN0aW9uKCBzLCBvcmlnaW5hbFNldHRpbmdzLCBqcVhIUiApIHtcblxuXHR2YXIgY2FsbGJhY2tOYW1lLCBvdmVyd3JpdHRlbiwgcmVzcG9uc2VDb250YWluZXIsXG5cdFx0anNvblByb3AgPSBzLmpzb25wICE9PSBmYWxzZSAmJiAoIHJqc29ucC50ZXN0KCBzLnVybCApID9cblx0XHRcdFwidXJsXCIgOlxuXHRcdFx0dHlwZW9mIHMuZGF0YSA9PT0gXCJzdHJpbmdcIiAmJlxuXHRcdFx0XHQoIHMuY29udGVudFR5cGUgfHwgXCJcIiApXG5cdFx0XHRcdFx0LmluZGV4T2YoIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIgKSA9PT0gMCAmJlxuXHRcdFx0XHRyanNvbnAudGVzdCggcy5kYXRhICkgJiYgXCJkYXRhXCJcblx0XHQpO1xuXG5cdC8vIEhhbmRsZSBpZmYgdGhlIGV4cGVjdGVkIGRhdGEgdHlwZSBpcyBcImpzb25wXCIgb3Igd2UgaGF2ZSBhIHBhcmFtZXRlciB0byBzZXRcblx0aWYgKCBqc29uUHJvcCB8fCBzLmRhdGFUeXBlc1sgMCBdID09PSBcImpzb25wXCIgKSB7XG5cblx0XHQvLyBHZXQgY2FsbGJhY2sgbmFtZSwgcmVtZW1iZXJpbmcgcHJlZXhpc3RpbmcgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGl0XG5cdFx0Y2FsbGJhY2tOYW1lID0gcy5qc29ucENhbGxiYWNrID0gaXNGdW5jdGlvbiggcy5qc29ucENhbGxiYWNrICkgP1xuXHRcdFx0cy5qc29ucENhbGxiYWNrKCkgOlxuXHRcdFx0cy5qc29ucENhbGxiYWNrO1xuXG5cdFx0Ly8gSW5zZXJ0IGNhbGxiYWNrIGludG8gdXJsIG9yIGZvcm0gZGF0YVxuXHRcdGlmICgganNvblByb3AgKSB7XG5cdFx0XHRzWyBqc29uUHJvcCBdID0gc1sganNvblByb3AgXS5yZXBsYWNlKCByanNvbnAsIFwiJDFcIiArIGNhbGxiYWNrTmFtZSApO1xuXHRcdH0gZWxzZSBpZiAoIHMuanNvbnAgIT09IGZhbHNlICkge1xuXHRcdFx0cy51cmwgKz0gKCBycXVlcnkudGVzdCggcy51cmwgKSA/IFwiJlwiIDogXCI/XCIgKSArIHMuanNvbnAgKyBcIj1cIiArIGNhbGxiYWNrTmFtZTtcblx0XHR9XG5cblx0XHQvLyBVc2UgZGF0YSBjb252ZXJ0ZXIgdG8gcmV0cmlldmUganNvbiBhZnRlciBzY3JpcHQgZXhlY3V0aW9uXG5cdFx0cy5jb252ZXJ0ZXJzWyBcInNjcmlwdCBqc29uXCIgXSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCAhcmVzcG9uc2VDb250YWluZXIgKSB7XG5cdFx0XHRcdGpRdWVyeS5lcnJvciggY2FsbGJhY2tOYW1lICsgXCIgd2FzIG5vdCBjYWxsZWRcIiApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlc3BvbnNlQ29udGFpbmVyWyAwIF07XG5cdFx0fTtcblxuXHRcdC8vIEZvcmNlIGpzb24gZGF0YVR5cGVcblx0XHRzLmRhdGFUeXBlc1sgMCBdID0gXCJqc29uXCI7XG5cblx0XHQvLyBJbnN0YWxsIGNhbGxiYWNrXG5cdFx0b3ZlcndyaXR0ZW4gPSB3aW5kb3dbIGNhbGxiYWNrTmFtZSBdO1xuXHRcdHdpbmRvd1sgY2FsbGJhY2tOYW1lIF0gPSBmdW5jdGlvbigpIHtcblx0XHRcdHJlc3BvbnNlQ29udGFpbmVyID0gYXJndW1lbnRzO1xuXHRcdH07XG5cblx0XHQvLyBDbGVhbi11cCBmdW5jdGlvbiAoZmlyZXMgYWZ0ZXIgY29udmVydGVycylcblx0XHRqcVhIUi5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBJZiBwcmV2aW91cyB2YWx1ZSBkaWRuJ3QgZXhpc3QgLSByZW1vdmUgaXRcblx0XHRcdGlmICggb3ZlcndyaXR0ZW4gPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0alF1ZXJ5KCB3aW5kb3cgKS5yZW1vdmVQcm9wKCBjYWxsYmFja05hbWUgKTtcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIHJlc3RvcmUgcHJlZXhpc3RpbmcgdmFsdWVcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHdpbmRvd1sgY2FsbGJhY2tOYW1lIF0gPSBvdmVyd3JpdHRlbjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2F2ZSBiYWNrIGFzIGZyZWVcblx0XHRcdGlmICggc1sgY2FsbGJhY2tOYW1lIF0gKSB7XG5cblx0XHRcdFx0Ly8gTWFrZSBzdXJlIHRoYXQgcmUtdXNpbmcgdGhlIG9wdGlvbnMgZG9lc24ndCBzY3JldyB0aGluZ3MgYXJvdW5kXG5cdFx0XHRcdHMuanNvbnBDYWxsYmFjayA9IG9yaWdpbmFsU2V0dGluZ3MuanNvbnBDYWxsYmFjaztcblxuXHRcdFx0XHQvLyBTYXZlIHRoZSBjYWxsYmFjayBuYW1lIGZvciBmdXR1cmUgdXNlXG5cdFx0XHRcdG9sZENhbGxiYWNrcy5wdXNoKCBjYWxsYmFja05hbWUgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ2FsbCBpZiBpdCB3YXMgYSBmdW5jdGlvbiBhbmQgd2UgaGF2ZSBhIHJlc3BvbnNlXG5cdFx0XHRpZiAoIHJlc3BvbnNlQ29udGFpbmVyICYmIGlzRnVuY3Rpb24oIG92ZXJ3cml0dGVuICkgKSB7XG5cdFx0XHRcdG92ZXJ3cml0dGVuKCByZXNwb25zZUNvbnRhaW5lclsgMCBdICk7XG5cdFx0XHR9XG5cblx0XHRcdHJlc3BvbnNlQ29udGFpbmVyID0gb3ZlcndyaXR0ZW4gPSB1bmRlZmluZWQ7XG5cdFx0fSApO1xuXG5cdFx0Ly8gRGVsZWdhdGUgdG8gc2NyaXB0XG5cdFx0cmV0dXJuIFwic2NyaXB0XCI7XG5cdH1cbn0gKTtcblxuXG5cblxuLy8gU3VwcG9ydDogU2FmYXJpIDggb25seVxuLy8gSW4gU2FmYXJpIDggZG9jdW1lbnRzIGNyZWF0ZWQgdmlhIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudFxuLy8gY29sbGFwc2Ugc2libGluZyBmb3JtczogdGhlIHNlY29uZCBvbmUgYmVjb21lcyBhIGNoaWxkIG9mIHRoZSBmaXJzdCBvbmUuXG4vLyBCZWNhdXNlIG9mIHRoYXQsIHRoaXMgc2VjdXJpdHkgbWVhc3VyZSBoYXMgdG8gYmUgZGlzYWJsZWQgaW4gU2FmYXJpIDguXG4vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MzM3XG5zdXBwb3J0LmNyZWF0ZUhUTUxEb2N1bWVudCA9ICggZnVuY3Rpb24oKSB7XG5cdHZhciBib2R5ID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCBcIlwiICkuYm9keTtcblx0Ym9keS5pbm5lckhUTUwgPSBcIjxmb3JtPjwvZm9ybT48Zm9ybT48L2Zvcm0+XCI7XG5cdHJldHVybiBib2R5LmNoaWxkTm9kZXMubGVuZ3RoID09PSAyO1xufSApKCk7XG5cblxuLy8gQXJndW1lbnQgXCJkYXRhXCIgc2hvdWxkIGJlIHN0cmluZyBvZiBodG1sXG4vLyBjb250ZXh0IChvcHRpb25hbCk6IElmIHNwZWNpZmllZCwgdGhlIGZyYWdtZW50IHdpbGwgYmUgY3JlYXRlZCBpbiB0aGlzIGNvbnRleHQsXG4vLyBkZWZhdWx0cyB0byBkb2N1bWVudFxuLy8ga2VlcFNjcmlwdHMgKG9wdGlvbmFsKTogSWYgdHJ1ZSwgd2lsbCBpbmNsdWRlIHNjcmlwdHMgcGFzc2VkIGluIHRoZSBodG1sIHN0cmluZ1xualF1ZXJ5LnBhcnNlSFRNTCA9IGZ1bmN0aW9uKCBkYXRhLCBjb250ZXh0LCBrZWVwU2NyaXB0cyApIHtcblx0aWYgKCB0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4gW107XG5cdH1cblx0aWYgKCB0eXBlb2YgY29udGV4dCA9PT0gXCJib29sZWFuXCIgKSB7XG5cdFx0a2VlcFNjcmlwdHMgPSBjb250ZXh0O1xuXHRcdGNvbnRleHQgPSBmYWxzZTtcblx0fVxuXG5cdHZhciBiYXNlLCBwYXJzZWQsIHNjcmlwdHM7XG5cblx0aWYgKCAhY29udGV4dCApIHtcblxuXHRcdC8vIFN0b3Agc2NyaXB0cyBvciBpbmxpbmUgZXZlbnQgaGFuZGxlcnMgZnJvbSBiZWluZyBleGVjdXRlZCBpbW1lZGlhdGVseVxuXHRcdC8vIGJ5IHVzaW5nIGRvY3VtZW50LmltcGxlbWVudGF0aW9uXG5cdFx0aWYgKCBzdXBwb3J0LmNyZWF0ZUhUTUxEb2N1bWVudCApIHtcblx0XHRcdGNvbnRleHQgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIFwiXCIgKTtcblxuXHRcdFx0Ly8gU2V0IHRoZSBiYXNlIGhyZWYgZm9yIHRoZSBjcmVhdGVkIGRvY3VtZW50XG5cdFx0XHQvLyBzbyBhbnkgcGFyc2VkIGVsZW1lbnRzIHdpdGggVVJMc1xuXHRcdFx0Ly8gYXJlIGJhc2VkIG9uIHRoZSBkb2N1bWVudCdzIFVSTCAoZ2gtMjk2NSlcblx0XHRcdGJhc2UgPSBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIFwiYmFzZVwiICk7XG5cdFx0XHRiYXNlLmhyZWYgPSBkb2N1bWVudC5sb2NhdGlvbi5ocmVmO1xuXHRcdFx0Y29udGV4dC5oZWFkLmFwcGVuZENoaWxkKCBiYXNlICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnRleHQgPSBkb2N1bWVudDtcblx0XHR9XG5cdH1cblxuXHRwYXJzZWQgPSByc2luZ2xlVGFnLmV4ZWMoIGRhdGEgKTtcblx0c2NyaXB0cyA9ICFrZWVwU2NyaXB0cyAmJiBbXTtcblxuXHQvLyBTaW5nbGUgdGFnXG5cdGlmICggcGFyc2VkICkge1xuXHRcdHJldHVybiBbIGNvbnRleHQuY3JlYXRlRWxlbWVudCggcGFyc2VkWyAxIF0gKSBdO1xuXHR9XG5cblx0cGFyc2VkID0gYnVpbGRGcmFnbWVudCggWyBkYXRhIF0sIGNvbnRleHQsIHNjcmlwdHMgKTtcblxuXHRpZiAoIHNjcmlwdHMgJiYgc2NyaXB0cy5sZW5ndGggKSB7XG5cdFx0alF1ZXJ5KCBzY3JpcHRzICkucmVtb3ZlKCk7XG5cdH1cblxuXHRyZXR1cm4galF1ZXJ5Lm1lcmdlKCBbXSwgcGFyc2VkLmNoaWxkTm9kZXMgKTtcbn07XG5cblxuLyoqXG4gKiBMb2FkIGEgdXJsIGludG8gYSBwYWdlXG4gKi9cbmpRdWVyeS5mbi5sb2FkID0gZnVuY3Rpb24oIHVybCwgcGFyYW1zLCBjYWxsYmFjayApIHtcblx0dmFyIHNlbGVjdG9yLCB0eXBlLCByZXNwb25zZSxcblx0XHRzZWxmID0gdGhpcyxcblx0XHRvZmYgPSB1cmwuaW5kZXhPZiggXCIgXCIgKTtcblxuXHRpZiAoIG9mZiA+IC0xICkge1xuXHRcdHNlbGVjdG9yID0gc3RyaXBBbmRDb2xsYXBzZSggdXJsLnNsaWNlKCBvZmYgKSApO1xuXHRcdHVybCA9IHVybC5zbGljZSggMCwgb2ZmICk7XG5cdH1cblxuXHQvLyBJZiBpdCdzIGEgZnVuY3Rpb25cblx0aWYgKCBpc0Z1bmN0aW9uKCBwYXJhbXMgKSApIHtcblxuXHRcdC8vIFdlIGFzc3VtZSB0aGF0IGl0J3MgdGhlIGNhbGxiYWNrXG5cdFx0Y2FsbGJhY2sgPSBwYXJhbXM7XG5cdFx0cGFyYW1zID0gdW5kZWZpbmVkO1xuXG5cdC8vIE90aGVyd2lzZSwgYnVpbGQgYSBwYXJhbSBzdHJpbmdcblx0fSBlbHNlIGlmICggcGFyYW1zICYmIHR5cGVvZiBwYXJhbXMgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0dHlwZSA9IFwiUE9TVFwiO1xuXHR9XG5cblx0Ly8gSWYgd2UgaGF2ZSBlbGVtZW50cyB0byBtb2RpZnksIG1ha2UgdGhlIHJlcXVlc3Rcblx0aWYgKCBzZWxmLmxlbmd0aCA+IDAgKSB7XG5cdFx0alF1ZXJ5LmFqYXgoIHtcblx0XHRcdHVybDogdXJsLFxuXG5cdFx0XHQvLyBJZiBcInR5cGVcIiB2YXJpYWJsZSBpcyB1bmRlZmluZWQsIHRoZW4gXCJHRVRcIiBtZXRob2Qgd2lsbCBiZSB1c2VkLlxuXHRcdFx0Ly8gTWFrZSB2YWx1ZSBvZiB0aGlzIGZpZWxkIGV4cGxpY2l0IHNpbmNlXG5cdFx0XHQvLyB1c2VyIGNhbiBvdmVycmlkZSBpdCB0aHJvdWdoIGFqYXhTZXR1cCBtZXRob2Rcblx0XHRcdHR5cGU6IHR5cGUgfHwgXCJHRVRcIixcblx0XHRcdGRhdGFUeXBlOiBcImh0bWxcIixcblx0XHRcdGRhdGE6IHBhcmFtc1xuXHRcdH0gKS5kb25lKCBmdW5jdGlvbiggcmVzcG9uc2VUZXh0ICkge1xuXG5cdFx0XHQvLyBTYXZlIHJlc3BvbnNlIGZvciB1c2UgaW4gY29tcGxldGUgY2FsbGJhY2tcblx0XHRcdHJlc3BvbnNlID0gYXJndW1lbnRzO1xuXG5cdFx0XHRzZWxmLmh0bWwoIHNlbGVjdG9yID9cblxuXHRcdFx0XHQvLyBJZiBhIHNlbGVjdG9yIHdhcyBzcGVjaWZpZWQsIGxvY2F0ZSB0aGUgcmlnaHQgZWxlbWVudHMgaW4gYSBkdW1teSBkaXZcblx0XHRcdFx0Ly8gRXhjbHVkZSBzY3JpcHRzIHRvIGF2b2lkIElFICdQZXJtaXNzaW9uIERlbmllZCcgZXJyb3JzXG5cdFx0XHRcdGpRdWVyeSggXCI8ZGl2PlwiICkuYXBwZW5kKCBqUXVlcnkucGFyc2VIVE1MKCByZXNwb25zZVRleHQgKSApLmZpbmQoIHNlbGVjdG9yICkgOlxuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSB1c2UgdGhlIGZ1bGwgcmVzdWx0XG5cdFx0XHRcdHJlc3BvbnNlVGV4dCApO1xuXG5cdFx0Ly8gSWYgdGhlIHJlcXVlc3Qgc3VjY2VlZHMsIHRoaXMgZnVuY3Rpb24gZ2V0cyBcImRhdGFcIiwgXCJzdGF0dXNcIiwgXCJqcVhIUlwiXG5cdFx0Ly8gYnV0IHRoZXkgYXJlIGlnbm9yZWQgYmVjYXVzZSByZXNwb25zZSB3YXMgc2V0IGFib3ZlLlxuXHRcdC8vIElmIGl0IGZhaWxzLCB0aGlzIGZ1bmN0aW9uIGdldHMgXCJqcVhIUlwiLCBcInN0YXR1c1wiLCBcImVycm9yXCJcblx0XHR9ICkuYWx3YXlzKCBjYWxsYmFjayAmJiBmdW5jdGlvbigganFYSFIsIHN0YXR1cyApIHtcblx0XHRcdHNlbGYuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGNhbGxiYWNrLmFwcGx5KCB0aGlzLCByZXNwb25zZSB8fCBbIGpxWEhSLnJlc3BvbnNlVGV4dCwgc3RhdHVzLCBqcVhIUiBdICk7XG5cdFx0XHR9ICk7XG5cdFx0fSApO1xuXHR9XG5cblx0cmV0dXJuIHRoaXM7XG59O1xuXG5cblxuXG4vLyBBdHRhY2ggYSBidW5jaCBvZiBmdW5jdGlvbnMgZm9yIGhhbmRsaW5nIGNvbW1vbiBBSkFYIGV2ZW50c1xualF1ZXJ5LmVhY2goIFtcblx0XCJhamF4U3RhcnRcIixcblx0XCJhamF4U3RvcFwiLFxuXHRcImFqYXhDb21wbGV0ZVwiLFxuXHRcImFqYXhFcnJvclwiLFxuXHRcImFqYXhTdWNjZXNzXCIsXG5cdFwiYWpheFNlbmRcIlxuXSwgZnVuY3Rpb24oIGksIHR5cGUgKSB7XG5cdGpRdWVyeS5mblsgdHlwZSBdID0gZnVuY3Rpb24oIGZuICkge1xuXHRcdHJldHVybiB0aGlzLm9uKCB0eXBlLCBmbiApO1xuXHR9O1xufSApO1xuXG5cblxuXG5qUXVlcnkuZXhwci5wc2V1ZG9zLmFuaW1hdGVkID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdHJldHVybiBqUXVlcnkuZ3JlcCggalF1ZXJ5LnRpbWVycywgZnVuY3Rpb24oIGZuICkge1xuXHRcdHJldHVybiBlbGVtID09PSBmbi5lbGVtO1xuXHR9ICkubGVuZ3RoO1xufTtcblxuXG5cblxualF1ZXJ5Lm9mZnNldCA9IHtcblx0c2V0T2Zmc2V0OiBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgaSApIHtcblx0XHR2YXIgY3VyUG9zaXRpb24sIGN1ckxlZnQsIGN1ckNTU1RvcCwgY3VyVG9wLCBjdXJPZmZzZXQsIGN1ckNTU0xlZnQsIGNhbGN1bGF0ZVBvc2l0aW9uLFxuXHRcdFx0cG9zaXRpb24gPSBqUXVlcnkuY3NzKCBlbGVtLCBcInBvc2l0aW9uXCIgKSxcblx0XHRcdGN1ckVsZW0gPSBqUXVlcnkoIGVsZW0gKSxcblx0XHRcdHByb3BzID0ge307XG5cblx0XHQvLyBTZXQgcG9zaXRpb24gZmlyc3QsIGluLWNhc2UgdG9wL2xlZnQgYXJlIHNldCBldmVuIG9uIHN0YXRpYyBlbGVtXG5cdFx0aWYgKCBwb3NpdGlvbiA9PT0gXCJzdGF0aWNcIiApIHtcblx0XHRcdGVsZW0uc3R5bGUucG9zaXRpb24gPSBcInJlbGF0aXZlXCI7XG5cdFx0fVxuXG5cdFx0Y3VyT2Zmc2V0ID0gY3VyRWxlbS5vZmZzZXQoKTtcblx0XHRjdXJDU1NUb3AgPSBqUXVlcnkuY3NzKCBlbGVtLCBcInRvcFwiICk7XG5cdFx0Y3VyQ1NTTGVmdCA9IGpRdWVyeS5jc3MoIGVsZW0sIFwibGVmdFwiICk7XG5cdFx0Y2FsY3VsYXRlUG9zaXRpb24gPSAoIHBvc2l0aW9uID09PSBcImFic29sdXRlXCIgfHwgcG9zaXRpb24gPT09IFwiZml4ZWRcIiApICYmXG5cdFx0XHQoIGN1ckNTU1RvcCArIGN1ckNTU0xlZnQgKS5pbmRleE9mKCBcImF1dG9cIiApID4gLTE7XG5cblx0XHQvLyBOZWVkIHRvIGJlIGFibGUgdG8gY2FsY3VsYXRlIHBvc2l0aW9uIGlmIGVpdGhlclxuXHRcdC8vIHRvcCBvciBsZWZ0IGlzIGF1dG8gYW5kIHBvc2l0aW9uIGlzIGVpdGhlciBhYnNvbHV0ZSBvciBmaXhlZFxuXHRcdGlmICggY2FsY3VsYXRlUG9zaXRpb24gKSB7XG5cdFx0XHRjdXJQb3NpdGlvbiA9IGN1ckVsZW0ucG9zaXRpb24oKTtcblx0XHRcdGN1clRvcCA9IGN1clBvc2l0aW9uLnRvcDtcblx0XHRcdGN1ckxlZnQgPSBjdXJQb3NpdGlvbi5sZWZ0O1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdGN1clRvcCA9IHBhcnNlRmxvYXQoIGN1ckNTU1RvcCApIHx8IDA7XG5cdFx0XHRjdXJMZWZ0ID0gcGFyc2VGbG9hdCggY3VyQ1NTTGVmdCApIHx8IDA7XG5cdFx0fVxuXG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBvcHRpb25zICkgKSB7XG5cblx0XHRcdC8vIFVzZSBqUXVlcnkuZXh0ZW5kIGhlcmUgdG8gYWxsb3cgbW9kaWZpY2F0aW9uIG9mIGNvb3JkaW5hdGVzIGFyZ3VtZW50IChnaC0xODQ4KVxuXHRcdFx0b3B0aW9ucyA9IG9wdGlvbnMuY2FsbCggZWxlbSwgaSwgalF1ZXJ5LmV4dGVuZCgge30sIGN1ck9mZnNldCApICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBvcHRpb25zLnRvcCAhPSBudWxsICkge1xuXHRcdFx0cHJvcHMudG9wID0gKCBvcHRpb25zLnRvcCAtIGN1ck9mZnNldC50b3AgKSArIGN1clRvcDtcblx0XHR9XG5cdFx0aWYgKCBvcHRpb25zLmxlZnQgIT0gbnVsbCApIHtcblx0XHRcdHByb3BzLmxlZnQgPSAoIG9wdGlvbnMubGVmdCAtIGN1ck9mZnNldC5sZWZ0ICkgKyBjdXJMZWZ0O1xuXHRcdH1cblxuXHRcdGlmICggXCJ1c2luZ1wiIGluIG9wdGlvbnMgKSB7XG5cdFx0XHRvcHRpb25zLnVzaW5nLmNhbGwoIGVsZW0sIHByb3BzICk7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y3VyRWxlbS5jc3MoIHByb3BzICk7XG5cdFx0fVxuXHR9XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cblx0Ly8gb2Zmc2V0KCkgcmVsYXRlcyBhbiBlbGVtZW50J3MgYm9yZGVyIGJveCB0byB0aGUgZG9jdW1lbnQgb3JpZ2luXG5cdG9mZnNldDogZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG5cblx0XHQvLyBQcmVzZXJ2ZSBjaGFpbmluZyBmb3Igc2V0dGVyXG5cdFx0aWYgKCBhcmd1bWVudHMubGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdHRoaXMgOlxuXHRcdFx0XHR0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRcdGpRdWVyeS5vZmZzZXQuc2V0T2Zmc2V0KCB0aGlzLCBvcHRpb25zLCBpICk7XG5cdFx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHR2YXIgcmVjdCwgd2luLFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXTtcblxuXHRcdGlmICggIWVsZW0gKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gUmV0dXJuIHplcm9zIGZvciBkaXNjb25uZWN0ZWQgYW5kIGhpZGRlbiAoZGlzcGxheTogbm9uZSkgZWxlbWVudHMgKGdoLTIzMTApXG5cdFx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG5cdFx0Ly8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYVxuXHRcdC8vIGRpc2Nvbm5lY3RlZCBub2RlIGluIElFIHRocm93cyBhbiBlcnJvclxuXHRcdGlmICggIWVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4geyB0b3A6IDAsIGxlZnQ6IDAgfTtcblx0XHR9XG5cblx0XHQvLyBHZXQgZG9jdW1lbnQtcmVsYXRpdmUgcG9zaXRpb24gYnkgYWRkaW5nIHZpZXdwb3J0IHNjcm9sbCB0byB2aWV3cG9ydC1yZWxhdGl2ZSBnQkNSXG5cdFx0cmVjdCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cdFx0d2luID0gZWxlbS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O1xuXHRcdHJldHVybiB7XG5cdFx0XHR0b3A6IHJlY3QudG9wICsgd2luLnBhZ2VZT2Zmc2V0LFxuXHRcdFx0bGVmdDogcmVjdC5sZWZ0ICsgd2luLnBhZ2VYT2Zmc2V0XG5cdFx0fTtcblx0fSxcblxuXHQvLyBwb3NpdGlvbigpIHJlbGF0ZXMgYW4gZWxlbWVudCdzIG1hcmdpbiBib3ggdG8gaXRzIG9mZnNldCBwYXJlbnQncyBwYWRkaW5nIGJveFxuXHQvLyBUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZSBiZWhhdmlvciBvZiBDU1MgYWJzb2x1dGUgcG9zaXRpb25pbmdcblx0cG9zaXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdGlmICggIXRoaXNbIDAgXSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR2YXIgb2Zmc2V0UGFyZW50LCBvZmZzZXQsIGRvYyxcblx0XHRcdGVsZW0gPSB0aGlzWyAwIF0sXG5cdFx0XHRwYXJlbnRPZmZzZXQgPSB7IHRvcDogMCwgbGVmdDogMCB9O1xuXG5cdFx0Ly8gcG9zaXRpb246Zml4ZWQgZWxlbWVudHMgYXJlIG9mZnNldCBmcm9tIHRoZSB2aWV3cG9ydCwgd2hpY2ggaXRzZWxmIGFsd2F5cyBoYXMgemVybyBvZmZzZXRcblx0XHRpZiAoIGpRdWVyeS5jc3MoIGVsZW0sIFwicG9zaXRpb25cIiApID09PSBcImZpeGVkXCIgKSB7XG5cblx0XHRcdC8vIEFzc3VtZSBwb3NpdGlvbjpmaXhlZCBpbXBsaWVzIGF2YWlsYWJpbGl0eSBvZiBnZXRCb3VuZGluZ0NsaWVudFJlY3Rcblx0XHRcdG9mZnNldCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0b2Zmc2V0ID0gdGhpcy5vZmZzZXQoKTtcblxuXHRcdFx0Ly8gQWNjb3VudCBmb3IgdGhlICpyZWFsKiBvZmZzZXQgcGFyZW50LCB3aGljaCBjYW4gYmUgdGhlIGRvY3VtZW50IG9yIGl0cyByb290IGVsZW1lbnRcblx0XHRcdC8vIHdoZW4gYSBzdGF0aWNhbGx5IHBvc2l0aW9uZWQgZWxlbWVudCBpcyBpZGVudGlmaWVkXG5cdFx0XHRkb2MgPSBlbGVtLm93bmVyRG9jdW1lbnQ7XG5cdFx0XHRvZmZzZXRQYXJlbnQgPSBlbGVtLm9mZnNldFBhcmVudCB8fCBkb2MuZG9jdW1lbnRFbGVtZW50O1xuXHRcdFx0d2hpbGUgKCBvZmZzZXRQYXJlbnQgJiZcblx0XHRcdFx0KCBvZmZzZXRQYXJlbnQgPT09IGRvYy5ib2R5IHx8IG9mZnNldFBhcmVudCA9PT0gZG9jLmRvY3VtZW50RWxlbWVudCApICYmXG5cdFx0XHRcdGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgXCJwb3NpdGlvblwiICkgPT09IFwic3RhdGljXCIgKSB7XG5cblx0XHRcdFx0b2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50LnBhcmVudE5vZGU7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIG9mZnNldFBhcmVudCAmJiBvZmZzZXRQYXJlbnQgIT09IGVsZW0gJiYgb2Zmc2V0UGFyZW50Lm5vZGVUeXBlID09PSAxICkge1xuXG5cdFx0XHRcdC8vIEluY29ycG9yYXRlIGJvcmRlcnMgaW50byBpdHMgb2Zmc2V0LCBzaW5jZSB0aGV5IGFyZSBvdXRzaWRlIGl0cyBjb250ZW50IG9yaWdpblxuXHRcdFx0XHRwYXJlbnRPZmZzZXQgPSBqUXVlcnkoIG9mZnNldFBhcmVudCApLm9mZnNldCgpO1xuXHRcdFx0XHRwYXJlbnRPZmZzZXQudG9wICs9IGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgXCJib3JkZXJUb3BXaWR0aFwiLCB0cnVlICk7XG5cdFx0XHRcdHBhcmVudE9mZnNldC5sZWZ0ICs9IGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgXCJib3JkZXJMZWZ0V2lkdGhcIiwgdHJ1ZSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFN1YnRyYWN0IHBhcmVudCBvZmZzZXRzIGFuZCBlbGVtZW50IG1hcmdpbnNcblx0XHRyZXR1cm4ge1xuXHRcdFx0dG9wOiBvZmZzZXQudG9wIC0gcGFyZW50T2Zmc2V0LnRvcCAtIGpRdWVyeS5jc3MoIGVsZW0sIFwibWFyZ2luVG9wXCIsIHRydWUgKSxcblx0XHRcdGxlZnQ6IG9mZnNldC5sZWZ0IC0gcGFyZW50T2Zmc2V0LmxlZnQgLSBqUXVlcnkuY3NzKCBlbGVtLCBcIm1hcmdpbkxlZnRcIiwgdHJ1ZSApXG5cdFx0fTtcblx0fSxcblxuXHQvLyBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBkb2N1bWVudEVsZW1lbnQgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcblx0Ly8gMSkgRm9yIHRoZSBlbGVtZW50IGluc2lkZSB0aGUgaWZyYW1lIHdpdGhvdXQgb2Zmc2V0UGFyZW50LCB0aGlzIG1ldGhvZCB3aWxsIHJldHVyblxuXHQvLyAgICBkb2N1bWVudEVsZW1lbnQgb2YgdGhlIHBhcmVudCB3aW5kb3dcblx0Ly8gMikgRm9yIHRoZSBoaWRkZW4gb3IgZGV0YWNoZWQgZWxlbWVudFxuXHQvLyAzKSBGb3IgYm9keSBvciBodG1sIGVsZW1lbnQsIGkuZS4gaW4gY2FzZSBvZiB0aGUgaHRtbCBub2RlIC0gaXQgd2lsbCByZXR1cm4gaXRzZWxmXG5cdC8vXG5cdC8vIGJ1dCB0aG9zZSBleGNlcHRpb25zIHdlcmUgbmV2ZXIgcHJlc2VudGVkIGFzIGEgcmVhbCBsaWZlIHVzZS1jYXNlc1xuXHQvLyBhbmQgbWlnaHQgYmUgY29uc2lkZXJlZCBhcyBtb3JlIHByZWZlcmFibGUgcmVzdWx0cy5cblx0Ly9cblx0Ly8gVGhpcyBsb2dpYywgaG93ZXZlciwgaXMgbm90IGd1YXJhbnRlZWQgYW5kIGNhbiBjaGFuZ2UgYXQgYW55IHBvaW50IGluIHRoZSBmdXR1cmVcblx0b2Zmc2V0UGFyZW50OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIG9mZnNldFBhcmVudCA9IHRoaXMub2Zmc2V0UGFyZW50O1xuXG5cdFx0XHR3aGlsZSAoIG9mZnNldFBhcmVudCAmJiBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnQsIFwicG9zaXRpb25cIiApID09PSBcInN0YXRpY1wiICkge1xuXHRcdFx0XHRvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQub2Zmc2V0UGFyZW50O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGRvY3VtZW50RWxlbWVudDtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxuLy8gQ3JlYXRlIHNjcm9sbExlZnQgYW5kIHNjcm9sbFRvcCBtZXRob2RzXG5qUXVlcnkuZWFjaCggeyBzY3JvbGxMZWZ0OiBcInBhZ2VYT2Zmc2V0XCIsIHNjcm9sbFRvcDogXCJwYWdlWU9mZnNldFwiIH0sIGZ1bmN0aW9uKCBtZXRob2QsIHByb3AgKSB7XG5cdHZhciB0b3AgPSBcInBhZ2VZT2Zmc2V0XCIgPT09IHByb3A7XG5cblx0alF1ZXJ5LmZuWyBtZXRob2QgXSA9IGZ1bmN0aW9uKCB2YWwgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIG1ldGhvZCwgdmFsICkge1xuXG5cdFx0XHQvLyBDb2FsZXNjZSBkb2N1bWVudHMgYW5kIHdpbmRvd3Ncblx0XHRcdHZhciB3aW47XG5cdFx0XHRpZiAoIGlzV2luZG93KCBlbGVtICkgKSB7XG5cdFx0XHRcdHdpbiA9IGVsZW07XG5cdFx0XHR9IGVsc2UgaWYgKCBlbGVtLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHR3aW4gPSBlbGVtLmRlZmF1bHRWaWV3O1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHZhbCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRyZXR1cm4gd2luID8gd2luWyBwcm9wIF0gOiBlbGVtWyBtZXRob2QgXTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCB3aW4gKSB7XG5cdFx0XHRcdHdpbi5zY3JvbGxUbyhcblx0XHRcdFx0XHQhdG9wID8gdmFsIDogd2luLnBhZ2VYT2Zmc2V0LFxuXHRcdFx0XHRcdHRvcCA/IHZhbCA6IHdpbi5wYWdlWU9mZnNldFxuXHRcdFx0XHQpO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRlbGVtWyBtZXRob2QgXSA9IHZhbDtcblx0XHRcdH1cblx0XHR9LCBtZXRob2QsIHZhbCwgYXJndW1lbnRzLmxlbmd0aCApO1xuXHR9O1xufSApO1xuXG4vLyBTdXBwb3J0OiBTYWZhcmkgPD03IC0gOS4xLCBDaHJvbWUgPD0zNyAtIDQ5XG4vLyBBZGQgdGhlIHRvcC9sZWZ0IGNzc0hvb2tzIHVzaW5nIGpRdWVyeS5mbi5wb3NpdGlvblxuLy8gV2Via2l0IGJ1ZzogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MDg0XG4vLyBCbGluayBidWc6IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTU4OTM0N1xuLy8gZ2V0Q29tcHV0ZWRTdHlsZSByZXR1cm5zIHBlcmNlbnQgd2hlbiBzcGVjaWZpZWQgZm9yIHRvcC9sZWZ0L2JvdHRvbS9yaWdodDtcbi8vIHJhdGhlciB0aGFuIG1ha2UgdGhlIGNzcyBtb2R1bGUgZGVwZW5kIG9uIHRoZSBvZmZzZXQgbW9kdWxlLCBqdXN0IGNoZWNrIGZvciBpdCBoZXJlXG5qUXVlcnkuZWFjaCggWyBcInRvcFwiLCBcImxlZnRcIiBdLCBmdW5jdGlvbiggaSwgcHJvcCApIHtcblx0alF1ZXJ5LmNzc0hvb2tzWyBwcm9wIF0gPSBhZGRHZXRIb29rSWYoIHN1cHBvcnQucGl4ZWxQb3NpdGlvbixcblx0XHRmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XG5cdFx0XHRpZiAoIGNvbXB1dGVkICkge1xuXHRcdFx0XHRjb21wdXRlZCA9IGN1ckNTUyggZWxlbSwgcHJvcCApO1xuXG5cdFx0XHRcdC8vIElmIGN1ckNTUyByZXR1cm5zIHBlcmNlbnRhZ2UsIGZhbGxiYWNrIHRvIG9mZnNldFxuXHRcdFx0XHRyZXR1cm4gcm51bW5vbnB4LnRlc3QoIGNvbXB1dGVkICkgP1xuXHRcdFx0XHRcdGpRdWVyeSggZWxlbSApLnBvc2l0aW9uKClbIHByb3AgXSArIFwicHhcIiA6XG5cdFx0XHRcdFx0Y29tcHV0ZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXHQpO1xufSApO1xuXG5cbi8vIENyZWF0ZSBpbm5lckhlaWdodCwgaW5uZXJXaWR0aCwgaGVpZ2h0LCB3aWR0aCwgb3V0ZXJIZWlnaHQgYW5kIG91dGVyV2lkdGggbWV0aG9kc1xualF1ZXJ5LmVhY2goIHsgSGVpZ2h0OiBcImhlaWdodFwiLCBXaWR0aDogXCJ3aWR0aFwiIH0sIGZ1bmN0aW9uKCBuYW1lLCB0eXBlICkge1xuXHRqUXVlcnkuZWFjaCggeyBwYWRkaW5nOiBcImlubmVyXCIgKyBuYW1lLCBjb250ZW50OiB0eXBlLCBcIlwiOiBcIm91dGVyXCIgKyBuYW1lIH0sXG5cdFx0ZnVuY3Rpb24oIGRlZmF1bHRFeHRyYSwgZnVuY05hbWUgKSB7XG5cblx0XHQvLyBNYXJnaW4gaXMgb25seSBmb3Igb3V0ZXJIZWlnaHQsIG91dGVyV2lkdGhcblx0XHRqUXVlcnkuZm5bIGZ1bmNOYW1lIF0gPSBmdW5jdGlvbiggbWFyZ2luLCB2YWx1ZSApIHtcblx0XHRcdHZhciBjaGFpbmFibGUgPSBhcmd1bWVudHMubGVuZ3RoICYmICggZGVmYXVsdEV4dHJhIHx8IHR5cGVvZiBtYXJnaW4gIT09IFwiYm9vbGVhblwiICksXG5cdFx0XHRcdGV4dHJhID0gZGVmYXVsdEV4dHJhIHx8ICggbWFyZ2luID09PSB0cnVlIHx8IHZhbHVlID09PSB0cnVlID8gXCJtYXJnaW5cIiA6IFwiYm9yZGVyXCIgKTtcblxuXHRcdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIHR5cGUsIHZhbHVlICkge1xuXHRcdFx0XHR2YXIgZG9jO1xuXG5cdFx0XHRcdGlmICggaXNXaW5kb3coIGVsZW0gKSApIHtcblxuXHRcdFx0XHRcdC8vICQoIHdpbmRvdyApLm91dGVyV2lkdGgvSGVpZ2h0IHJldHVybiB3L2ggaW5jbHVkaW5nIHNjcm9sbGJhcnMgKGdoLTE3MjkpXG5cdFx0XHRcdFx0cmV0dXJuIGZ1bmNOYW1lLmluZGV4T2YoIFwib3V0ZXJcIiApID09PSAwID9cblx0XHRcdFx0XHRcdGVsZW1bIFwiaW5uZXJcIiArIG5hbWUgXSA6XG5cdFx0XHRcdFx0XHRlbGVtLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsgXCJjbGllbnRcIiArIG5hbWUgXTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEdldCBkb2N1bWVudCB3aWR0aCBvciBoZWlnaHRcblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHRcdGRvYyA9IGVsZW0uZG9jdW1lbnRFbGVtZW50O1xuXG5cdFx0XHRcdFx0Ly8gRWl0aGVyIHNjcm9sbFtXaWR0aC9IZWlnaHRdIG9yIG9mZnNldFtXaWR0aC9IZWlnaHRdIG9yIGNsaWVudFtXaWR0aC9IZWlnaHRdLFxuXHRcdFx0XHRcdC8vIHdoaWNoZXZlciBpcyBncmVhdGVzdFxuXHRcdFx0XHRcdHJldHVybiBNYXRoLm1heChcblx0XHRcdFx0XHRcdGVsZW0uYm9keVsgXCJzY3JvbGxcIiArIG5hbWUgXSwgZG9jWyBcInNjcm9sbFwiICsgbmFtZSBdLFxuXHRcdFx0XHRcdFx0ZWxlbS5ib2R5WyBcIm9mZnNldFwiICsgbmFtZSBdLCBkb2NbIFwib2Zmc2V0XCIgKyBuYW1lIF0sXG5cdFx0XHRcdFx0XHRkb2NbIFwiY2xpZW50XCIgKyBuYW1lIF1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgP1xuXG5cdFx0XHRcdFx0Ly8gR2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudCwgcmVxdWVzdGluZyBidXQgbm90IGZvcmNpbmcgcGFyc2VGbG9hdFxuXHRcdFx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIHR5cGUsIGV4dHJhICkgOlxuXG5cdFx0XHRcdFx0Ly8gU2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudFxuXHRcdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgdHlwZSwgdmFsdWUsIGV4dHJhICk7XG5cdFx0XHR9LCB0eXBlLCBjaGFpbmFibGUgPyBtYXJnaW4gOiB1bmRlZmluZWQsIGNoYWluYWJsZSApO1xuXHRcdH07XG5cdH0gKTtcbn0gKTtcblxuXG5qUXVlcnkuZWFjaCggKCBcImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCByZXNpemUgc2Nyb2xsIGNsaWNrIGRibGNsaWNrIFwiICtcblx0XCJtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBcIiArXG5cdFwiY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudVwiICkuc3BsaXQoIFwiIFwiICksXG5cdGZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXG5cdC8vIEhhbmRsZSBldmVudCBiaW5kaW5nXG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIGRhdGEsIGZuICkge1xuXHRcdHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMCA/XG5cdFx0XHR0aGlzLm9uKCBuYW1lLCBudWxsLCBkYXRhLCBmbiApIDpcblx0XHRcdHRoaXMudHJpZ2dlciggbmFtZSApO1xuXHR9O1xufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGhvdmVyOiBmdW5jdGlvbiggZm5PdmVyLCBmbk91dCApIHtcblx0XHRyZXR1cm4gdGhpcy5tb3VzZWVudGVyKCBmbk92ZXIgKS5tb3VzZWxlYXZlKCBmbk91dCB8fCBmbk92ZXIgKTtcblx0fVxufSApO1xuXG5cblxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cblx0YmluZDogZnVuY3Rpb24oIHR5cGVzLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZXMsIG51bGwsIGRhdGEsIGZuICk7XG5cdH0sXG5cdHVuYmluZDogZnVuY3Rpb24oIHR5cGVzLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vZmYoIHR5cGVzLCBudWxsLCBmbiApO1xuXHR9LFxuXG5cdGRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApO1xuXHR9LFxuXHR1bmRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBmbiApIHtcblxuXHRcdC8vICggbmFtZXNwYWNlICkgb3IgKCBzZWxlY3RvciwgdHlwZXMgWywgZm5dIClcblx0XHRyZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/XG5cdFx0XHR0aGlzLm9mZiggc2VsZWN0b3IsIFwiKipcIiApIDpcblx0XHRcdHRoaXMub2ZmKCB0eXBlcywgc2VsZWN0b3IgfHwgXCIqKlwiLCBmbiApO1xuXHR9XG59ICk7XG5cbi8vIEJpbmQgYSBmdW5jdGlvbiB0byBhIGNvbnRleHQsIG9wdGlvbmFsbHkgcGFydGlhbGx5IGFwcGx5aW5nIGFueVxuLy8gYXJndW1lbnRzLlxuLy8galF1ZXJ5LnByb3h5IGlzIGRlcHJlY2F0ZWQgdG8gcHJvbW90ZSBzdGFuZGFyZHMgKHNwZWNpZmljYWxseSBGdW5jdGlvbiNiaW5kKVxuLy8gSG93ZXZlciwgaXQgaXMgbm90IHNsYXRlZCBmb3IgcmVtb3ZhbCBhbnkgdGltZSBzb29uXG5qUXVlcnkucHJveHkgPSBmdW5jdGlvbiggZm4sIGNvbnRleHQgKSB7XG5cdHZhciB0bXAsIGFyZ3MsIHByb3h5O1xuXG5cdGlmICggdHlwZW9mIGNvbnRleHQgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0dG1wID0gZm5bIGNvbnRleHQgXTtcblx0XHRjb250ZXh0ID0gZm47XG5cdFx0Zm4gPSB0bXA7XG5cdH1cblxuXHQvLyBRdWljayBjaGVjayB0byBkZXRlcm1pbmUgaWYgdGFyZ2V0IGlzIGNhbGxhYmxlLCBpbiB0aGUgc3BlY1xuXHQvLyB0aGlzIHRocm93cyBhIFR5cGVFcnJvciwgYnV0IHdlIHdpbGwganVzdCByZXR1cm4gdW5kZWZpbmVkLlxuXHRpZiAoICFpc0Z1bmN0aW9uKCBmbiApICkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvLyBTaW11bGF0ZWQgYmluZFxuXHRhcmdzID0gc2xpY2UuY2FsbCggYXJndW1lbnRzLCAyICk7XG5cdHByb3h5ID0gZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGZuLmFwcGx5KCBjb250ZXh0IHx8IHRoaXMsIGFyZ3MuY29uY2F0KCBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSApICk7XG5cdH07XG5cblx0Ly8gU2V0IHRoZSBndWlkIG9mIHVuaXF1ZSBoYW5kbGVyIHRvIHRoZSBzYW1lIG9mIG9yaWdpbmFsIGhhbmRsZXIsIHNvIGl0IGNhbiBiZSByZW1vdmVkXG5cdHByb3h5Lmd1aWQgPSBmbi5ndWlkID0gZm4uZ3VpZCB8fCBqUXVlcnkuZ3VpZCsrO1xuXG5cdHJldHVybiBwcm94eTtcbn07XG5cbmpRdWVyeS5ob2xkUmVhZHkgPSBmdW5jdGlvbiggaG9sZCApIHtcblx0aWYgKCBob2xkICkge1xuXHRcdGpRdWVyeS5yZWFkeVdhaXQrKztcblx0fSBlbHNlIHtcblx0XHRqUXVlcnkucmVhZHkoIHRydWUgKTtcblx0fVxufTtcbmpRdWVyeS5pc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcbmpRdWVyeS5wYXJzZUpTT04gPSBKU09OLnBhcnNlO1xualF1ZXJ5Lm5vZGVOYW1lID0gbm9kZU5hbWU7XG5qUXVlcnkuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247XG5qUXVlcnkuaXNXaW5kb3cgPSBpc1dpbmRvdztcbmpRdWVyeS5jYW1lbENhc2UgPSBjYW1lbENhc2U7XG5qUXVlcnkudHlwZSA9IHRvVHlwZTtcblxualF1ZXJ5Lm5vdyA9IERhdGUubm93O1xuXG5qUXVlcnkuaXNOdW1lcmljID0gZnVuY3Rpb24oIG9iaiApIHtcblxuXHQvLyBBcyBvZiBqUXVlcnkgMy4wLCBpc051bWVyaWMgaXMgbGltaXRlZCB0b1xuXHQvLyBzdHJpbmdzIGFuZCBudW1iZXJzIChwcmltaXRpdmVzIG9yIG9iamVjdHMpXG5cdC8vIHRoYXQgY2FuIGJlIGNvZXJjZWQgdG8gZmluaXRlIG51bWJlcnMgKGdoLTI2NjIpXG5cdHZhciB0eXBlID0galF1ZXJ5LnR5cGUoIG9iaiApO1xuXHRyZXR1cm4gKCB0eXBlID09PSBcIm51bWJlclwiIHx8IHR5cGUgPT09IFwic3RyaW5nXCIgKSAmJlxuXG5cdFx0Ly8gcGFyc2VGbG9hdCBOYU5zIG51bWVyaWMtY2FzdCBmYWxzZSBwb3NpdGl2ZXMgKFwiXCIpXG5cdFx0Ly8gLi4uYnV0IG1pc2ludGVycHJldHMgbGVhZGluZy1udW1iZXIgc3RyaW5ncywgcGFydGljdWxhcmx5IGhleCBsaXRlcmFscyAoXCIweC4uLlwiKVxuXHRcdC8vIHN1YnRyYWN0aW9uIGZvcmNlcyBpbmZpbml0aWVzIHRvIE5hTlxuXHRcdCFpc05hTiggb2JqIC0gcGFyc2VGbG9hdCggb2JqICkgKTtcbn07XG5cblxuXG5cbi8vIFJlZ2lzdGVyIGFzIGEgbmFtZWQgQU1EIG1vZHVsZSwgc2luY2UgalF1ZXJ5IGNhbiBiZSBjb25jYXRlbmF0ZWQgd2l0aCBvdGhlclxuLy8gZmlsZXMgdGhhdCBtYXkgdXNlIGRlZmluZSwgYnV0IG5vdCB2aWEgYSBwcm9wZXIgY29uY2F0ZW5hdGlvbiBzY3JpcHQgdGhhdFxuLy8gdW5kZXJzdGFuZHMgYW5vbnltb3VzIEFNRCBtb2R1bGVzLiBBIG5hbWVkIEFNRCBpcyBzYWZlc3QgYW5kIG1vc3Qgcm9idXN0XG4vLyB3YXkgdG8gcmVnaXN0ZXIuIExvd2VyY2FzZSBqcXVlcnkgaXMgdXNlZCBiZWNhdXNlIEFNRCBtb2R1bGUgbmFtZXMgYXJlXG4vLyBkZXJpdmVkIGZyb20gZmlsZSBuYW1lcywgYW5kIGpRdWVyeSBpcyBub3JtYWxseSBkZWxpdmVyZWQgaW4gYSBsb3dlcmNhc2Vcbi8vIGZpbGUgbmFtZS4gRG8gdGhpcyBhZnRlciBjcmVhdGluZyB0aGUgZ2xvYmFsIHNvIHRoYXQgaWYgYW4gQU1EIG1vZHVsZSB3YW50c1xuLy8gdG8gY2FsbCBub0NvbmZsaWN0IHRvIGhpZGUgdGhpcyB2ZXJzaW9uIG9mIGpRdWVyeSwgaXQgd2lsbCB3b3JrLlxuXG4vLyBOb3RlIHRoYXQgZm9yIG1heGltdW0gcG9ydGFiaWxpdHksIGxpYnJhcmllcyB0aGF0IGFyZSBub3QgalF1ZXJ5IHNob3VsZFxuLy8gZGVjbGFyZSB0aGVtc2VsdmVzIGFzIGFub255bW91cyBtb2R1bGVzLCBhbmQgYXZvaWQgc2V0dGluZyBhIGdsb2JhbCBpZiBhblxuLy8gQU1EIGxvYWRlciBpcyBwcmVzZW50LiBqUXVlcnkgaXMgYSBzcGVjaWFsIGNhc2UuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qcmJ1cmtlL3JlcXVpcmVqcy93aWtpL1VwZGF0aW5nLWV4aXN0aW5nLWxpYnJhcmllcyN3aWtpLWFub25cblxuaWYgKCB0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCApIHtcblx0ZGVmaW5lKCBcImpxdWVyeVwiLCBbXSwgZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGpRdWVyeTtcblx0fSApO1xufVxuXG5cblxuXG52YXJcblxuXHQvLyBNYXAgb3ZlciBqUXVlcnkgaW4gY2FzZSBvZiBvdmVyd3JpdGVcblx0X2pRdWVyeSA9IHdpbmRvdy5qUXVlcnksXG5cblx0Ly8gTWFwIG92ZXIgdGhlICQgaW4gY2FzZSBvZiBvdmVyd3JpdGVcblx0XyQgPSB3aW5kb3cuJDtcblxualF1ZXJ5Lm5vQ29uZmxpY3QgPSBmdW5jdGlvbiggZGVlcCApIHtcblx0aWYgKCB3aW5kb3cuJCA9PT0galF1ZXJ5ICkge1xuXHRcdHdpbmRvdy4kID0gXyQ7XG5cdH1cblxuXHRpZiAoIGRlZXAgJiYgd2luZG93LmpRdWVyeSA9PT0galF1ZXJ5ICkge1xuXHRcdHdpbmRvdy5qUXVlcnkgPSBfalF1ZXJ5O1xuXHR9XG5cblx0cmV0dXJuIGpRdWVyeTtcbn07XG5cbi8vIEV4cG9zZSBqUXVlcnkgYW5kICQgaWRlbnRpZmllcnMsIGV2ZW4gaW4gQU1EXG4vLyAoIzcxMDIjY29tbWVudDoxMCwgaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9qcXVlcnkvcHVsbC81NTcpXG4vLyBhbmQgQ29tbW9uSlMgZm9yIGJyb3dzZXIgZW11bGF0b3JzICgjMTM1NjYpXG5pZiAoICFub0dsb2JhbCApIHtcblx0d2luZG93LmpRdWVyeSA9IHdpbmRvdy4kID0galF1ZXJ5O1xufVxuXG5cblxuXG5yZXR1cm4galF1ZXJ5O1xufSApO1xuIiwiLy8hIG1vbWVudC10aW1lem9uZS5qc1xuLy8hIHZlcnNpb24gOiAwLjUuMTdcbi8vISBDb3B5cmlnaHQgKGMpIEpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuLy8hIGxpY2Vuc2UgOiBNSVRcbi8vISBnaXRodWIuY29tL21vbWVudC9tb21lbnQtdGltZXpvbmVcblxuKGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7XG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdC8qZ2xvYmFsIGRlZmluZSovXG5cdGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcblx0XHRkZWZpbmUoWydtb21lbnQnXSwgZmFjdG9yeSk7ICAgICAgICAgICAgICAgICAvLyBBTURcblx0fSBlbHNlIGlmICh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykge1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKCdtb21lbnQnKSk7IC8vIE5vZGVcblx0fSBlbHNlIHtcblx0XHRmYWN0b3J5KHJvb3QubW9tZW50KTsgICAgICAgICAgICAgICAgICAgICAgICAvLyBCcm93c2VyXG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKG1vbWVudCkge1xuXHRcInVzZSBzdHJpY3RcIjtcblxuXHQvLyBEbyBub3QgbG9hZCBtb21lbnQtdGltZXpvbmUgYSBzZWNvbmQgdGltZS5cblx0Ly8gaWYgKG1vbWVudC50eiAhPT0gdW5kZWZpbmVkKSB7XG5cdC8vIFx0bG9nRXJyb3IoJ01vbWVudCBUaW1lem9uZSAnICsgbW9tZW50LnR6LnZlcnNpb24gKyAnIHdhcyBhbHJlYWR5IGxvYWRlZCAnICsgKG1vbWVudC50ei5kYXRhVmVyc2lvbiA/ICd3aXRoIGRhdGEgZnJvbSAnIDogJ3dpdGhvdXQgYW55IGRhdGEnKSArIG1vbWVudC50ei5kYXRhVmVyc2lvbik7XG5cdC8vIFx0cmV0dXJuIG1vbWVudDtcblx0Ly8gfVxuXG5cdHZhciBWRVJTSU9OID0gXCIwLjUuMTdcIixcblx0XHR6b25lcyA9IHt9LFxuXHRcdGxpbmtzID0ge30sXG5cdFx0bmFtZXMgPSB7fSxcblx0XHRndWVzc2VzID0ge30sXG5cdFx0Y2FjaGVkR3Vlc3MsXG5cblx0XHRtb21lbnRWZXJzaW9uID0gbW9tZW50LnZlcnNpb24uc3BsaXQoJy4nKSxcblx0XHRtYWpvciA9ICttb21lbnRWZXJzaW9uWzBdLFxuXHRcdG1pbm9yID0gK21vbWVudFZlcnNpb25bMV07XG5cblx0Ly8gTW9tZW50LmpzIHZlcnNpb24gY2hlY2tcblx0aWYgKG1ham9yIDwgMiB8fCAobWFqb3IgPT09IDIgJiYgbWlub3IgPCA2KSkge1xuXHRcdGxvZ0Vycm9yKCdNb21lbnQgVGltZXpvbmUgcmVxdWlyZXMgTW9tZW50LmpzID49IDIuNi4wLiBZb3UgYXJlIHVzaW5nIE1vbWVudC5qcyAnICsgbW9tZW50LnZlcnNpb24gKyAnLiBTZWUgbW9tZW50anMuY29tJyk7XG5cdH1cblxuXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cdFx0VW5wYWNraW5nXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXHRmdW5jdGlvbiBjaGFyQ29kZVRvSW50KGNoYXJDb2RlKSB7XG5cdFx0aWYgKGNoYXJDb2RlID4gOTYpIHtcblx0XHRcdHJldHVybiBjaGFyQ29kZSAtIDg3O1xuXHRcdH0gZWxzZSBpZiAoY2hhckNvZGUgPiA2NCkge1xuXHRcdFx0cmV0dXJuIGNoYXJDb2RlIC0gMjk7XG5cdFx0fVxuXHRcdHJldHVybiBjaGFyQ29kZSAtIDQ4O1xuXHR9XG5cblx0ZnVuY3Rpb24gdW5wYWNrQmFzZTYwKHN0cmluZykge1xuXHRcdHZhciBpID0gMCxcblx0XHRcdHBhcnRzID0gc3RyaW5nLnNwbGl0KCcuJyksXG5cdFx0XHR3aG9sZSA9IHBhcnRzWzBdLFxuXHRcdFx0ZnJhY3Rpb25hbCA9IHBhcnRzWzFdIHx8ICcnLFxuXHRcdFx0bXVsdGlwbGllciA9IDEsXG5cdFx0XHRudW0sXG5cdFx0XHRvdXQgPSAwLFxuXHRcdFx0c2lnbiA9IDE7XG5cblx0XHQvLyBoYW5kbGUgbmVnYXRpdmUgbnVtYmVyc1xuXHRcdGlmIChzdHJpbmcuY2hhckNvZGVBdCgwKSA9PT0gNDUpIHtcblx0XHRcdGkgPSAxO1xuXHRcdFx0c2lnbiA9IC0xO1xuXHRcdH1cblxuXHRcdC8vIGhhbmRsZSBkaWdpdHMgYmVmb3JlIHRoZSBkZWNpbWFsXG5cdFx0Zm9yIChpOyBpIDwgd2hvbGUubGVuZ3RoOyBpKyspIHtcblx0XHRcdG51bSA9IGNoYXJDb2RlVG9JbnQod2hvbGUuY2hhckNvZGVBdChpKSk7XG5cdFx0XHRvdXQgPSA2MCAqIG91dCArIG51bTtcblx0XHR9XG5cblx0XHQvLyBoYW5kbGUgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsXG5cdFx0Zm9yIChpID0gMDsgaSA8IGZyYWN0aW9uYWwubGVuZ3RoOyBpKyspIHtcblx0XHRcdG11bHRpcGxpZXIgPSBtdWx0aXBsaWVyIC8gNjA7XG5cdFx0XHRudW0gPSBjaGFyQ29kZVRvSW50KGZyYWN0aW9uYWwuY2hhckNvZGVBdChpKSk7XG5cdFx0XHRvdXQgKz0gbnVtICogbXVsdGlwbGllcjtcblx0XHR9XG5cblx0XHRyZXR1cm4gb3V0ICogc2lnbjtcblx0fVxuXG5cdGZ1bmN0aW9uIGFycmF5VG9JbnQgKGFycmF5KSB7XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuXHRcdFx0YXJyYXlbaV0gPSB1bnBhY2tCYXNlNjAoYXJyYXlbaV0pO1xuXHRcdH1cblx0fVxuXG5cdGZ1bmN0aW9uIGludFRvVW50aWwgKGFycmF5LCBsZW5ndGgpIHtcblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG5cdFx0XHRhcnJheVtpXSA9IE1hdGgucm91bmQoKGFycmF5W2kgLSAxXSB8fCAwKSArIChhcnJheVtpXSAqIDYwMDAwKSk7IC8vIG1pbnV0ZXMgdG8gbWlsbGlzZWNvbmRzXG5cdFx0fVxuXG5cdFx0YXJyYXlbbGVuZ3RoIC0gMV0gPSBJbmZpbml0eTtcblx0fVxuXG5cdGZ1bmN0aW9uIG1hcEluZGljZXMgKHNvdXJjZSwgaW5kaWNlcykge1xuXHRcdHZhciBvdXQgPSBbXSwgaTtcblxuXHRcdGZvciAoaSA9IDA7IGkgPCBpbmRpY2VzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRvdXRbaV0gPSBzb3VyY2VbaW5kaWNlc1tpXV07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG91dDtcblx0fVxuXG5cdGZ1bmN0aW9uIHVucGFjayAoc3RyaW5nKSB7XG5cdFx0dmFyIGRhdGEgPSBzdHJpbmcuc3BsaXQoJ3wnKSxcblx0XHRcdG9mZnNldHMgPSBkYXRhWzJdLnNwbGl0KCcgJyksXG5cdFx0XHRpbmRpY2VzID0gZGF0YVszXS5zcGxpdCgnJyksXG5cdFx0XHR1bnRpbHMgID0gZGF0YVs0XS5zcGxpdCgnICcpO1xuXG5cdFx0YXJyYXlUb0ludChvZmZzZXRzKTtcblx0XHRhcnJheVRvSW50KGluZGljZXMpO1xuXHRcdGFycmF5VG9JbnQodW50aWxzKTtcblxuXHRcdGludFRvVW50aWwodW50aWxzLCBpbmRpY2VzLmxlbmd0aCk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0bmFtZSAgICAgICA6IGRhdGFbMF0sXG5cdFx0XHRhYmJycyAgICAgIDogbWFwSW5kaWNlcyhkYXRhWzFdLnNwbGl0KCcgJyksIGluZGljZXMpLFxuXHRcdFx0b2Zmc2V0cyAgICA6IG1hcEluZGljZXMob2Zmc2V0cywgaW5kaWNlcyksXG5cdFx0XHR1bnRpbHMgICAgIDogdW50aWxzLFxuXHRcdFx0cG9wdWxhdGlvbiA6IGRhdGFbNV0gfCAwXG5cdFx0fTtcblx0fVxuXG5cdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblx0XHRab25lIG9iamVjdFxuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblx0ZnVuY3Rpb24gWm9uZSAocGFja2VkU3RyaW5nKSB7XG5cdFx0aWYgKHBhY2tlZFN0cmluZykge1xuXHRcdFx0dGhpcy5fc2V0KHVucGFjayhwYWNrZWRTdHJpbmcpKTtcblx0XHR9XG5cdH1cblxuXHRab25lLnByb3RvdHlwZSA9IHtcblx0XHRfc2V0IDogZnVuY3Rpb24gKHVucGFja2VkKSB7XG5cdFx0XHR0aGlzLm5hbWUgICAgICAgPSB1bnBhY2tlZC5uYW1lO1xuXHRcdFx0dGhpcy5hYmJycyAgICAgID0gdW5wYWNrZWQuYWJicnM7XG5cdFx0XHR0aGlzLnVudGlscyAgICAgPSB1bnBhY2tlZC51bnRpbHM7XG5cdFx0XHR0aGlzLm9mZnNldHMgICAgPSB1bnBhY2tlZC5vZmZzZXRzO1xuXHRcdFx0dGhpcy5wb3B1bGF0aW9uID0gdW5wYWNrZWQucG9wdWxhdGlvbjtcblx0XHR9LFxuXG5cdFx0X2luZGV4IDogZnVuY3Rpb24gKHRpbWVzdGFtcCkge1xuXHRcdFx0dmFyIHRhcmdldCA9ICt0aW1lc3RhbXAsXG5cdFx0XHRcdHVudGlscyA9IHRoaXMudW50aWxzLFxuXHRcdFx0XHRpO1xuXG5cdFx0XHRmb3IgKGkgPSAwOyBpIDwgdW50aWxzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGlmICh0YXJnZXQgPCB1bnRpbHNbaV0pIHtcblx0XHRcdFx0XHRyZXR1cm4gaTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRwYXJzZSA6IGZ1bmN0aW9uICh0aW1lc3RhbXApIHtcblx0XHRcdHZhciB0YXJnZXQgID0gK3RpbWVzdGFtcCxcblx0XHRcdFx0b2Zmc2V0cyA9IHRoaXMub2Zmc2V0cyxcblx0XHRcdFx0dW50aWxzICA9IHRoaXMudW50aWxzLFxuXHRcdFx0XHRtYXggICAgID0gdW50aWxzLmxlbmd0aCAtIDEsXG5cdFx0XHRcdG9mZnNldCwgb2Zmc2V0TmV4dCwgb2Zmc2V0UHJldiwgaTtcblxuXHRcdFx0Zm9yIChpID0gMDsgaSA8IG1heDsgaSsrKSB7XG5cdFx0XHRcdG9mZnNldCAgICAgPSBvZmZzZXRzW2ldO1xuXHRcdFx0XHRvZmZzZXROZXh0ID0gb2Zmc2V0c1tpICsgMV07XG5cdFx0XHRcdG9mZnNldFByZXYgPSBvZmZzZXRzW2kgPyBpIC0gMSA6IGldO1xuXG5cdFx0XHRcdGlmIChvZmZzZXQgPCBvZmZzZXROZXh0ICYmIHR6Lm1vdmVBbWJpZ3VvdXNGb3J3YXJkKSB7XG5cdFx0XHRcdFx0b2Zmc2V0ID0gb2Zmc2V0TmV4dDtcblx0XHRcdFx0fSBlbHNlIGlmIChvZmZzZXQgPiBvZmZzZXRQcmV2ICYmIHR6Lm1vdmVJbnZhbGlkRm9yd2FyZCkge1xuXHRcdFx0XHRcdG9mZnNldCA9IG9mZnNldFByZXY7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodGFyZ2V0IDwgdW50aWxzW2ldIC0gKG9mZnNldCAqIDYwMDAwKSkge1xuXHRcdFx0XHRcdHJldHVybiBvZmZzZXRzW2ldO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBvZmZzZXRzW21heF07XG5cdFx0fSxcblxuXHRcdGFiYnIgOiBmdW5jdGlvbiAobW9tKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5hYmJyc1t0aGlzLl9pbmRleChtb20pXTtcblx0XHR9LFxuXG5cdFx0b2Zmc2V0IDogZnVuY3Rpb24gKG1vbSkge1xuXHRcdFx0bG9nRXJyb3IoXCJ6b25lLm9mZnNldCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHpvbmUudXRjT2Zmc2V0XCIpO1xuXHRcdFx0cmV0dXJuIHRoaXMub2Zmc2V0c1t0aGlzLl9pbmRleChtb20pXTtcblx0XHR9LFxuXG5cdFx0dXRjT2Zmc2V0IDogZnVuY3Rpb24gKG1vbSkge1xuXHRcdFx0cmV0dXJuIHRoaXMub2Zmc2V0c1t0aGlzLl9pbmRleChtb20pXTtcblx0XHR9XG5cdH07XG5cblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXHRcdEN1cnJlbnQgVGltZXpvbmVcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cdGZ1bmN0aW9uIE9mZnNldEF0KGF0KSB7XG5cdFx0dmFyIHRpbWVTdHJpbmcgPSBhdC50b1RpbWVTdHJpbmcoKTtcblx0XHR2YXIgYWJiciA9IHRpbWVTdHJpbmcubWF0Y2goL1xcKFthLXogXStcXCkvaSk7XG5cdFx0aWYgKGFiYnIgJiYgYWJiclswXSkge1xuXHRcdFx0Ly8gMTc6NTY6MzEgR01ULTA2MDAgKENTVClcblx0XHRcdC8vIDE3OjU2OjMxIEdNVC0wNjAwIChDZW50cmFsIFN0YW5kYXJkIFRpbWUpXG5cdFx0XHRhYmJyID0gYWJiclswXS5tYXRjaCgvW0EtWl0vZyk7XG5cdFx0XHRhYmJyID0gYWJiciA/IGFiYnIuam9pbignJykgOiB1bmRlZmluZWQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIDE3OjU2OjMxIENTVFxuXHRcdFx0Ly8gMTc6NTY6MzEgR01UKzA4MDAgKOWPsOWMl+aomea6luaZgumWkylcblx0XHRcdGFiYnIgPSB0aW1lU3RyaW5nLm1hdGNoKC9bQS1aXXszLDV9L2cpO1xuXHRcdFx0YWJiciA9IGFiYnIgPyBhYmJyWzBdIDogdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdGlmIChhYmJyID09PSAnR01UJykge1xuXHRcdFx0YWJiciA9IHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHR0aGlzLmF0ID0gK2F0O1xuXHRcdHRoaXMuYWJiciA9IGFiYnI7XG5cdFx0dGhpcy5vZmZzZXQgPSBhdC5nZXRUaW1lem9uZU9mZnNldCgpO1xuXHR9XG5cblx0ZnVuY3Rpb24gWm9uZVNjb3JlKHpvbmUpIHtcblx0XHR0aGlzLnpvbmUgPSB6b25lO1xuXHRcdHRoaXMub2Zmc2V0U2NvcmUgPSAwO1xuXHRcdHRoaXMuYWJiclNjb3JlID0gMDtcblx0fVxuXG5cdFpvbmVTY29yZS5wcm90b3R5cGUuc2NvcmVPZmZzZXRBdCA9IGZ1bmN0aW9uIChvZmZzZXRBdCkge1xuXHRcdHRoaXMub2Zmc2V0U2NvcmUgKz0gTWF0aC5hYnModGhpcy56b25lLnV0Y09mZnNldChvZmZzZXRBdC5hdCkgLSBvZmZzZXRBdC5vZmZzZXQpO1xuXHRcdGlmICh0aGlzLnpvbmUuYWJicihvZmZzZXRBdC5hdCkucmVwbGFjZSgvW15BLVpdL2csICcnKSAhPT0gb2Zmc2V0QXQuYWJicikge1xuXHRcdFx0dGhpcy5hYmJyU2NvcmUrKztcblx0XHR9XG5cdH07XG5cblx0ZnVuY3Rpb24gZmluZENoYW5nZShsb3csIGhpZ2gpIHtcblx0XHR2YXIgbWlkLCBkaWZmO1xuXG5cdFx0d2hpbGUgKChkaWZmID0gKChoaWdoLmF0IC0gbG93LmF0KSAvIDEyZTQgfCAwKSAqIDZlNCkpIHtcblx0XHRcdG1pZCA9IG5ldyBPZmZzZXRBdChuZXcgRGF0ZShsb3cuYXQgKyBkaWZmKSk7XG5cdFx0XHRpZiAobWlkLm9mZnNldCA9PT0gbG93Lm9mZnNldCkge1xuXHRcdFx0XHRsb3cgPSBtaWQ7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRoaWdoID0gbWlkO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBsb3c7XG5cdH1cblxuXHRmdW5jdGlvbiB1c2VyT2Zmc2V0cygpIHtcblx0XHR2YXIgc3RhcnRZZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpIC0gMixcblx0XHRcdGxhc3QgPSBuZXcgT2Zmc2V0QXQobmV3IERhdGUoc3RhcnRZZWFyLCAwLCAxKSksXG5cdFx0XHRvZmZzZXRzID0gW2xhc3RdLFxuXHRcdFx0Y2hhbmdlLCBuZXh0LCBpO1xuXG5cdFx0Zm9yIChpID0gMTsgaSA8IDQ4OyBpKyspIHtcblx0XHRcdG5leHQgPSBuZXcgT2Zmc2V0QXQobmV3IERhdGUoc3RhcnRZZWFyLCBpLCAxKSk7XG5cdFx0XHRpZiAobmV4dC5vZmZzZXQgIT09IGxhc3Qub2Zmc2V0KSB7XG5cdFx0XHRcdGNoYW5nZSA9IGZpbmRDaGFuZ2UobGFzdCwgbmV4dCk7XG5cdFx0XHRcdG9mZnNldHMucHVzaChjaGFuZ2UpO1xuXHRcdFx0XHRvZmZzZXRzLnB1c2gobmV3IE9mZnNldEF0KG5ldyBEYXRlKGNoYW5nZS5hdCArIDZlNCkpKTtcblx0XHRcdH1cblx0XHRcdGxhc3QgPSBuZXh0O1xuXHRcdH1cblxuXHRcdGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHtcblx0XHRcdG9mZnNldHMucHVzaChuZXcgT2Zmc2V0QXQobmV3IERhdGUoc3RhcnRZZWFyICsgaSwgMCwgMSkpKTtcblx0XHRcdG9mZnNldHMucHVzaChuZXcgT2Zmc2V0QXQobmV3IERhdGUoc3RhcnRZZWFyICsgaSwgNiwgMSkpKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gb2Zmc2V0cztcblx0fVxuXG5cdGZ1bmN0aW9uIHNvcnRab25lU2NvcmVzIChhLCBiKSB7XG5cdFx0aWYgKGEub2Zmc2V0U2NvcmUgIT09IGIub2Zmc2V0U2NvcmUpIHtcblx0XHRcdHJldHVybiBhLm9mZnNldFNjb3JlIC0gYi5vZmZzZXRTY29yZTtcblx0XHR9XG5cdFx0aWYgKGEuYWJiclNjb3JlICE9PSBiLmFiYnJTY29yZSkge1xuXHRcdFx0cmV0dXJuIGEuYWJiclNjb3JlIC0gYi5hYmJyU2NvcmU7XG5cdFx0fVxuXHRcdHJldHVybiBiLnpvbmUucG9wdWxhdGlvbiAtIGEuem9uZS5wb3B1bGF0aW9uO1xuXHR9XG5cblx0ZnVuY3Rpb24gYWRkVG9HdWVzc2VzIChuYW1lLCBvZmZzZXRzKSB7XG5cdFx0dmFyIGksIG9mZnNldDtcblx0XHRhcnJheVRvSW50KG9mZnNldHMpO1xuXHRcdGZvciAoaSA9IDA7IGkgPCBvZmZzZXRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRvZmZzZXQgPSBvZmZzZXRzW2ldO1xuXHRcdFx0Z3Vlc3Nlc1tvZmZzZXRdID0gZ3Vlc3Nlc1tvZmZzZXRdIHx8IHt9O1xuXHRcdFx0Z3Vlc3Nlc1tvZmZzZXRdW25hbWVdID0gdHJ1ZTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBndWVzc2VzRm9yVXNlck9mZnNldHMgKG9mZnNldHMpIHtcblx0XHR2YXIgb2Zmc2V0c0xlbmd0aCA9IG9mZnNldHMubGVuZ3RoLFxuXHRcdFx0ZmlsdGVyZWRHdWVzc2VzID0ge30sXG5cdFx0XHRvdXQgPSBbXSxcblx0XHRcdGksIGosIGd1ZXNzZXNPZmZzZXQ7XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgb2Zmc2V0c0xlbmd0aDsgaSsrKSB7XG5cdFx0XHRndWVzc2VzT2Zmc2V0ID0gZ3Vlc3Nlc1tvZmZzZXRzW2ldLm9mZnNldF0gfHwge307XG5cdFx0XHRmb3IgKGogaW4gZ3Vlc3Nlc09mZnNldCkge1xuXHRcdFx0XHRpZiAoZ3Vlc3Nlc09mZnNldC5oYXNPd25Qcm9wZXJ0eShqKSkge1xuXHRcdFx0XHRcdGZpbHRlcmVkR3Vlc3Nlc1tqXSA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRmb3IgKGkgaW4gZmlsdGVyZWRHdWVzc2VzKSB7XG5cdFx0XHRpZiAoZmlsdGVyZWRHdWVzc2VzLmhhc093blByb3BlcnR5KGkpKSB7XG5cdFx0XHRcdG91dC5wdXNoKG5hbWVzW2ldKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gb3V0O1xuXHR9XG5cblx0ZnVuY3Rpb24gcmVidWlsZEd1ZXNzICgpIHtcblxuXHRcdC8vIHVzZSBJbnRsIEFQSSB3aGVuIGF2YWlsYWJsZSBhbmQgcmV0dXJuaW5nIHZhbGlkIHRpbWUgem9uZVxuXHRcdHRyeSB7XG5cdFx0XHR2YXIgaW50bE5hbWUgPSBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmU7XG5cdFx0XHRpZiAoaW50bE5hbWUgJiYgaW50bE5hbWUubGVuZ3RoID4gMykge1xuXHRcdFx0XHR2YXIgbmFtZSA9IG5hbWVzW25vcm1hbGl6ZU5hbWUoaW50bE5hbWUpXTtcblx0XHRcdFx0aWYgKG5hbWUpIHtcblx0XHRcdFx0XHRyZXR1cm4gbmFtZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRsb2dFcnJvcihcIk1vbWVudCBUaW1lem9uZSBmb3VuZCBcIiArIGludGxOYW1lICsgXCIgZnJvbSB0aGUgSW50bCBhcGksIGJ1dCBkaWQgbm90IGhhdmUgdGhhdCBkYXRhIGxvYWRlZC5cIik7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0Ly8gSW50bCB1bmF2YWlsYWJsZSwgZmFsbCBiYWNrIHRvIG1hbnVhbCBndWVzc2luZy5cblx0XHR9XG5cblx0XHR2YXIgb2Zmc2V0cyA9IHVzZXJPZmZzZXRzKCksXG5cdFx0XHRvZmZzZXRzTGVuZ3RoID0gb2Zmc2V0cy5sZW5ndGgsXG5cdFx0XHRndWVzc2VzID0gZ3Vlc3Nlc0ZvclVzZXJPZmZzZXRzKG9mZnNldHMpLFxuXHRcdFx0em9uZVNjb3JlcyA9IFtdLFxuXHRcdFx0em9uZVNjb3JlLCBpLCBqO1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IGd1ZXNzZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHpvbmVTY29yZSA9IG5ldyBab25lU2NvcmUoZ2V0Wm9uZShndWVzc2VzW2ldKSwgb2Zmc2V0c0xlbmd0aCk7XG5cdFx0XHRmb3IgKGogPSAwOyBqIDwgb2Zmc2V0c0xlbmd0aDsgaisrKSB7XG5cdFx0XHRcdHpvbmVTY29yZS5zY29yZU9mZnNldEF0KG9mZnNldHNbal0pO1xuXHRcdFx0fVxuXHRcdFx0em9uZVNjb3Jlcy5wdXNoKHpvbmVTY29yZSk7XG5cdFx0fVxuXG5cdFx0em9uZVNjb3Jlcy5zb3J0KHNvcnRab25lU2NvcmVzKTtcblxuXHRcdHJldHVybiB6b25lU2NvcmVzLmxlbmd0aCA+IDAgPyB6b25lU2NvcmVzWzBdLnpvbmUubmFtZSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdGZ1bmN0aW9uIGd1ZXNzIChpZ25vcmVDYWNoZSkge1xuXHRcdGlmICghY2FjaGVkR3Vlc3MgfHwgaWdub3JlQ2FjaGUpIHtcblx0XHRcdGNhY2hlZEd1ZXNzID0gcmVidWlsZEd1ZXNzKCk7XG5cdFx0fVxuXHRcdHJldHVybiBjYWNoZWRHdWVzcztcblx0fVxuXG5cdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblx0XHRHbG9iYWwgTWV0aG9kc1xuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblx0ZnVuY3Rpb24gbm9ybWFsaXplTmFtZSAobmFtZSkge1xuXHRcdHJldHVybiAobmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXC8vZywgJ18nKTtcblx0fVxuXG5cdGZ1bmN0aW9uIGFkZFpvbmUgKHBhY2tlZCkge1xuXHRcdHZhciBpLCBuYW1lLCBzcGxpdCwgbm9ybWFsaXplZDtcblxuXHRcdGlmICh0eXBlb2YgcGFja2VkID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRwYWNrZWQgPSBbcGFja2VkXTtcblx0XHR9XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgcGFja2VkLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRzcGxpdCA9IHBhY2tlZFtpXS5zcGxpdCgnfCcpO1xuXHRcdFx0bmFtZSA9IHNwbGl0WzBdO1xuXHRcdFx0bm9ybWFsaXplZCA9IG5vcm1hbGl6ZU5hbWUobmFtZSk7XG5cdFx0XHR6b25lc1tub3JtYWxpemVkXSA9IHBhY2tlZFtpXTtcblx0XHRcdG5hbWVzW25vcm1hbGl6ZWRdID0gbmFtZTtcblx0XHRcdGFkZFRvR3Vlc3Nlcyhub3JtYWxpemVkLCBzcGxpdFsyXS5zcGxpdCgnICcpKTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBnZXRab25lIChuYW1lLCBjYWxsZXIpIHtcblx0XHRuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKTtcblxuXHRcdHZhciB6b25lID0gem9uZXNbbmFtZV07XG5cdFx0dmFyIGxpbms7XG5cblx0XHRpZiAoem9uZSBpbnN0YW5jZW9mIFpvbmUpIHtcblx0XHRcdHJldHVybiB6b25lO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2Ygem9uZSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdHpvbmUgPSBuZXcgWm9uZSh6b25lKTtcblx0XHRcdHpvbmVzW25hbWVdID0gem9uZTtcblx0XHRcdHJldHVybiB6b25lO1xuXHRcdH1cblxuXHRcdC8vIFBhc3MgZ2V0Wm9uZSB0byBwcmV2ZW50IHJlY3Vyc2lvbiBtb3JlIHRoYW4gMSBsZXZlbCBkZWVwXG5cdFx0aWYgKGxpbmtzW25hbWVdICYmIGNhbGxlciAhPT0gZ2V0Wm9uZSAmJiAobGluayA9IGdldFpvbmUobGlua3NbbmFtZV0sIGdldFpvbmUpKSkge1xuXHRcdFx0em9uZSA9IHpvbmVzW25hbWVdID0gbmV3IFpvbmUoKTtcblx0XHRcdHpvbmUuX3NldChsaW5rKTtcblx0XHRcdHpvbmUubmFtZSA9IG5hbWVzW25hbWVdO1xuXHRcdFx0cmV0dXJuIHpvbmU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHRmdW5jdGlvbiBnZXROYW1lcyAoKSB7XG5cdFx0dmFyIGksIG91dCA9IFtdO1xuXG5cdFx0Zm9yIChpIGluIG5hbWVzKSB7XG5cdFx0XHRpZiAobmFtZXMuaGFzT3duUHJvcGVydHkoaSkgJiYgKHpvbmVzW2ldIHx8IHpvbmVzW2xpbmtzW2ldXSkgJiYgbmFtZXNbaV0pIHtcblx0XHRcdFx0b3V0LnB1c2gobmFtZXNbaV0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBvdXQuc29ydCgpO1xuXHR9XG5cblx0ZnVuY3Rpb24gYWRkTGluayAoYWxpYXNlcykge1xuXHRcdHZhciBpLCBhbGlhcywgbm9ybWFsMCwgbm9ybWFsMTtcblxuXHRcdGlmICh0eXBlb2YgYWxpYXNlcyA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0YWxpYXNlcyA9IFthbGlhc2VzXTtcblx0XHR9XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgYWxpYXNlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0YWxpYXMgPSBhbGlhc2VzW2ldLnNwbGl0KCd8Jyk7XG5cblx0XHRcdG5vcm1hbDAgPSBub3JtYWxpemVOYW1lKGFsaWFzWzBdKTtcblx0XHRcdG5vcm1hbDEgPSBub3JtYWxpemVOYW1lKGFsaWFzWzFdKTtcblxuXHRcdFx0bGlua3Nbbm9ybWFsMF0gPSBub3JtYWwxO1xuXHRcdFx0bmFtZXNbbm9ybWFsMF0gPSBhbGlhc1swXTtcblxuXHRcdFx0bGlua3Nbbm9ybWFsMV0gPSBub3JtYWwwO1xuXHRcdFx0bmFtZXNbbm9ybWFsMV0gPSBhbGlhc1sxXTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBsb2FkRGF0YSAoZGF0YSkge1xuXHRcdGFkZFpvbmUoZGF0YS56b25lcyk7XG5cdFx0YWRkTGluayhkYXRhLmxpbmtzKTtcblx0XHR0ei5kYXRhVmVyc2lvbiA9IGRhdGEudmVyc2lvbjtcblx0fVxuXG5cdGZ1bmN0aW9uIHpvbmVFeGlzdHMgKG5hbWUpIHtcblx0XHRpZiAoIXpvbmVFeGlzdHMuZGlkU2hvd0Vycm9yKSB7XG5cdFx0XHR6b25lRXhpc3RzLmRpZFNob3dFcnJvciA9IHRydWU7XG5cdFx0XHRcdGxvZ0Vycm9yKFwibW9tZW50LnR6LnpvbmVFeGlzdHMoJ1wiICsgbmFtZSArIFwiJykgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiAhbW9tZW50LnR6LnpvbmUoJ1wiICsgbmFtZSArIFwiJylcIik7XG5cdFx0fVxuXHRcdHJldHVybiAhIWdldFpvbmUobmFtZSk7XG5cdH1cblxuXHRmdW5jdGlvbiBuZWVkc09mZnNldCAobSkge1xuXHRcdHZhciBpc1VuaXhUaW1lc3RhbXAgPSAobS5fZiA9PT0gJ1gnIHx8IG0uX2YgPT09ICd4Jyk7XG5cdFx0cmV0dXJuICEhKG0uX2EgJiYgKG0uX3R6bSA9PT0gdW5kZWZpbmVkKSAmJiAhaXNVbml4VGltZXN0YW1wKTtcblx0fVxuXG5cdGZ1bmN0aW9uIGxvZ0Vycm9yIChtZXNzYWdlKSB7XG5cdFx0aWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29uc29sZS5lcnJvciA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0Y29uc29sZS5lcnJvcihtZXNzYWdlKTtcblx0XHR9XG5cdH1cblxuXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cdFx0bW9tZW50LnR6IG5hbWVzcGFjZVxuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblx0ZnVuY3Rpb24gdHogKGlucHV0KSB7XG5cdFx0dmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDAsIC0xKSxcblx0XHRcdG5hbWUgPSBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdLFxuXHRcdFx0em9uZSA9IGdldFpvbmUobmFtZSksXG5cdFx0XHRvdXQgID0gbW9tZW50LnV0Yy5hcHBseShudWxsLCBhcmdzKTtcblxuXHRcdGlmICh6b25lICYmICFtb21lbnQuaXNNb21lbnQoaW5wdXQpICYmIG5lZWRzT2Zmc2V0KG91dCkpIHtcblx0XHRcdG91dC5hZGQoem9uZS5wYXJzZShvdXQpLCAnbWludXRlcycpO1xuXHRcdH1cblxuXHRcdG91dC50eihuYW1lKTtcblxuXHRcdHJldHVybiBvdXQ7XG5cdH1cblxuXHR0ei52ZXJzaW9uICAgICAgPSBWRVJTSU9OO1xuXHR0ei5kYXRhVmVyc2lvbiAgPSAnJztcblx0dHouX3pvbmVzICAgICAgID0gem9uZXM7XG5cdHR6Ll9saW5rcyAgICAgICA9IGxpbmtzO1xuXHR0ei5fbmFtZXMgICAgICAgPSBuYW1lcztcblx0dHouYWRkICAgICAgICAgID0gYWRkWm9uZTtcblx0dHoubGluayAgICAgICAgID0gYWRkTGluaztcblx0dHoubG9hZCAgICAgICAgID0gbG9hZERhdGE7XG5cdHR6LnpvbmUgICAgICAgICA9IGdldFpvbmU7XG5cdHR6LnpvbmVFeGlzdHMgICA9IHpvbmVFeGlzdHM7IC8vIGRlcHJlY2F0ZWQgaW4gMC4xLjBcblx0dHouZ3Vlc3MgICAgICAgID0gZ3Vlc3M7XG5cdHR6Lm5hbWVzICAgICAgICA9IGdldE5hbWVzO1xuXHR0ei5ab25lICAgICAgICAgPSBab25lO1xuXHR0ei51bnBhY2sgICAgICAgPSB1bnBhY2s7XG5cdHR6LnVucGFja0Jhc2U2MCA9IHVucGFja0Jhc2U2MDtcblx0dHoubmVlZHNPZmZzZXQgID0gbmVlZHNPZmZzZXQ7XG5cdHR6Lm1vdmVJbnZhbGlkRm9yd2FyZCAgID0gdHJ1ZTtcblx0dHoubW92ZUFtYmlndW91c0ZvcndhcmQgPSBmYWxzZTtcblxuXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cdFx0SW50ZXJmYWNlIHdpdGggTW9tZW50LmpzXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXHR2YXIgZm4gPSBtb21lbnQuZm47XG5cblx0bW9tZW50LnR6ID0gdHo7XG5cblx0bW9tZW50LmRlZmF1bHRab25lID0gbnVsbDtcblxuXHRtb21lbnQudXBkYXRlT2Zmc2V0ID0gZnVuY3Rpb24gKG1vbSwga2VlcFRpbWUpIHtcblx0XHR2YXIgem9uZSA9IG1vbWVudC5kZWZhdWx0Wm9uZSxcblx0XHRcdG9mZnNldDtcblxuXHRcdGlmIChtb20uX3ogPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0aWYgKHpvbmUgJiYgbmVlZHNPZmZzZXQobW9tKSAmJiAhbW9tLl9pc1VUQykge1xuXHRcdFx0XHRtb20uX2QgPSBtb21lbnQudXRjKG1vbS5fYSkuX2Q7XG5cdFx0XHRcdG1vbS51dGMoKS5hZGQoem9uZS5wYXJzZShtb20pLCAnbWludXRlcycpO1xuXHRcdFx0fVxuXHRcdFx0bW9tLl96ID0gem9uZTtcblx0XHR9XG5cdFx0aWYgKG1vbS5feikge1xuXHRcdFx0b2Zmc2V0ID0gbW9tLl96LnV0Y09mZnNldChtb20pO1xuXHRcdFx0aWYgKE1hdGguYWJzKG9mZnNldCkgPCAxNikge1xuXHRcdFx0XHRvZmZzZXQgPSBvZmZzZXQgLyA2MDtcblx0XHRcdH1cblx0XHRcdGlmIChtb20udXRjT2Zmc2V0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0bW9tLnV0Y09mZnNldCgtb2Zmc2V0LCBrZWVwVGltZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRtb20uem9uZShvZmZzZXQsIGtlZXBUaW1lKTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cblx0Zm4udHogPSBmdW5jdGlvbiAobmFtZSwga2VlcFRpbWUpIHtcblx0XHRpZiAobmFtZSkge1xuXHRcdFx0dGhpcy5feiA9IGdldFpvbmUobmFtZSk7XG5cdFx0XHRpZiAodGhpcy5feikge1xuXHRcdFx0XHRtb21lbnQudXBkYXRlT2Zmc2V0KHRoaXMsIGtlZXBUaW1lKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ0Vycm9yKFwiTW9tZW50IFRpbWV6b25lIGhhcyBubyBkYXRhIGZvciBcIiArIG5hbWUgKyBcIi4gU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vdGltZXpvbmUvZG9jcy8jL2RhdGEtbG9hZGluZy8uXCIpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl96KSB7IHJldHVybiB0aGlzLl96Lm5hbWU7IH1cblx0fTtcblxuXHRmdW5jdGlvbiBhYmJyV3JhcCAob2xkKSB7XG5cdFx0cmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0XHRcdGlmICh0aGlzLl96KSB7IHJldHVybiB0aGlzLl96LmFiYnIodGhpcyk7IH1cblx0XHRcdHJldHVybiBvbGQuY2FsbCh0aGlzKTtcblx0XHR9O1xuXHR9XG5cblx0ZnVuY3Rpb24gcmVzZXRab25lV3JhcCAob2xkKSB7XG5cdFx0cmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0XHRcdHRoaXMuX3ogPSBudWxsO1xuXHRcdFx0cmV0dXJuIG9sZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdH07XG5cdH1cblxuXHRmbi56b25lTmFtZSA9IGFiYnJXcmFwKGZuLnpvbmVOYW1lKTtcblx0Zm4uem9uZUFiYnIgPSBhYmJyV3JhcChmbi56b25lQWJicik7XG5cdGZuLnV0YyAgICAgID0gcmVzZXRab25lV3JhcChmbi51dGMpO1xuXG5cdG1vbWVudC50ei5zZXREZWZhdWx0ID0gZnVuY3Rpb24obmFtZSkge1xuXHRcdGlmIChtYWpvciA8IDIgfHwgKG1ham9yID09PSAyICYmIG1pbm9yIDwgOSkpIHtcblx0XHRcdGxvZ0Vycm9yKCdNb21lbnQgVGltZXpvbmUgc2V0RGVmYXVsdCgpIHJlcXVpcmVzIE1vbWVudC5qcyA+PSAyLjkuMC4gWW91IGFyZSB1c2luZyBNb21lbnQuanMgJyArIG1vbWVudC52ZXJzaW9uICsgJy4nKTtcblx0XHR9XG5cdFx0bW9tZW50LmRlZmF1bHRab25lID0gbmFtZSA/IGdldFpvbmUobmFtZSkgOiBudWxsO1xuXHRcdHJldHVybiBtb21lbnQ7XG5cdH07XG5cblx0Ly8gQ2xvbmluZyBhIG1vbWVudCBzaG91bGQgaW5jbHVkZSB0aGUgX3ogcHJvcGVydHkuXG5cdHZhciBtb21lbnRQcm9wZXJ0aWVzID0gbW9tZW50Lm1vbWVudFByb3BlcnRpZXM7XG5cdGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobW9tZW50UHJvcGVydGllcykgPT09ICdbb2JqZWN0IEFycmF5XScpIHtcblx0XHQvLyBtb21lbnQgMi44LjErXG5cdFx0bW9tZW50UHJvcGVydGllcy5wdXNoKCdfeicpO1xuXHRcdG1vbWVudFByb3BlcnRpZXMucHVzaCgnX2EnKTtcblx0fSBlbHNlIGlmIChtb21lbnRQcm9wZXJ0aWVzKSB7XG5cdFx0Ly8gbW9tZW50IDIuNy4wXG5cdFx0bW9tZW50UHJvcGVydGllcy5feiA9IG51bGw7XG5cdH1cblxuXHRsb2FkRGF0YSh7XG5cdFx0XCJ2ZXJzaW9uXCI6IFwiMjAxOGVcIixcblx0XHRcInpvbmVzXCI6IFtcblx0XHRcdFwiQWZyaWNhL0FiaWRqYW58TE1UIEdNVHxnLjggMHwwMXwtMmxkWEguUXw0OGU1XCIsXG5cdFx0XHRcIkFmcmljYS9BY2NyYXxMTVQgR01UICswMDIwfC5RIDAgLWt8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yNkJiWC44IDZ0elguOCBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUMwayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUMwayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUMwayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUMwayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUMwayBNbkUgMUJBayBNbkUgMUJBayBNbkV8NDFlNVwiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxMTVQgRUFUICswMjMwICswMjQ1fC0yci5nIC0zMCAtMnUgLTJKfDAxMjMxfC0xRjNDci5nIDNEenIuZyBva011IE1GWEp8NDdlNVwiLFxuXHRcdFx0XCJBZnJpY2EvQWxnaWVyc3xQTVQgV0VUIFdFU1QgQ0VUIENFU1R8LTkubCAwIC0xMCAtMTAgLTIwfDAxMjEyMTIxMjEyMTIxMjEzNDM0MzEzMTIxMjM0MzEyMTN8LTJuY285LmwgY05iOS5sIEhBMCAxOUEwIDFpTTAgMTFjMCAxb28wIFdvMCAxcmMwIFFNMCAxRU0wIFVNMCBEQTAgSW1vMCByZDAgRGUwIDlYejAgMWZiMCAxYXAwIDE2SzAgMnlvMCBtRXAwIGh3TDAganhBMCAxMUEwIGREZDAgMTdiMCAxMUIwIDFjTjAgMkR5MCAxY04wIDFmQjAgMWNMMHwyNmU1XCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xMTVQgV0FUfC1kLkEgLTEwfDAxfC0yMnkwZC5BfDE3ZTZcIixcblx0XHRcdFwiQWZyaWNhL0Jpc3NhdXxMTVQgLTAxIEdNVHwxMi5rIDEwIDB8MDEyfC0ybGRYMCAyeG9vMHwzOWU0XCIsXG5cdFx0XHRcIkFmcmljYS9NYXB1dG98TE1UIENBVHwtMmEuayAtMjB8MDF8LTJHSmVhLmt8MjZlNVwiLFxuXHRcdFx0XCJBZnJpY2EvQ2Fpcm98RUVUIEVFU1R8LTIwIC0zMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0xYklPMCB2YjAgMWlwMCAxMXowIDFpTjAgMW56MCAxMnAwIDFwejAgMTBOMCAxcHowIDE2cDAgMWp6MCBzM2QwIFZ6MCAxb04wIDExYjAgMW9PMCAxME4wIDFwejAgMTBOMCAxcGIwIDEwTjAgMXBiMCAxME4wIDFwYjAgMTBOMCAxcHowIDEwTjAgMXBiMCAxME4wIDFwYjAgMTFkMCAxb0wwIDExZDAgMXBiMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFwYjAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxcGIwIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMXBiMCAxMWQwIDFvTDAgMTFkMCAxV0wwIHJkMCAxUnowIHdwMCAxcGIwIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMXBiMCAxMWQwIDFxTDAgWGQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMXBiMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMW55MCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIFdMMCAxcU4wIFJiMCAxd3AwIE9uMCAxemQwIEx6MCAxRU4wIEZiMCBjMTAgOG4wIDhOZDAgZ0wwIGUxMCBtbjB8MTVlNlwiLFxuXHRcdFx0XCJBZnJpY2EvQ2FzYWJsYW5jYXxMTVQgV0VUIFdFU1QgQ0VUfHUuayAwIC0xMCAtMTB8MDEyMTIxMjEyMTIxMjEyMTIxMzEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdNbnQuRSAxMzBMdC5FIHJiMCBEZDAgZFZiMCBiNnAwIFRYMCBFb0IwIExMMCBnbmQwIHJ6MCA0M2QwIEFMMCAxTmQwIFhYMCAxQ3AwIHB6MCBkRXAwIDRtbjAgU3lOMCBBTDAgMU5kMCB3bjAgMUZCMCBEYjAgMXpkMCBMejAgMU5mMCB3TTAgY28wIGdvMCAxbzAwIHMwMCBkQTAgdmMwIDExQTAgQTAwIGUwMCB5MDAgMTFBMCB1TTAgZTAwIERjMCAxMUEwIHMwMCBlMDAgSU0wIFdNMCBtbzAgZ00wIExBMCBXTTAgakEwIGUwMCBSYzAgMTFBMCBlMDAgZTAwIFUwMCAxMUEwIDhvMCBlMDAgMTFBMCAxMUEwIDVBMCBlMDAgMTdjMCAxZkEwIDFhMDAgMWEwMCAxZkEwIDE3YzAgMWlvMCAxNG8wIDFsYzAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFsYzAgMTRvMCAxZkEwfDMyZTVcIixcblx0XHRcdFwiQWZyaWNhL0NldXRhfFdFVCBXRVNUIENFVCBDRVNUfDAgLTEwIC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0yNUtOMCAxMXowIGRyZDAgMThwMCAzSFgwIDE3ZDAgMWZ6MCAxYTEwIDFpbzAgMWEwMCAxeTdvMCBMTDAgZ25kMCByejAgNDNkMCBBTDAgMU5kMCBYWDAgMUNwMCBwejAgZEVwMCA0VkIwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw4NWUzXCIsXG5cdFx0XHRcIkFmcmljYS9FbF9BYWl1bnxMTVQgLTAxIFdFVCBXRVNUfFEuTSAxMCAwIC0xMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMXJEejcuYyAxR1ZBNy5jIDZMMCBBTDAgMU5kMCBYWDAgMUNwMCBwejAgMWNCQjAgQUwwIDFOZDAgd24wIDFGQjAgRGIwIDF6ZDAgTHowIDFOZjAgd00wIGNvMCBnbzAgMW8wMCBzMDAgZEEwIHZjMCAxMUEwIEEwMCBlMDAgeTAwIDExQTAgdU0wIGUwMCBEYzAgMTFBMCBzMDAgZTAwIElNMCBXTTAgbW8wIGdNMCBMQTAgV00wIGpBMCBlMDAgUmMwIDExQTAgZTAwIGUwMCBVMDAgMTFBMCA4bzAgZTAwIDExQTAgMTFBMCA1QTAgZTAwIDE3YzAgMWZBMCAxYTAwIDFhMDAgMWZBMCAxN2MwIDFpbzAgMTRvMCAxbGMwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbGMwIDE0bzAgMWZBMHwyMGU0XCIsXG5cdFx0XHRcIkFmcmljYS9Kb2hhbm5lc2J1cmd8U0FTVCBTQVNUIFNBU1R8LTF1IC0yMCAtMzB8MDEyMTIxfC0yR0pkdSAxQWpkdSAxY0wwIDFjTjAgMWNMMHw4NGU1XCIsXG5cdFx0XHRcIkFmcmljYS9KdWJhfExNVCBDQVQgQ0FTVCBFQVR8LTI2LnMgLTIwIC0zMCAtMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTN8LTF5VzI2LnMgMXpLMDYucyAxNkwwIDFpTjAgMTdiMCAxamQwIDE3YjAgMWlwMCAxN3owIDFpMTAgMTdYMCAxaEIwIDE4bjAgMWhkMCAxOWIwIDFncDAgMTl6MCAxaU4wIDE3YjAgMWlwMCAxN3owIDFpMTAgMThuMCAxaGQwIDE4TDAgMWdOMCAxOWIwIDFncDAgMTl6MCAxaU4wIDE3ejAgMWkxMCAxN1gwIHlHZDBcIixcblx0XHRcdFwiQWZyaWNhL0toYXJ0b3VtfExNVCBDQVQgQ0FTVCBFQVR8LTJhLjggLTIwIC0zMCAtMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTMxfC0xeVcyYS44IDF6SzBhLjggMTZMMCAxaU4wIDE3YjAgMWpkMCAxN2IwIDFpcDAgMTd6MCAxaTEwIDE3WDAgMWhCMCAxOG4wIDFoZDAgMTliMCAxZ3AwIDE5ejAgMWlOMCAxN2IwIDFpcDAgMTd6MCAxaTEwIDE4bjAgMWhkMCAxOEwwIDFnTjAgMTliMCAxZ3AwIDE5ejAgMWlOMCAxN3owIDFpMTAgMTdYMCB5R2QwIEhqTDB8NTFlNVwiLFxuXHRcdFx0XCJBZnJpY2EvTW9ucm92aWF8TU1UIE1NVCBHTVR8SC44IEkudSAwfDAxMnwtMjNMemcuUSAyOEcwMS5tfDExZTVcIixcblx0XHRcdFwiQWZyaWNhL05kamFtZW5hfExNVCBXQVQgV0FTVHwtMTAuYyAtMTAgLTIwfDAxMjF8LTJsZTEwLmMgMkozYzAuYyBXbjB8MTNlNVwiLFxuXHRcdFx0XCJBZnJpY2EvU2FvX1RvbWV8TE1UIEdNVCBXQVR8QS5KIDAgLTEwfDAxMnwtMmxlMDAgNGk2TjBcIixcblx0XHRcdFwiQWZyaWNhL1RyaXBvbGl8TE1UIENFVCBDRVNUIEVFVHwtUS5JIC0xMCAtMjAgLTIwfDAxMjEyMTIxMzEyMTIxMjEyMTIxMjEyMTIxMzEyMzEyM3wtMjFKY1EuSSAxaG5CUS5JIHZ4MCA0aVAwIHh4MCA0ZU4wIEJiMCA3aXAwIFUwbjAgQTEwIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWRiMCAxZU4wIDFiYjAgMWUxMCAxY0wwIDFjMTAgMWRiMCAxZGQwIDFkYjAgMWNOMCAxZGIwIDFxMTAgZkFuMCAxZXAwIDFkYjAgQUtxMCBUQTAgMW8wMHwxMWU1XCIsXG5cdFx0XHRcIkFmcmljYS9UdW5pc3xQTVQgQ0VUIENFU1R8LTkubCAtMTAgLTIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJuY285LmwgMThwYTkubCAxcU0wIERBMCAzVGMwIDExQjAgMXplMCBXTTAgN3owIDNkMCAxNEwwIDFjTjAgMWY5MCAxYXIwIDE2SjAgMWdYQjAgV00wIDFyQTAgMTFjMCBud28wIEtvMCAxY00wIDFjTTAgMXJBMCAxME0wIHp1TTAgMTBOMCAxYU4wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwfDIwZTVcIixcblx0XHRcdFwiQWZyaWNhL1dpbmRob2VrfCswMTMwIFNBU1QgU0FTVCBDQVQgV0FUfC0xdSAtMjAgLTMwIC0yMCAtMTB8MDEyMTM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDN8LTJHSmR1IDFBamR1IDFjTDAgMVNxTDAgOUlvMCAxNlAwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjB8MzJlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FkYWt8TlNUIE5XVCBOUFQgQlNUIEJEVCBBSFNUIEhTVCBIRFR8YjAgYTAgYTAgYjAgYTAgYTAgYTAgOTB8MDEyMDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDU2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2fC0xN1NYMCA4d1cwIGlCMCBRbGIwIDUyTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCBjbTAgMTBxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwzMjZcIixcblx0XHRcdFwiQW1lcmljYS9BbmNob3JhZ2V8QVNUIEFXVCBBUFQgQUhTVCBBSERUIFlTVCBBS1NUIEFLRFR8YTAgOTAgOTAgYTAgOTAgOTAgOTAgODB8MDEyMDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDU2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2fC0xN1QwMCA4d1gwIGlBMCBRbGIwIDUyTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCBjbTAgMTBxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwzMGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxMTVQgQVNUfDQ2LjQgNDB8MDF8LTJrTnZSLlV8NDNlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL0FyYWd1YWluYXxMTVQgLTAzIC0wMnwzYy5NIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHdMLmMgSGRLTC5jIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIDFFTjAgRlgwIDFIQjAgTHowIGRNTjAgTHowIDF6ZDAgUmIwIDF3TjAgV24wIDF0QjAgUmIwIDF0QjAgV0wwIDF0QjAgUmIwIDF6ZDAgT24wIDFIQjAgRlgwIG55MTAgTHowfDE0ZTRcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvQnVlbm9zX0FpcmVzfENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMjMyMzIzMjMyfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFRYMCAxd3AwIFJiMCAxd3AwIFJiMCAxd3AwIFRYMCBBNHAwIHVMMCAxcU4wIFdMMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9DYXRhbWFyY2F8Q01UIC0wNCAtMDMgLTAyfDRnLk0gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMxMzIzMjEyMzJ8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF3cDAgUmIwIDF3cTAgUmEwIDF3cDAgVFgwIHJsQjAgN0IwIDh6YjAgdUwwXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL0NvcmRvYmF8Q01UIC0wNCAtMDMgLTAyfDRnLk0gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMxMzIzMjMyMzJ8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF3cDAgUmIwIDF3cTAgUmEwIDF3cDAgVFgwIEE0cDAgdUwwIDFxTjAgV0wwXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL0p1anV5fENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzEyMTMyMzIzMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXplMCBUWDAgMWxkMCBXSzAgMXdwMCBUWDAgQTRwMCB1TDBcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvTGFfUmlvamF8Q01UIC0wNCAtMDMgLTAyfDRnLk0gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMxMjMyMzIxMjMyfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFRYMCAxd3AwIFFuMCBxTzAgMTZuMCBSYjAgMXdwMCBUWDAgcmxCMCA3QjAgOHpiMCB1TDBcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvTWVuZG96YXxDTVQgLTA0IC0wMyAtMDJ8NGcuTSA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMxMjEyMTMyMTIzMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXUyMCBTTDAgMXZkMCBUYjAgMXdwMCBUVzAgcmkxMCBPcDAgN1RYMCB1TDBcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvUmlvX0dhbGxlZ29zfENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMjMyMzIxMjMyfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFRYMCAxd3AwIFJiMCAxd3AwIFJiMCAxd3AwIFRYMCBybEIwIDdCMCA4emIwIHVMMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9TYWx0YXxDTVQgLTA0IC0wMyAtMDJ8NGcuTSA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMyMzEzMjMyMzJ8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF3cDAgUmIwIDF3cTAgUmEwIDF3cDAgVFgwIEE0cDAgdUwwXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL1Nhbl9KdWFufENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMTIzMjMyMTIzMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXdwMCBRbjAgcU8wIDE2bjAgUmIwIDF3cDAgVFgwIHJsZDAgbTEwIDhsYjAgdUwwXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL1Nhbl9MdWlzfENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzEyMTIxMjMyMTIxMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBYWDAgMXEyMCBTTDAgQU4wIHZEYjAgbTEwIDhsYjAgOEwwIGpkMCAxcU4wIFdMMCAxcU4wXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL1R1Y3VtYW58Q01UIC0wNCAtMDMgLTAyfDRnLk0gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMxMzIzMjEyMzIzMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXdwMCBSYjAgMXdxMCBSYTAgMXdwMCBUWDAgcmxCMCA0TjAgOEJYMCB1TDAgMXFOMCBXTDBcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvVXNodWFpYXxDTVQgLTA0IC0wMyAtMDJ8NGcuTSA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMyMzIzMjMyMTIzMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXdwMCBSYjAgMXdwMCBSYjAgMXdwMCBUWDAgcmtOMCA4cDAgOHpiMCB1TDBcIixcblx0XHRcdFwiQW1lcmljYS9DdXJhY2FvfExNVCAtMDQzMCBBU1R8NHouTCA0dSA0MHwwMTJ8LTJrVjdvLmQgMjhLTFMuZHwxNWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvQXN1bmNpb258QU1UIC0wNCAtMDN8M08uRSA0MCAzMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTF4NTg5LmsgMURLTTkuayAzQ0wwIDNEZDAgMTBMMCAxcEIwIDEwbjAgMXBCMCAxMG4wIDFwQjAgMWNMMCAxZGQwIDFkYjAgMWRkMCAxY0wwIDFkZDAgMWNMMCAxZGQwIDFjTDAgMWRkMCAxZGIwIDFkZDAgMWNMMCAxZGQwIDFjTDAgMWRkMCAxY0wwIDFkZDAgMWRiMCAxZGQwIDFjTDAgMWxCMCAxNG4wIDFkZDAgMWNMMCAxZmQwIFdMMCAxcmQwIDFhTDAgMWRCMCBYejAgMXFwMCBYYjAgMXFOMCAxMEwwIDFyQjAgVFgwIDF0QjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMWNMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMWlwMCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXRCMCBUWDAgMXRCMCBUWDAgMXRCMCAxOVgwIDFhMTAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxN2IwIDFpcDAgMTdiMCAxaXAwIDE3YjAgMWlwMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWlwMCAxN2IwIDFpcDAgMTdiMCAxaXAwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWlwMCAxN2IwIDFpcDAgMTdiMCAxaXAwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxaXAwIDE3YjAgMWlwMCAxN2IwIDFpcDAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxaXAwIDE3YjAgMWlwMCAxN2IwIDFpcDB8MjhlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0F0aWtva2FufENTVCBDRFQgQ1dUIENQVCBFU1R8NjAgNTAgNTAgNTAgNTB8MDEwMTIzNHwtMjVUUTAgMWluMCBSbmIwIDNqZTAgOHgzMCBpdzB8MjhlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0JhaGlhX0JhbmRlcmFzfExNVCBNU1QgQ1NUIFBTVCBNRFQgQ0RUfDcxIDcwIDYwIDgwIDYwIDUwfDAxMjEyMTIxMzE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTJ8LTFVUUYwIGRlTDAgOGxjMCAxN2MwIDEwTTAgMWRkMCBvdFgwIGdtTjAgUDJOMCAxM1ZkMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxZkIwIFdMMCAxZkIwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5XMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMHw4NGUzXCIsXG5cdFx0XHRcIkFtZXJpY2EvQmFoaWF8TE1UIC0wMyAtMDJ8MnkuNCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdseHAuVSBIZExwLlUgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgMUVOMCBMejAgMUMxMCBJTDAgMUhCMCBEYjAgMUhCMCBPbjAgMXpkMCBPbjAgMXpkMCBMejAgMXpkMCBSYjAgMXdOMCBXbjAgMXRCMCBSYjAgMXRCMCBXTDAgMXRCMCBSYjAgMXpkMCBPbjAgMUhCMCBGWDAgbDVCMCBSYjB8MjdlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0JhcmJhZG9zfExNVCBCTVQgQVNUIEFEVHwzVy50IDNXLnQgNDAgMzB8MDEyMzIzMjMyMzJ8LTFRMEkxLnYganNNMCAxT0RDMS52IElMMCAxaXAwIDE3YjAgMWlwMCAxN2IwIDFsZDAgMTNiMHwyOGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvQmVsZW18TE1UIC0wMyAtMDJ8M2QuVSAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHdLLjQgSGRLSy40IDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwfDIwZTVcIixcblx0XHRcdFwiQW1lcmljYS9CZWxpemV8TE1UIENTVCAtMDUzMCBDRFR8NVEuTSA2MCA1dSA1MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMzEzMXwtMmtCdTcuYyBmUEE3LmMgT251IDF6Y3UgUmJ1IDF3b3UgUmJ1IDF3b3UgUmJ1IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgUmJ1IDF3b3UgUmJ1IDF3b3UgUmJ1IDF3b3UgUmJ1IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgUmJ1IDF3b3UgUmJ1IDF3b3UgUmJ1IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgUmJ1IDF3b3UgUmJ1IDF3b3UgUmJ1IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgUmJ1IDF3b3UgUmJ1IDFmME11IHFuMCBseEIwIG1uMHw1N2UzXCIsXG5cdFx0XHRcIkFtZXJpY2EvQmxhbmMtU2FibG9ufEFTVCBBRFQgQVdUIEFQVHw0MCAzMCAzMCAzMHwwMTAyMzB8LTI1VFMwIDFpbjAgVUdwMCA4eDUwIGl1MHwxMWUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvQm9hX1Zpc3RhfExNVCAtMDQgLTAzfDQyLkUgNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdsdlYuayBIZEtWLmsgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgc21wMCBXTDAgMXRCMCAyTDB8NjJlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0JvZ290YXxCTVQgLTA1IC0wNHw0VS5nIDUwIDQwfDAxMjF8LTJlYjczLkkgMzh5bzMuSSAyZW4wfDkwZTVcIixcblx0XHRcdFwiQW1lcmljYS9Cb2lzZXxQU1QgUERUIE1TVCBNV1QgTVBUIE1EVHw4MCA3MCA3MCA2MCA2MCA2MHwwMTAxMDIzNDI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyfC0yNjFxMCAxblgwIDExQjAgMW5YMCA4QzEwIEpDTDAgOHgyMCBpeDAgUXdOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIERkMCAxS24wIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyMWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvQ2FtYnJpZGdlX0JheXwtMDAgTVNUIE1XVCBNUFQgTUREVCBNRFQgQ1NUIENEVCBFU1R8MCA3MCA2MCA2MCA1MCA2MCA2MCA1MCA1MHwwMTIzMTQxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1Njc4NjUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxfC0yMUpjMCBSTzkwIDh4MjAgaXgwIExDTDAgMWZBMCB6Z08wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQTAgMW5YMCAySzAgV1EwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwxNWUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvQ2FtcG9fR3JhbmRlfExNVCAtMDQgLTAzfDNDLnMgNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0yZ2x3bC53IEhkTGwudyAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCAxRU4wIEZYMCAxSEIwIEx6MCAxRU4wIEx6MCAxQzEwIElMMCAxSEIwIERiMCAxSEIwIE9uMCAxemQwIE9uMCAxemQwIEx6MCAxemQwIFJiMCAxd04wIFduMCAxdEIwIFJiMCAxdEIwIFdMMCAxdEIwIFJiMCAxemQwIE9uMCAxSEIwIEZYMCAxQzEwIEx6MCAxSXAwIEhYMCAxemQwIE9uMCAxSEIwIElMMCAxd3AwIE9uMCAxQzEwIEx6MCAxQzEwIE9uMCAxemQwIE9uMCAxemQwIFJiMCAxemQwIEx6MCAxQzEwIEx6MCAxQzEwIE9uMCAxemQwIE9uMCAxemQwIE9uMCAxemQwIE9uMCAxSEIwIEZYMCAxSEIwIEZYMCAxSEIwIElMMCAxSEIwIEZYMCAxSEIwIElMMCAxRU4wIEZYMCAxSEIwIEZYMCAxSEIwIElMMCAxRU4wIElMMCAxSEIwIEZYMCAxSEIwIEZYMCAxSEIwIEZYMCAxSEIwIEZYMCAxSEIwIEZYMCAxS3AwIEZYMCAxSEIwIElMMCAxRU4wIEZYMCAxSEIwIEZYMCAxSEIwIElMMCAxRU4wfDc3ZTRcIixcblx0XHRcdFwiQW1lcmljYS9DYW5jdW58TE1UIENTVCBFU1QgRURUIENEVHw1TC40IDYwIDUwIDQwIDUwfDAxMjMyMzIzNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTJ8LTFVUUcwIDJxMm8wIHlMQjAgMWxiMCAxNHAwIDFsYjAgMTRwMCBMejAgeEIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIERkMHw2M2U0XCIsXG5cdFx0XHRcIkFtZXJpY2EvQ2FyYWNhc3xDTVQgLTA0MzAgLTA0fDRyLkUgNHUgNDB8MDEyMTJ8LTJrVjd3LmsgMjhLTTIuayAxSXdPdSBrcW8wfDI5ZTVcIixcblx0XHRcdFwiQW1lcmljYS9DYXllbm5lfExNVCAtMDQgLTAzfDN0LmsgNDAgMzB8MDEyfC0ybXJ3dS5FIDJnV291LkV8NThlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL1BhbmFtYXxDTVQgRVNUfDVqLkEgNTB8MDF8LTJ1ZHVFLm98MTVlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0NoaWNhZ298Q1NUIENEVCBFU1QgQ1dUIENQVHw2MCA1MCA1MCA1MCA1MHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMjAxMDEwMTAxMDEwMzQwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgMXdwMCBUWDAgV04wIDFxTDAgMWNOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMTFCMCAxSHowIDE0cDAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCBSQjAgOHgzMCBpdzAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDkyZTVcIixcblx0XHRcdFwiQW1lcmljYS9DaGlodWFodWF8TE1UIE1TVCBDU1QgQ0RUIE1EVHw3NC5rIDcwIDYwIDUwIDYwfDAxMjEyMTIzMjMyNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDF8LTFVUUYwIGRlTDAgOGxjMCAxN2MwIDEwTTAgMWRkMCAyelFOMCAxbGIwIDE0cDAgMWxiMCAxNHEwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxZkIwIFdMMCAxZkIwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMHw4MWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvQ29zdGFfUmljYXxTSk1UIENTVCBDRFR8NUEuZCA2MCA1MHwwMTIxMjEyMTIxfC0xWGQ2bi5MIDJsdTBuLkwgRGIwIDFLcDAgRGIwIHBSQjAgMTViMCAxa3AwIG1MMHwxMmU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvQ3Jlc3RvbnxNU1QgUFNUfDcwIDgwfDAxMHwtMjlEUjAgNDNCMHw1M2UyXCIsXG5cdFx0XHRcIkFtZXJpY2EvQ3VpYWJhfExNVCAtMDQgLTAzfDNJLmsgNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMmdsd2YuRSBIZExmLkUgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgMUVOMCBMejAgMUMxMCBJTDAgMUhCMCBEYjAgMUhCMCBPbjAgMXpkMCBPbjAgMXpkMCBMejAgMXpkMCBSYjAgMXdOMCBXbjAgMXRCMCBSYjAgMXRCMCBXTDAgMXRCMCBSYjAgMXpkMCBPbjAgMUhCMCBGWDAgNGExMCBIWDAgMXpkMCBPbjAgMUhCMCBJTDAgMXdwMCBPbjAgMUMxMCBMejAgMUMxMCBPbjAgMXpkMCBPbjAgMXpkMCBSYjAgMXpkMCBMejAgMUMxMCBMejAgMUMxMCBPbjAgMXpkMCBPbjAgMXpkMCBPbjAgMXpkMCBPbjAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBJTDAgMUhCMCBGWDAgMUhCMCBJTDAgMUVOMCBGWDAgMUhCMCBGWDAgMUhCMCBJTDAgMUVOMCBJTDAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBGWDAgMUtwMCBGWDAgMUhCMCBJTDAgMUVOMCBGWDAgMUhCMCBGWDAgMUhCMCBJTDAgMUVOMHw1NGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvRGFubWFya3NoYXZufExNVCAtMDMgLTAyIEdNVHwxZS5FIDMwIDIwIDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTN8LTJhNVdKLmsgMno1ZkouayAxOVUwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIERDMHw4XCIsXG5cdFx0XHRcIkFtZXJpY2EvRGF3c29uX0NyZWVrfFBTVCBQRFQgUFdUIFBQVCBNU1R8ODAgNzAgNzAgNzAgNzB8MDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxNHwtMjVUTzAgMWluMCBVR3AwIDh4MTAgaXkwIDNOQjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCBNTDB8MTJlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL0Rhd3NvbnxZU1QgWURUIFlXVCBZUFQgWUREVCBQU1QgUERUfDkwIDgwIDgwIDgwIDcwIDgwIDcwfDAxMDEwMjMwNDA1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjV8LTI1VE4wIDFpbjAgMW8xMCAxM1YwIFNlcjAgOHgwMCBpejAgTENMMCAxZkEwIGpyQTAgZk5kMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTNlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0RlbnZlcnxNU1QgTURUIE1XVCBNUFR8NzAgNjAgNjAgNjB8MDEwMTAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI2MXIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgbW4wIE9yZDAgOHgyMCBpeDAgTENOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDI2ZTVcIixcblx0XHRcdFwiQW1lcmljYS9EZXRyb2l0fExNVCBDU1QgRVNUIEVXVCBFUFQgRURUfDV3LmIgNjAgNTAgNDAgNDAgNDB8MDEyMzQyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyfC0yQ2dpci5OIHBlcXIuTiAxNTZMMCA4eDQwIGl2MCA2ZmQwIDExejAgWFFwMCAxY0wwIHMxMCAxVnowIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MzdlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0VkbW9udG9ufExNVCBNU1QgTURUIE1XVCBNUFR8N3guUSA3MCA2MCA2MCA2MHwwMTIxMjEyMTIxMjEyMTM0MTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMnlkNHEuOCBzaGRxLjggMWluMCAxN2QwIGh6MCAyZEIwIDFmejAgMWExMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCBJR04wIDh4MjAgaXgwIDNOQjAgMTF6MCBMRkIwIDFjTDAgM0NwMCAxY0wwIDY2TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTBlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0VpcnVuZXBlfExNVCAtMDUgLTA0fDRELnMgNTAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdsdmsudyBIZExrLncgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgZFBCMCBPbjAgeVRkMCBkNVgwfDMxZTNcIixcblx0XHRcdFwiQW1lcmljYS9FbF9TYWx2YWRvcnxMTVQgQ1NUIENEVHw1VS5NIDYwIDUwfDAxMjEyMXwtMVhpRzMuYyAyRnZjMy5jIFdMMCAxcU4wIFdMMHwxMWU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvVGlqdWFuYXxMTVQgTVNUIFBTVCBQRFQgUFdUIFBQVHw3TS40IDcwIDgwIDcwIDcwIDcwfDAxMjEyMzI0NTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVVRRTAgNFBYMCA4bU0wIDhsYzAgU04wIDFjTDAgcEhCMCA4M3IwIHpJMCA1TzEwIDFSejAgY09PMCAxMUEwIDFvMDAgMTFBMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIEJVcDAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCBVMTAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyMGU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvRm9ydF9OZWxzb258UFNUIFBEVCBQV1QgUFBUIE1TVHw4MCA3MCA3MCA3MCA3MHwwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwNHwtMjVUTzAgMWluMCBVR3AwIDh4MTAgaXkwIDNOQjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDB8MzllMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0ZvcnRfV2F5bmV8Q1NUIENEVCBDV1QgQ1BUIEVTVCBFRFR8NjAgNTAgNTAgNTAgNTAgNDB8MDEwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDQwNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFzMCAxblgwIDExQjAgMW5YMCBRSTEwIERiMCBSQjAgOHgzMCBpdzAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDVUejAgMW8xMCBxTGIwIDFjTDAgMWNOMCAxY0wwIDFxaGQwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9Gb3J0YWxlemF8TE1UIC0wMyAtMDJ8MnkgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdseHEgSGRMcSAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCAxRU4wIEZYMCAxSEIwIEx6MCBuc3AwIFdMMCAxdEIwIDV6MCAybU4wIE9uMHwzNGU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvR2xhY2VfQmF5fExNVCBBU1QgQURUIEFXVCBBUFR8M1guTSA0MCAzMCAzMCAzMHwwMTIxMzQxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJJc0kwLmMgQ3dPMC5jIDFpbjAgVUdwMCA4eDUwIGl1MCBpcTEwIDExejAgSmcxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwxOWUzXCIsXG5cdFx0XHRcIkFtZXJpY2EvR29kdGhhYnxMTVQgLTAzIC0wMnwzcS5VIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJhNVV4LjQgMno1ZHguNCAxOVUwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTdlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL0dvb3NlX0JheXxOU1QgTkRUIE5TVCBORFQgTldUIE5QVCBBU1QgQURUIEFERFR8M3UuUSAydS5RIDN1IDJ1IDJ1IDJ1IDQwIDMwIDIwfDAxMDIzMjMyMzIzMjMyMzI0NTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyNjc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2ODY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3NnwtMjVUU3QuOCAxaW4wIERYYjAgMkhiWC44IFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxdEIwIFRYMCAxdEIwIFdMMCAxcU4wIFdMMCAxcU4wIDdVSHUgaXR1IDF0QjAgV0wwIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgV0wwIDF0QjAgV0wwIDFsZDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIFMxMCBnMHUgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0bjEgMWxiMCAxNHAwIDFuVzAgMTFDMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6Y1ggT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8NzZlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0dyYW5kX1R1cmt8S01UIEVTVCBFRFQgQVNUfDU3LmEgNTAgNDAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJsMXVRLk8gMkhIQlEuTyAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIDVJcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwzN2UyXCIsXG5cdFx0XHRcIkFtZXJpY2EvR3VhdGVtYWxhfExNVCBDU1QgQ0RUfDYyLjQgNjAgNTB8MDEyMTIxMjEyMXwtMjRLaFYuVSAyZWZYVi5VIEFuMCBtdGQwIE56MCBpZkIwIDE3YjAgekRCMCAxMXowfDEzZTVcIixcblx0XHRcdFwiQW1lcmljYS9HdWF5YXF1aWx8UU1UIC0wNSAtMDR8NWUgNTAgNDB8MDEyMXwtMXlWU0sgMnVJTEsgcnowfDI3ZTVcIixcblx0XHRcdFwiQW1lcmljYS9HdXlhbmF8TE1UIC0wMzQ1IC0wMyAtMDR8M1EuRSAzSiAzMCA0MHwwMTIzfC0yZHZVNy5rIDJyNkxRLmsgQnhiZnw4MGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvSGFsaWZheHxMTVQgQVNUIEFEVCBBV1QgQVBUfDRlLm8gNDAgMzAgMzAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEzNDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMklzSEouQSB4enpKLkEgMWRiMCAzSTMwIDFpbjAgM0hYMCBJTDAgMUUxMCBNTDAgMXlOMCBQYjAgMUJkMCBNbjAgMUJkMCBSejAgMXcxMCBYYjAgMXcxMCBMWDAgMXcxMCBYYjAgMXcxMCBMejAgMUMxMCBKejAgMUUxMCBPTDAgMXlOMCBVbjAgMXFwMCBYYjAgMXFwMCAxMVgwIDF3MTAgTHowIDFIQjAgTFgwIDFDMTAgRlgwIDF3MTAgWGIwIDFxcDAgWGIwIDFCQjAgTFgwIDF0ZDAgWGIwIDFxcDAgWGIwIFJmMCA4eDUwIGl1MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgM1FwMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDNRcDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCA2aTEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwzOWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvSGF2YW5hfEhNVCBDU1QgQ0RUfDV0LkEgNTAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0xTWV1dS5vIDcyenUubyBNTDAgc2xkMCBBbjAgMU5kMCBEYjAgMU5kMCBBbjAgNkVwMCBBbjAgMU5kMCBBbjAgSkRkMCBNbjAgMUFwMCBPbjAgMWZkMCAxMVgwIDFxTjAgV0wwIDF3cDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMTRuMCAxbGQwIDE0TDAgMWtOMCAxNWIwIDFrcDAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFmQjAgMTF6MCAxNHAwIDFuWDAgMTFCMCAxblgwIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTRuMCAxbGQwIDE0bjAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDFhMTAgMWluMCAxYTEwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMTdjMCAxbzAwIDExQTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTFBMCA2aTAwIFJjMCAxd28wIFUwMCAxdEEwIFJjMCAxd28wIFUwMCAxd28wIFUwMCAxemMwIFUwMCAxcU0wIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwfDIxZTVcIixcblx0XHRcdFwiQW1lcmljYS9IZXJtb3NpbGxvfExNVCBNU1QgQ1NUIFBTVCBNRFR8N24uUSA3MCA2MCA4MCA2MHwwMTIxMjEyMTMxNDE0MTQxfC0xVVFGMCBkZUwwIDhsYzAgMTdjMCAxME0wIDFkZDAgb3RYMCBnbU4wIFAyTjAgMTNWZDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwfDY0ZTRcIixcblx0XHRcdFwiQW1lcmljYS9JbmRpYW5hL0tub3h8Q1NUIENEVCBDV1QgQ1BUIEVTVHw2MCA1MCA1MCA1MCA1MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDQwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTQxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjFzMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MzAgaXcwIDNOQjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAzQ24wIDh3cDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgejhvMCAxbzAwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkFtZXJpY2EvSW5kaWFuYS9NYXJlbmdvfENTVCBDRFQgQ1dUIENQVCBFU1QgRURUfDYwIDUwIDUwIDUwIDUwIDQwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDQ1NDU0NTQ1NDU0MTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXMwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgzMCBpdzAgZHlOMCAxMXowIDZmZDAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIGpyejAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWQTAgTEEwIDFCWDAgMWU2cDAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0luZGlhbmEvUGV0ZXJzYnVyZ3xDU1QgQ0RUIENXVCBDUFQgRVNUIEVEVHw2MCA1MCA1MCA1MCA1MCA0MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwNDAxMDEwMTAxMDEwMTAxMDEwMTAxMDE0MTAxNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCBualgwIFdOMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDNGYjAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMTljbzAgMW8wMCBSZDAgMXpiMCBPbzAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0luZGlhbmEvVGVsbF9DaXR5fENTVCBDRFQgQ1dUIENQVCBFU1QgRURUfDYwIDUwIDUwIDUwIDUwIDQwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwNDU0NTQxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjFzMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MzAgaXcwIDFvMTAgMTF6MCBnMHAwIDExejAgMW8xMCAxMXowIDFxTDAgV04wIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFmejAgMWNOMCBXTDAgMXFOMCAxY0wwIDFjTjAgMWNMMCAxY04wIGNhTDAgMWNMMCAxY04wIDFjTDAgMXFoZDAgMW8wMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0luZGlhbmEvVmV2YXl8Q1NUIENEVCBDV1QgQ1BUIEVTVCBFRFR8NjAgNTAgNTAgNTAgNTAgNDB8MDEwMTAyMzA0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFzMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MzAgaXcwIGtQQjAgQXduMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFsbmQwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9JbmRpYW5hL1ZpbmNlbm5lc3xDU1QgQ0RUIENXVCBDUFQgRVNUIEVEVHw2MCA1MCA1MCA1MCA1MCA0MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDQ1NDU0MTAxNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCAxbzEwIDExejAgZzBwMCAxMXowIDFvMTAgMTF6MCAxcUwwIFdOMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxZnowIDFjTjAgV0wwIDFxTjAgMWNMMCAxY04wIDFjTDAgMWNOMCBjYUwwIDFjTDAgMWNOMCAxY0wwIDFxaGQwIDFvMDAgUmQwIDF6YjAgT28wIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9JbmRpYW5hL1dpbmFtYWN8Q1NUIENEVCBDV1QgQ1BUIEVTVCBFRFR8NjAgNTAgNTAgNTAgNTAgNDB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTA0NTQ1NDEwNTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXMwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgzMCBpdzAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIGpyejAgMWNMMCAxY04wIDFjTDAgMXFoZDAgMW8wMCBSZDAgMXphMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0ludXZpa3wtMDAgUFNUIFBERFQgTVNUIE1EVHwwIDgwIDYwIDcwIDYwfDAxMjEzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDN8LUZuQTAgdFdVMCAxZkEwIHdQZTAgMnB6MCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MzVlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0lxYWx1aXR8LTAwIEVXVCBFUFQgRVNUIEVERFQgRURUIENTVCBDRFR8MCA0MCA0MCA1MCAzMCA0MCA2MCA1MHwwMTIzNDM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzU2NzM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1M3wtMTZLMDAgN25YMCBpdjAgTENMMCAxZkEwIHpnTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFDMCAxblgwIDExQTAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDY3ZTJcIixcblx0XHRcdFwiQW1lcmljYS9KYW1haWNhfEtNVCBFU1QgRURUfDU3LmEgNTAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmwxdVEuTyAydU0xUS5PIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MHw5NGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvSnVuZWF1fFBTVCBQV1QgUFBUIFBEVCBZRFQgWVNUIEFLU1QgQUtEVHw4MCA3MCA3MCA3MCA4MCA5MCA5MCA4MHwwMTIwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDQwMzAzMDM1Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3NnwtMTdUMjAgOHgxMCBpeTAgVm8xMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY00wIDFjTTAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIGNvMCAxMHEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDMzZTNcIixcblx0XHRcdFwiQW1lcmljYS9LZW50dWNreS9Mb3Vpc3ZpbGxlfENTVCBDRFQgQ1dUIENQVCBFU1QgRURUfDYwIDUwIDUwIDUwIDUwIDQwfDAxMDEwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDE0NTQ1NDU0NTQ1NDU0MTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXMwIDFuWDAgMTFCMCAxblgwIDNGZDAgTmIwIExQZDAgMTF6MCBSQjAgOHgzMCBpdzAgQmIwIDEwTjAgMmJCMCA4aW4wIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIHh6MCBnc28wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZBMCBMQTAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9LZW50dWNreS9Nb250aWNlbGxvfENTVCBDRFQgQ1dUIENQVCBFU1QgRURUfDYwIDUwIDUwIDUwIDUwIDQwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDE0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXMwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgzMCBpdzAgU1dwMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQTAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkFtZXJpY2EvTGFfUGF6fENNVCBCU1QgLTA0fDR3LkEgM3cuQSA0MHwwMTJ8LTF4MzdyLm8gMTNiMHwxOWU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvTGltYXxMTVQgLTA1IC0wNHw1OC5BIDUwIDQwfDAxMjEyMTIxMjEyMTIxMjF8LTJ0eUdQLm8gMWJEelAubyB6WDAgMWFOMCAxY0wwIDFjTjAgMWNMMCAxUHJCMCB6WDAgMU8xMCB6WDAgNkdwMCB6WDAgOThwMCB6WDB8MTFlNlwiLFxuXHRcdFx0XCJBbWVyaWNhL0xvc19BbmdlbGVzfFBTVCBQRFQgUFdUIFBQVHw4MCA3MCA3MCA3MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI2MXEwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgxMCBpeTAgNVdwMSAxVmFYIDNkQTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTVlNlwiLFxuXHRcdFx0XCJBbWVyaWNhL01hY2Vpb3xMTVQgLTAzIC0wMnwybS5RIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdseEIuOCBIZExCLjggMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgZE1OMCBMejAgOFExMCBXTDAgMXRCMCA1ejAgMm1OMCBPbjB8OTNlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL01hbmFndWF8TU1UIENTVCBFU1QgQ0RUfDVKLmMgNjAgNTAgNTB8MDEyMTMxMzEyMTIxMzEzMXwtMXF1aWUuTSAxeUFNZS5NIDRtbjAgOVVwMCBEejAgMUsxMCBEejAgczNGMCAxS0gwIERCMCA5SW4wIGs4cDAgMTlYMCAxbzMwIDExeTB8MjJlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL01hbmF1c3xMTVQgLTA0IC0wM3w0MC40IDQwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2x2WC5VIEhkS1guVSAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCBkUEIwIE9uMHwxOWU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvTWFydGluaXF1ZXxGRk1UIEFTVCBBRFR8NDQuayA0MCAzMHwwMTIxfC0ybVBUVC5FIDJMUGJULkUgMTlYMHwzOWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvTWF0YW1vcm9zfExNVCBDU1QgQ0RUfDZFIDYwIDUwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTFVUUcwIDJGakMwIDFuWDAgaTZwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxZkIwIFdMMCAxZkIwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIFUxMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDQ1ZTRcIixcblx0XHRcdFwiQW1lcmljYS9NYXphdGxhbnxMTVQgTVNUIENTVCBQU1QgTURUfDc1LkUgNzAgNjAgODAgNjB8MDEyMTIxMjEzMTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MXwtMVVRRjAgZGVMMCA4bGMwIDE3YzAgMTBNMCAxZGQwIG90WDAgZ21OMCBQMk4wIDEzVmQwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDFmQjAgV0wwIDFmQjAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwfDQ0ZTRcIixcblx0XHRcdFwiQW1lcmljYS9NZW5vbWluZWV8Q1NUIENEVCBDV1QgQ1BUIEVTVHw2MCA1MCA1MCA1MCA1MHwwMTAxMDIzMDEwMTA0MTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCAxbzEwIDExejAgTENOMCAxZnowIDY0MTAgOUpiMCAxY00wIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw4NWUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvTWVyaWRhfExNVCBDU1QgRVNUIENEVHw1Vy5zIDYwIDUwIDUwfDAxMjEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzF8LTFVUUcwIDJxMm8wIDJoejAgd3UzMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxZkIwIFdMMCAxZkIwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMHwxMWU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvTWV0bGFrYXRsYXxQU1QgUFdUIFBQVCBQRFQgQUtTVCBBS0RUfDgwIDcwIDcwIDcwIDkwIDgwfDAxMjAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzA0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTE3VDIwIDh4MTAgaXkwIFZvMTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxaFUxMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwxNGUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvTWV4aWNvX0NpdHl8TE1UIE1TVCBDU1QgQ0RUIENXVHw2QS5BIDcwIDYwIDUwIDUwfDAxMjEyMTIzMjMyNDIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVVRRjAgZGVMMCA4bGMwIDE3YzAgMTBNMCAxZGQwIGdFbjAgVFgwIDN4ZDAgSmIwIDZ6QjAgU0wwIGU1ZDAgMTdiMCAxUGZmMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxZkIwIFdMMCAxZkIwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMHwyMGU2XCIsXG5cdFx0XHRcIkFtZXJpY2EvTWlxdWVsb258TE1UIEFTVCAtMDMgLTAyfDNJLkUgNDAgMzAgMjB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0ybUtrZi5rIDJMVEFmLmsgZ1ExMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw2MWUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvTW9uY3RvbnxFU1QgQVNUIEFEVCBBV1QgQVBUfDUwIDQwIDMwIDMwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEzNDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMklzSDAgQ3dOMCAxaW4wIHpBbzAgQW4wIDFOZDAgQW4wIDFOZDAgQW4wIDFOZDAgQW4wIDFOZDAgQW4wIDFOZDAgQW4wIDFLMTAgTHowIDF6QjAgTlgwIDF1MTAgV24wIFMyMCA4eDUwIGl1MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDNDcDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNG4xIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJlWCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDY0ZTNcIixcblx0XHRcdFwiQW1lcmljYS9Nb250ZXJyZXl8TE1UIENTVCBDRFR8NkYuZyA2MCA1MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0xVVFHMCAyRmpDMCAxblgwIGk2cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjB8NDFlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL01vbnRldmlkZW98TE1UIE1NVCAtMDQgLTAzIC0wMzMwIC0wMjMwIC0wMiAtMDEzMHwzSS5QIDNJLlAgNDAgMzAgM3UgMnUgMjAgMXV8MDEyMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM1MzUzNjM2MzUzNjM2Mzc1MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzfC0ydFJVZi45IHNWYzAgOGpjZi45IDFkYjAgMWRjdSAxY0x1IDFkY3UgMWNMdSBpcmN1IDExenUgMW8wdSAxMXp1IDFvMHUgMTF6dSAxbzB1IDExenUgMXFNdSBXTHUgMXFNdSBXTHUgMWZBdSAxY0x1IDFvMHUgMTF6dSBOQXUgM2pYdSB6WHUgRHEwdSAxOVh1IHBjdSBqejAgY20xMCAxOVgwIDZ0QjAgMWZidSAzbzB1IGpYMCA0dkIwIHh6MCAzQ3AwIG1tdSAxYTEwIElNdSBEYjAgNGMxMCB1TDAgMU5kMCBBbjAgMVNOMCB1TDAgbXAwIDI4TDAgaVBCMCB1bjAgMVNOMCB4ejAgMXpkMCBMejAgMXpkMCBSYjAgMXpkMCBPbjAgMXdwMCBSYjAgczhwMCAxZkIwIDFpcDAgMTF6MCAxbGQwIDE0bjAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDE0bjAgMWxkMCAxNG4wIDFsZDAgMTRuMCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MHwxN2U1XCIsXG5cdFx0XHRcIkFtZXJpY2EvVG9yb250b3xFU1QgRURUIEVXVCBFUFR8NTAgNDAgNDAgNDB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI1VFIwIDFpbjAgMTFXdSAxbnp1IDFmRDAgV0owIDF3cjAgTmIwIDFBcDAgT24wIDF6ZDAgT24wIDF3cDAgVFgwIDF0QjAgVFgwIDF0QjAgVFgwIDF0QjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDRrTTAgOHg0MCBpdjAgMW8xMCAxMXowIDFuWDAgMTF6MCAxbzEwIDExejAgMW8xMCAxcUwwIDExRDAgMW5YMCAxMUIwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDY1ZTVcIixcblx0XHRcdFwiQW1lcmljYS9OYXNzYXV8TE1UIEVTVCBFRFR8NTkudSA1MCA0MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJrTnVPLnUgMjZYZE8udSAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDI0ZTRcIixcblx0XHRcdFwiQW1lcmljYS9OZXdfWW9ya3xFU1QgRURUIEVXVCBFUFR8NTAgNDAgNDAgNDB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI2MXQwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCAxYTEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCBSQjAgOHg0MCBpdjAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDIxZTZcIixcblx0XHRcdFwiQW1lcmljYS9OaXBpZ29ufEVTVCBFRFQgRVdUIEVQVHw1MCA0MCA0MCA0MHwwMTAxMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI1VFIwIDFpbjAgUm5iMCAzamUwIDh4NDAgaXYwIDE5eU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwxNmUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvTm9tZXxOU1QgTldUIE5QVCBCU1QgQkRUIFlTVCBBS1NUIEFLRFR8YjAgYTAgYTAgYjAgYTAgOTAgOTAgODB8MDEyMDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDU2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2fC0xN1NYMCA4d1cwIGlCMCBRbGIwIDUyTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCBjbDAgMTBxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwzOGUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvTm9yb25oYXxMTVQgLTAyIC0wMXwyOS5FIDIwIDEwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHhPLmsgSGRLTy5rIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIDFFTjAgRlgwIDFIQjAgTHowIG5zcDAgV0wwIDF0QjAgMkwwIDJwQjAgT24wfDMwZTJcIixcblx0XHRcdFwiQW1lcmljYS9Ob3J0aF9EYWtvdGEvQmV1bGFofE1TVCBNRFQgTVdUIE1QVCBDU1QgQ0RUfDcwIDYwIDYwIDYwIDYwIDUwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMjYxcjAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDIwIGl4MCBRd04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9vMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkFtZXJpY2EvTm9ydGhfRGFrb3RhL0NlbnRlcnxNU1QgTURUIE1XVCBNUFQgQ1NUIENEVHw3MCA2MCA2MCA2MCA2MCA1MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXIwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgyMCBpeDAgUXdOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRvMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL05vcnRoX0Rha290YS9OZXdfU2FsZW18TVNUIE1EVCBNV1QgTVBUIENTVCBDRFR8NzAgNjAgNjAgNjAgNjAgNTB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFyMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MjAgaXgwIFF3TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRvMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9PamluYWdhfExNVCBNU1QgQ1NUIENEVCBNRFR8NlYuRSA3MCA2MCA1MCA2MHwwMTIxMjEyMzIzMjQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxfC0xVVFGMCBkZUwwIDhsYzAgMTdjMCAxME0wIDFkZDAgMnpRTjAgMWxiMCAxNHAwIDFsYjAgMTRxMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCBVMTAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyM2UzXCIsXG5cdFx0XHRcIkFtZXJpY2EvUGFuZ25pcnR1bmd8LTAwIEFTVCBBV1QgQVBUIEFERFQgQURUIEVEVCBFU1QgQ1NUIENEVHwwIDQwIDMwIDMwIDIwIDMwIDQwIDUwIDYwIDUwfDAxMjMxNDE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE2NzY3Njc2NzY4OTc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2N3wtMVhpTTAgUG5HMCA4eDUwIGl1MCBMQ0wwIDFmQTAgemdPMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxbzAwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUMwIDFuWDAgMTFBMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTRlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL1BhcmFtYXJpYm98TE1UIFBNVCBQTVQgLTAzMzAgLTAzfDNFLkUgM0UuUSAzRS5BIDN1IDMwfDAxMjM0fC0ybkRVai5rIFdxbzAuYyBxYW5YLkkgMXlWWE4ub3wyNGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvUGhvZW5peHxNU1QgTURUIE1XVHw3MCA2MCA2MHwwMTAxMDIwMjAxMHwtMjYxcjAgMW5YMCAxMUIwIDFuWDAgU2dOMCA0QWwxIEFwMCAxZGIwIFNXcVggMWNMMHw0MmU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydC1hdS1QcmluY2V8UFBNVCBFU1QgRURUfDROIDUwIDQwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yOFJIYiAyRm5NYiAxOVgwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDE0bzAgMWxjMCAxNG8wIDFsYzAgaTZuMCAxblgwIDExQjAgMW5YMCBkNDMwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgM2lOMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDIzZTVcIixcblx0XHRcdFwiQW1lcmljYS9SaW9fQnJhbmNvfExNVCAtMDUgLTA0fDR2LmMgNTAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHZzLk0gSGRMcy5NIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIE5CZDAgZDVYMHwzMWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydG9fVmVsaG98TE1UIC0wNCAtMDN8NGYuQSA0MCAzMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHZJLm8gSGRLSS5vIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwfDM3ZTRcIixcblx0XHRcdFwiQW1lcmljYS9QdWVydG9fUmljb3xBU1QgQVdUIEFQVHw0MCAzMCAzMHwwMTIwfC0xN2xVMCA3WFQwIGl1MHwyNGU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvUHVudGFfQXJlbmFzfFNNVCAtMDUgLTA0IC0wM3w0Ry5LIDUwIDQwIDMwfDAxMDIwMjEyMTIxMjEyMTIxMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjN8LTJxMmpoLmUgZkpBaC5lIDVrbkcuSyAxVnpoLmUgalJBRy5LIDFwYmguZSAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFwYjAgMTFkMCBuSFgwIG9wMCBibHowIGtvMCBRZW8wIFdMMCAxemQwIE9uMCAxaXAwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFsZDAgMTRuMCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxY0wwIDFjTjAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMWZCMCAxOVgwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDE3YjAgMWlwMCAxMXowIDFpcDAgMWZ6MCAxZkIwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxN2IwIDFpcDAgMTF6MCAxbzEwIDE5WDAgMWZCMCAxblgwIEcxMCAxRUwwIE9wMCAxemIwIFJkMCAxd24wIFJkMCA0Nm4wIEFwMFwiLFxuXHRcdFx0XCJBbWVyaWNhL1JhaW55X1JpdmVyfENTVCBDRFQgQ1dUIENQVHw2MCA1MCA1MCA1MHwwMTAxMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI1VFEwIDFpbjAgUm5iMCAzamUwIDh4MzAgaXcwIDE5eU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw4NDJcIixcblx0XHRcdFwiQW1lcmljYS9SYW5raW5fSW5sZXR8LTAwIENTVCBDRERUIENEVCBFU1R8MCA2MCA0MCA1MCA1MHwwMTIxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTM0MzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzF8LXZEYzAga2V1MCAxZkEwIHpnTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDI2ZTJcIixcblx0XHRcdFwiQW1lcmljYS9SZWNpZmV8TE1UIC0wMyAtMDJ8MmouQSAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2x4RS5vIEhkTEUubyAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCAxRU4wIEZYMCAxSEIwIEx6MCBuc3AwIFdMMCAxdEIwIDJMMCAycEIwIE9uMHwzM2U1XCIsXG5cdFx0XHRcIkFtZXJpY2EvUmVnaW5hfExNVCBNU1QgTURUIE1XVCBNUFQgQ1NUfDZXLkEgNzAgNjAgNjAgNjAgNjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMzQxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjE1fC0yQUQ1MS5vIHVIZTEubyAxaW4wIHMyTDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCA2Nk4wIDFjTDAgMWNOMCAxOVgwIDFmQjAgMWNMMCAxZkIwIDFjTDAgMWNOMCAxY0wwIE0zMCA4eDIwIGl4MCAxaXAwIDFjTDAgMWlwMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDNOQjAgMWNMMCAxY04wfDE5ZTRcIixcblx0XHRcdFwiQW1lcmljYS9SZXNvbHV0ZXwtMDAgQ1NUIENERFQgQ0RUIEVTVHwwIDYwIDQwIDUwIDUwfDAxMjEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzQzMTMxMzEzMTMxMzQzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMXwtU25BMCBHV1MwIDFmQTAgemdPMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MjI5XCIsXG5cdFx0XHRcIkFtZXJpY2EvU2FudGFyZW18TE1UIC0wNCAtMDN8M0MuTSA0MCAzMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0yZ2x3bC5jIEhkTGwuYyAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCBOQmQwfDIxZTRcIixcblx0XHRcdFwiQW1lcmljYS9TYW50aWFnb3xTTVQgLTA1IC0wNCAtMDN8NEcuSyA1MCA0MCAzMHwwMTAyMDIxMjEyMTIxMjEyMTIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjN8LTJxMmpoLmUgZkpBaC5lIDVrbkcuSyAxVnpoLmUgalJBRy5LIDFwYmguZSAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFwYjAgMTFkMCBuSFgwIG9wMCA5QnowIGpiMCAxb04wIGtvMCBRZW8wIFdMMCAxemQwIE9uMCAxaXAwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFsZDAgMTRuMCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxY0wwIDFjTjAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMWZCMCAxOVgwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDE3YjAgMWlwMCAxMXowIDFpcDAgMWZ6MCAxZkIwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxN2IwIDFpcDAgMTF6MCAxbzEwIDE5WDAgMWZCMCAxblgwIEcxMCAxRUwwIE9wMCAxemIwIFJkMCAxd24wIFJkMCA0Nm4wIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIERkMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIERkMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIERkMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMHw2MmU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvU2FudG9fRG9taW5nb3xTRE1UIEVTVCBFRFQgLTA0MzAgQVNUfDRFIDUwIDQwIDR1IDQwfDAxMjEzMTMxMzEzMTMxNDE0fC0xdHRqayAxbEpNayBNbjAgNnNwMCBMYnUgMUNvdSB5THUgMVJBdSB3THUgMVFNdSB4enUgMVEwdSB4WHUgMVBBdSAxM2pCMCBlMDB8MjllNVwiLFxuXHRcdFx0XCJBbWVyaWNhL1Nhb19QYXVsb3xMTVQgLTAzIC0wMnwzNi5zIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMmdsd1IudyBIZEtSLncgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcFRkMCBQWDAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgMUVOMCBMejAgMUMxMCBJTDAgMUhCMCBEYjAgMUhCMCBPbjAgMXpkMCBPbjAgMXpkMCBMejAgMXpkMCBSYjAgMXdOMCBXbjAgMXRCMCBSYjAgMXRCMCBXTDAgMXRCMCBSYjAgMXpkMCBPbjAgMUhCMCBGWDAgMUMxMCBMejAgMUlwMCBIWDAgMXpkMCBPbjAgMUhCMCBJTDAgMXdwMCBPbjAgMUMxMCBMejAgMUMxMCBPbjAgMXpkMCBPbjAgMXpkMCBSYjAgMXpkMCBMejAgMUMxMCBMejAgMUMxMCBPbjAgMXpkMCBPbjAgMXpkMCBPbjAgMXpkMCBPbjAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBJTDAgMUhCMCBGWDAgMUhCMCBJTDAgMUVOMCBGWDAgMUhCMCBGWDAgMUhCMCBJTDAgMUVOMCBJTDAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBGWDAgMUtwMCBGWDAgMUhCMCBJTDAgMUVOMCBGWDAgMUhCMCBGWDAgMUhCMCBJTDAgMUVOMHwyMGU2XCIsXG5cdFx0XHRcIkFtZXJpY2EvU2NvcmVzYnlzdW5kfExNVCAtMDIgLTAxICswMHwxci5RIDIwIDEwIDB8MDEyMTMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMmE1V3cuOCAyejVldy44IDFhMDAgMWNLMCAxY0wwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw0NTJcIixcblx0XHRcdFwiQW1lcmljYS9TaXRrYXxQU1QgUFdUIFBQVCBQRFQgWVNUIEFLU1QgQUtEVHw4MCA3MCA3MCA3MCA5MCA5MCA4MHwwMTIwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDM0NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NXwtMTdUMjAgOHgxMCBpeTAgVm8xMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIGNvMCAxMHEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDkwZTJcIixcblx0XHRcdFwiQW1lcmljYS9TdF9Kb2huc3xOU1QgTkRUIE5TVCBORFQgTldUIE5QVCBORERUfDN1LlEgMnUuUSAzdSAydSAydSAydSAxdXwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMjMyMzIzMjMyMzIzMjMyNDUyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyNjIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMjhvaXQuOCAxNEwwIDFuQjAgMWluMCAxZ20wIER6MCAxSkIwIDFjTDAgMWNOMCAxY0wwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDFjTDAgMWNOMCAxY0wwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDFjTDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxME8wIGVLWC44IDE5WDAgMWlxMCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXRCMCBUWDAgMXRCMCBXTDAgMXFOMCBXTDAgMXFOMCA3VUh1IGl0dSAxdEIwIFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxdEIwIFdMMCAxbGQwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNG4xIDFsYjAgMTRwMCAxblcwIDExQzAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemNYIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDExZTRcIixcblx0XHRcdFwiQW1lcmljYS9Td2lmdF9DdXJyZW50fExNVCBNU1QgTURUIE1XVCBNUFQgQ1NUfDdiLmsgNzAgNjAgNjAgNjAgNjB8MDEyMTM0MTIxMjEyMTIxMjEyMTIxMjE1fC0yQUQ0TS5FIHVIZE0uRSAxaW4wIFVHcDAgOHgyMCBpeDAgMW8xMCAxN2IwIDFpcDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIGlzTjAgMWNMMCAzQ3AwIDFjTDAgMWNOMCAxMXowIDFxTjAgV0wwIHBNcDB8MTZlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL1RlZ3VjaWdhbHBhfExNVCBDU1QgQ0RUfDVNLlEgNjAgNTB8MDEyMTIxMjF8LTFXR0diLjggMkVUY2IuOCBXTDAgMXFOMCBXTDAgR1JkMCBBTDB8MTFlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL1RodWxlfExNVCBBU1QgQURUfDR6LjggNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yYTVUby5RIDMxTkJvLlEgMWNMMCAxY04wIDFjTDAgMWZCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw2NTZcIixcblx0XHRcdFwiQW1lcmljYS9UaHVuZGVyX0JheXxDU1QgRVNUIEVXVCBFUFQgRURUfDYwIDUwIDQwIDQwIDQwfDAxMjMxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDF8LTJxNVMwIDFpYU4wIDh4NDAgaXYwIFhOQjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDNDcDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDExZTRcIixcblx0XHRcdFwiQW1lcmljYS9WYW5jb3V2ZXJ8UFNUIFBEVCBQV1QgUFBUfDgwIDcwIDcwIDcwfDAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI1VE8wIDFpbjAgVUdwMCA4eDEwIGl5MCAxbzEwIDE3YjAgMWlwMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDIzZTVcIixcblx0XHRcdFwiQW1lcmljYS9XaGl0ZWhvcnNlfFlTVCBZRFQgWVdUIFlQVCBZRERUIFBTVCBQRFR8OTAgODAgODAgODAgNzAgODAgNzB8MDEwMTAyMzA0MDU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NXwtMjVUTjAgMWluMCAxbzEwIDEzVjAgU2VyMCA4eDAwIGl6MCBMQ0wwIDFmQTAgM05BMCB2cmQwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyM2UzXCIsXG5cdFx0XHRcIkFtZXJpY2EvV2lubmlwZWd8Q1NUIENEVCBDV1QgQ1BUfDYwIDUwIDUwIDUwfDAxMDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmFJaTAgV0wwIDNORDAgMWluMCBKYXAwIFJiMCBhQ04wIDh4MzAgaXcwIDF0QjAgMTF6MCAxaXAwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcmQwIDEwTDAgMW9wMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFjTDAgMWNOMCAxMXowIDZpMTAgV0wwIDZpMTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDE0bzAgMWxjMCAxNG8wIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8NjZlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL1lha3V0YXR8WVNUIFlXVCBZUFQgWURUIEFLU1QgQUtEVHw5MCA4MCA4MCA4MCA5MCA4MHwwMTIwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMTdUMTAgOHgwMCBpejAgVm8xMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIGNuMCAxMHEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDY0MlwiLFxuXHRcdFx0XCJBbWVyaWNhL1llbGxvd2tuaWZlfC0wMCBNU1QgTVdUIE1QVCBNRERUIE1EVHwwIDcwIDYwIDYwIDUwIDYwfDAxMjMxNDE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MXwtMXBkQTAgaGl4MCA4eDIwIGl4MCBMQ0wwIDFmQTAgemdPMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTllM1wiLFxuXHRcdFx0XCJBbnRhcmN0aWNhL0Nhc2V5fC0wMCArMDggKzExfDAgLTgwIC1iMHwwMTIxMjEyMXwtMnEwMCAxRGpTMCBUOTAgNDBQMCBLTDAgYmx6MCAzbTEwfDEwXCIsXG5cdFx0XHRcIkFudGFyY3RpY2EvRGF2aXN8LTAwICswNyArMDV8MCAtNzAgLTUwfDAxMDEyMTIxfC12eW8wIGlYdDAgYWxqMCAxRDd2MCBWQjAgM1duMCBLTjB8NzBcIixcblx0XHRcdFwiQW50YXJjdGljYS9EdW1vbnREVXJ2aWxsZXwtMDAgKzEwfDAgLWEwfDAxMDF8LVUwbzAgY2ZxMCBiRm0wfDgwXCIsXG5cdFx0XHRcIkFudGFyY3RpY2EvTWFjcXVhcmllfEFFU1QgQUVEVCAtMDAgKzExfC1hMCAtYjAgMCAtYjB8MDEwMjAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxM3wtMjlFODAgMTlYMCA0U0wwIDFheXkwIEx2czAgMWNNMCAxbzAwIFJjMCAxd28wIFJjMCAxd28wIFUwMCAxd28wIExBMCAxQzAwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIDExQTAgMXFNMCBXTTAgMXFNMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXdvMCBXTTAgMXRBMCBXTTAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCAxMUEwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDExQTAgMW8wMCAxaW8wIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWEwMCAxaW8wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMHwxXCIsXG5cdFx0XHRcIkFudGFyY3RpY2EvTWF3c29ufC0wMCArMDYgKzA1fDAgLTYwIC01MHwwMTJ8LUNFbzAgMmZ5azB8NjBcIixcblx0XHRcdFwiUGFjaWZpYy9BdWNrbGFuZHxOWk1UIE5aU1QgTlpTVCBOWkRUfC1idSAtY3UgLWMwIC1kMHwwMTAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyM3wtMUdDVnUgTHowIDF0QjAgMTF6dSAxbzB1IDExenUgMW8wdSAxMXp1IDFvMHUgMTRudSAxbGN1IDE0bnUgMWxjdSAxbGJ1IDExQXUgMW5YdSAxMUF1IDFuWHUgMTFBdSAxblh1IDExQXUgMW5YdSAxMUF1IDFxTHUgV011IDFxTHUgMTFBdSAxbjFidSBJTTAgMUMwMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXFNMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE3YzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWlvMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMHwxNGU1XCIsXG5cdFx0XHRcIkFudGFyY3RpY2EvUGFsbWVyfC0wMCAtMDMgLTA0IC0wMnwwIDMwIDQwIDIwfDAxMjEyMTIxMjEyMTMxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LWNhbzAgbkQwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAganNOMCAxNE4wIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgMWNMMCAxY04wIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFmQjAgMTlYMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxN2IwIDFpcDAgMTF6MCAxaXAwIDFmejAgMWZCMCAxMXowIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTdiMCAxaXAwIDExejAgMW8xMCAxOVgwIDFmQjAgMW5YMCBHMTAgMUVMMCBPcDAgMXpiMCBSZDAgMXduMCBSZDAgNDZuMCBBcDB8NDBcIixcblx0XHRcdFwiQW50YXJjdGljYS9Sb3RoZXJhfC0wMCAtMDN8MCAzMHwwMXxnT28wfDEzMFwiLFxuXHRcdFx0XCJBbnRhcmN0aWNhL1N5b3dhfC0wMCArMDN8MCAtMzB8MDF8LXZzMDB8MjBcIixcblx0XHRcdFwiQW50YXJjdGljYS9Ucm9sbHwtMDAgKzAwICswMnwwIDAgLTIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfDFwdW8wIGhkMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw0MFwiLFxuXHRcdFx0XCJBbnRhcmN0aWNhL1Zvc3Rva3wtMDAgKzA2fDAgLTYwfDAxfC10akEwfDI1XCIsXG5cdFx0XHRcIkV1cm9wZS9Pc2xvfENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYXdNMCBRbTAgVzZvMCA1cGYwIFdNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgd0pjMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMXFNMCBXTTAgenBjMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NjJlNFwiLFxuXHRcdFx0XCJBc2lhL1JpeWFkaHxMTVQgKzAzfC0zNi5RIC0zMHwwMXwtVHZENi5RfDU3ZTVcIixcblx0XHRcdFwiQXNpYS9BbG1hdHl8TE1UICswNSArMDYgKzA3fC01Ny5NIC01MCAtNjAgLTcwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVBjNTcuTSBlVW83Lk0gMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTB8MTVlNVwiLFxuXHRcdFx0XCJBc2lhL0FtbWFufExNVCBFRVQgRUVTVHwtMm4uSSAtMjAgLTMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTF5VzJuLkkgMUhpTW4uSSBLTDAgMW9OMCAxMWIwIDFvTjAgMTFiMCAxcGQwIDFkejAgMWNwMCAxMWIwIDFvcDAgMTFiMCBmTzEwIDFkYjAgMWUxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMXBkMCAxMG4wIDFsZDAgMTRuMCAxaEIwIDE1YjAgMWlwMCAxOVgwIDFjTjAgMWNMMCAxY04wIDE3YjAgMWxkMCAxNG8wIDFsYzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFTbzAgeTAwIDFmYzAgMWRjMCAxY28wIDFkYzAgMWNNMCAxY00wIDFjTTAgMW8wMCAxMUEwIDFsYzAgMTdjMCAxY00wIDFjTTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDRiWDAgRGQwIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMHwyNWU1XCIsXG5cdFx0XHRcIkFzaWEvQW5hZHlyfExNVCArMTIgKzEzICsxNCArMTF8LWJOLlUgLWMwIC1kMCAtZTAgLWIwfDAxMjMyMTIxMjEyMTIxMjEyMTIxMjE0MTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTQxfC0xUGNiTi5VIGVVbk4uVSAyM0NMMCAxZGIwIDJxMTAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAyc3AwIFdNMHwxM2UzXCIsXG5cdFx0XHRcIkFzaWEvQXF0YXV8TE1UICswNCArMDUgKzA2fC0zbC40IC00MCAtNTAgLTYwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMVBjM2wuNCBlVW5sLjQgMjRQWDAgMnBYMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTB8MTVlNFwiLFxuXHRcdFx0XCJBc2lhL0FxdG9iZXxMTVQgKzA0ICswNSArMDZ8LTNNLkUgLTQwIC01MCAtNjB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVBjM00uRSBlVW5NLkUgMjNDTDAgM0RiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMHwyN2U0XCIsXG5cdFx0XHRcIkFzaWEvQXNoZ2FiYXR8TE1UICswNCArMDUgKzA2fC0zUi53IC00MCAtNTAgLTYwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTJ8LTFQYzNSLncgZVVuUi53IDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTB8NDFlNFwiLFxuXHRcdFx0XCJBc2lhL0F0eXJhdXxMTVQgKzAzICswNSArMDYgKzA0fC0zci5JIC0zMCAtNTAgLTYwIC00MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzI0MjMyMzIzMjMyMzIzMjMyNDI0MjQyNDI0MnwtMVBjM3IuSSBlVW9yLkkgMjRQVzAgMnBYMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDJzcDAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwXCIsXG5cdFx0XHRcIkFzaWEvQmFnaGRhZHxCTVQgKzAzICswNHwtMlYuQSAtMzAgLTQwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMjZCZVYuQSAyQUNuVi5BIDExYjAgMWNwMCAxZHowIDFkZDAgMWRiMCAxY04wIDFjcDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxZGUwIDFkYzAgMWRjMCAxZGMwIDFjTTAgMWRjMCAxY00wIDFkYzAgMWNNMCAxZGMwIDFkYzAgMWRjMCAxY00wIDFkYzAgMWNNMCAxZGMwIDFjTTAgMWRjMCAxZGMwIDFkYzAgMWNNMCAxZGMwIDFjTTAgMWRjMCAxY00wIDFkYzAgMWRjMCAxZGMwIDFjTTAgMWRjMCAxY00wIDFkYzAgMWNNMCAxZGMwfDY2ZTVcIixcblx0XHRcdFwiQXNpYS9RYXRhcnxMTVQgKzA0ICswM3wtM3EuOCAtNDAgLTMwfDAxMnwtMjFKZnEuOCAyN0JYcS44fDk2ZTRcIixcblx0XHRcdFwiQXNpYS9CYWt1fExNVCArMDMgKzA0ICswNXwtM2oubyAtMzAgLTQwIC01MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVBjM2oubyAxalVvai5vIFdDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIDFjTTAgOUplMCAxbzAwIDExejAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDI3ZTVcIixcblx0XHRcdFwiQXNpYS9CYW5na29rfEJNVCArMDd8LTZHLjQgLTcwfDAxfC0yMThTRy40fDE1ZTZcIixcblx0XHRcdFwiQXNpYS9CYXJuYXVsfExNVCArMDYgKzA3ICswOHwtNXogLTYwIC03MCAtODB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMjFTNXogcENueiAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCBwOTAgTEUwIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCAzcmQwXCIsXG5cdFx0XHRcIkFzaWEvQmVpcnV0fEVFVCBFRVNUfC0yMCAtMzB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yMWFxMCAxb24wIDE0MTAgMWRiMCAxOUIwIDFpbjAgMWlwMCBXTDAgMWxRcDAgMTFiMCAxb04wIDExYjAgMW9OMCAxMWIwIDFwZDAgMTFiMCAxb04wIDExYjAgcTZOMCBFbjAgMW9OMCAxMWIwIDFvTjAgMTFiMCAxb04wIDExYjAgMXBkMCAxMWIwIDFvTjAgMTFiMCAxb3AwIDExYjAgZEExMCAxN2IwIDFpTjAgMTdiMCAxaU4wIDE3YjAgMWlOMCAxN2IwIDF2QjAgU0wwIDFtcDAgMTN6MCAxaU4wIDE3YjAgMWlOMCAxN2IwIDFqZDAgMTJuMCAxYTEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwfDIyZTVcIixcblx0XHRcdFwiQXNpYS9CaXNoa2VrfExNVCArMDUgKzA2ICswN3wtNFcubyAtNTAgLTYwIC03MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTFQYzRXLm8gZVVuVy5vIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMmUwMCAxdFgwIDE3YjAgMWlwMCAxN2IwIDFpcDAgMTdiMCAxaXAwIDE3YjAgMWlwMCAxOVgwIDFjUHUgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMHw4N2U0XCIsXG5cdFx0XHRcIkFzaWEvQnJ1bmVpfExNVCArMDczMCArMDh8LTdELkUgLTd1IC04MHwwMTJ8LTFLSVRELkUgZ0RjOS5FfDQyZTRcIixcblx0XHRcdFwiQXNpYS9Lb2xrYXRhfE1NVCBJU1QgKzA2MzB8LTVsLmEgLTV1IC02dXwwMTIxMjF8LTJ6T3RsLmEgMXIyTFAuYSAxdW4wIEhCMCA3elgwfDE1ZTZcIixcblx0XHRcdFwiQXNpYS9DaGl0YXxMTVQgKzA4ICswOSArMTB8LTd4LlEgLTgwIC05MCAtYTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzEyfC0yMVE3eC5RIHBBbnguUSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCAzcmUwfDMzZTRcIixcblx0XHRcdFwiQXNpYS9DaG9pYmFsc2FufExNVCArMDcgKzA4ICsxMCArMDl8LTdDIC03MCAtODAgLWEwIC05MHwwMTIzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDI0MjQyfC0yQVBIQyAyVWtvQyBjS24wIDFkYTAgMWRkMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgNmhEMCAxMXowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgM0RiMCBoMWYwIDFjSjAgMWNQMCAxY0owfDM4ZTNcIixcblx0XHRcdFwiQXNpYS9TaGFuZ2hhaXxDU1QgQ0RUfC04MCAtOTB8MDEwMTAxMDEwMTAxMDEwMTB8LTFjMUkwIExYMCAxNnAwIDFqejAgMU15cDAgUmIwIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejB8MjNlNlwiLFxuXHRcdFx0XCJBc2lhL0NvbG9tYm98TU1UICswNTMwICswNiArMDYzMHwtNWoudyAtNXUgLTYwIC02dXwwMTIzMTMyMXwtMnpPdGoudyAxckZiTi53IDF6enUgN0FwdSAyM2R6MCAxMXp1IG4zY3V8MjJlNVwiLFxuXHRcdFx0XCJBc2lhL0RoYWthfEhNVCArMDYzMCArMDUzMCArMDYgKzA3fC01Ui5rIC02dSAtNXUgLTYwIC03MHwwMTIxMzQzfC0xOExGUi5rIDF1bm4uayBIQjAgbTZuMCAya3hidSAxaTAwfDE2ZTZcIixcblx0XHRcdFwiQXNpYS9EYW1hc2N1c3xMTVQgRUVUIEVFU1R8LTJwLmMgLTIwIC0zMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMjFKZXAuYyBIZXAuYyAxN2IwIDFpcDAgMTdiMCAxaXAwIDE3YjAgMWlwMCAxOVgwIDF4UkIwIDExWDAgMW9OMCAxMEwwIDFwQjAgMTFiMCAxb04wIDEwTDAgMW1wMCAxM1gwIDFvTjAgMTFiMCAxcGQwIDExYjAgMW9OMCAxMWIwIDFvTjAgMTFiMCAxb04wIDExYjAgMXBkMCAxMWIwIDFvTjAgMTFiMCAxb04wIDExYjAgMW9OMCAxMWIwIDFwZDAgMTFiMCAxb04wIE5iMCAxQU4wIE5iMCBiY3AwIDE5WDAgMWdwMCAxOVgwIDNsZDAgMXhYMCBWZDAgMUJ6MCBTcDAgMXZYMCAxMHAwIDFkejAgMWNOMCAxY0wwIDFkYjAgMWRiMCAxZzEwIDFhbjAgMWFwMCAxZGIwIDFmZDAgMWRiMCAxY04wIDFkYjAgMWRkMCAxZGIwIDFjcDAgMWR6MCAxYzEwIDFkWDAgMWNOMCAxZGIwIDFkZDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMTl6MCAxZkIwIDFxTDAgMTFCMCAxb24wIFdwMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMHwyNmU1XCIsXG5cdFx0XHRcIkFzaWEvRGlsaXxMTVQgKzA4ICswOXwtOG0uayAtODAgLTkwfDAxMjEyfC0ybGU4bS5rIDFkblhtLmsgMW5mQTAgWGxkMHwxOWU0XCIsXG5cdFx0XHRcIkFzaWEvRHViYWl8TE1UICswNHwtM0YuYyAtNDB8MDF8LTIxSmZGLmN8MzllNVwiLFxuXHRcdFx0XCJBc2lhL0R1c2hhbmJlfExNVCArMDUgKzA2ICswN3wtNHouYyAtNTAgLTYwIC03MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjF8LTFQYzR6LmMgZVVuei5jIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMmhCMHw3NmU0XCIsXG5cdFx0XHRcIkFzaWEvRmFtYWd1c3RhfExNVCBFRVQgRUVTVCArMDN8LTJmLk0gLTIwIC0zMCAtMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMVZjMmYuTSAyYTNjZi5NIDFjTDAgMXFwMCBYejAgMTlCMCAxOVgwIDFmQjAgMWRiMCAxY3AwIDFjTDAgMWZCMCAxOVgwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxbzMwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDE1VTAgMktzMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMFwiLFxuXHRcdFx0XCJBc2lhL0dhemF8RUVUIEVFU1QgSVNUIElEVHwtMjAgLTMwIC0yMCAtMzB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0xYzJxMCA1UmIwIDEwcjAgMXB4MCAxME4wIDFwejAgMTZwMCAxakIwIDE2cDAgMWp4MCBwQmQwIFZ6MCAxb04wIDExYjAgMW9PMCAxME4wIDFwejAgMTBOMCAxcGIwIDEwTjAgMXBiMCAxME4wIDFwYjAgMTBOMCAxcHowIDEwTjAgMXBiMCAxME4wIDFwYjAgMTFkMCAxb0wwIGRXMCBoZkIwIERiMCAxZkIwIFJiMCBucEIwIDExejAgMUMxMCBJTDAgMXMxMCAxMG4wIDFvMTAgV0wwIDF6ZDAgT24wIDFsZDAgMTF6MCAxbzEwIDE0bjAgMW8xMCAxNG4wIDFuZDAgMTJuMCAxbmQwIFh6MCAxcTEwIDEybjAgTTEwIEMwMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMW8wMCAxY0wwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDE3YzAgMWlvMCAxOE4wIDFiejAgMTl6MCAxZ3AwIDE2MTAgMWlMMCAxMXowIDFvMTAgMTRvMCAxbEExIFNLWCAxeGQxIE1LWCAxQU4wIDFhMDAgMWZBMCAxY0wwIDFjTjAgMW5YMCAxMjEwIDFuejAgMTIyMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMXFMMHwxOGU1XCIsXG5cdFx0XHRcIkFzaWEvSGVicm9ufEVFVCBFRVNUIElTVCBJRFR8LTIwIC0zMCAtMjAgLTMwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0xYzJxMCA1UmIwIDEwcjAgMXB4MCAxME4wIDFwejAgMTZwMCAxakIwIDE2cDAgMWp4MCBwQmQwIFZ6MCAxb04wIDExYjAgMW9PMCAxME4wIDFwejAgMTBOMCAxcGIwIDEwTjAgMXBiMCAxME4wIDFwYjAgMTBOMCAxcHowIDEwTjAgMXBiMCAxME4wIDFwYjAgMTFkMCAxb0wwIGRXMCBoZkIwIERiMCAxZkIwIFJiMCBucEIwIDExejAgMUMxMCBJTDAgMXMxMCAxMG4wIDFvMTAgV0wwIDF6ZDAgT24wIDFsZDAgMTF6MCAxbzEwIDE0bjAgMW8xMCAxNG4wIDFuZDAgMTJuMCAxbmQwIFh6MCAxcTEwIDEybjAgTTEwIEMwMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMW8wMCAxY0wwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDE3YzAgMWlvMCAxOE4wIDFiejAgMTl6MCAxZ3AwIDE2MTAgMWlMMCAxMkwwIDFtTjAgMTRvMCAxbGMwIFRiMCAxeGQxIE1LWCBiQjAgY24wIDFjTjAgMWEwMCAxZkEwIDFjTDAgMWNOMCAxblgwIDEyMTAgMW56MCAxMjIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxcUwwfDI1ZTRcIixcblx0XHRcdFwiQXNpYS9Ib19DaGlfTWluaHxMTVQgUExNVCArMDcgKzA4ICswOXwtNzYuRSAtNzYudSAtNzAgLTgwIC05MHwwMTIzNDIzMjMyfC0yeUM3Ni5FIGJLMDAuYSAxaDdiNi51IDVsejAgMThvMCAzT3EwIGs1YjAgYVcwMCBCQU0wfDkwZTVcIixcblx0XHRcdFwiQXNpYS9Ib25nX0tvbmd8TE1UIEhLVCBIS1NUIEpTVHwtN0EuRyAtODAgLTkwIC05MHwwMTIxMzEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yQ0ZIQS5HIDFzRVA2LkcgMWNMMCB5bHUgOTNYMCAxcVF1IDF0WDAgUmQwIDFJbjAgTkIwIDFjTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxa0wwIDE0TjAgMW5YMCBVMTAgMXR6MCBVMTAgMXduMCBSZDAgMXduMCBVMTAgMXR6MCBVMTAgMXR6MCBVMTAgMXR6MCBVMTAgMXduMCBSZDAgMXduMCBSZDAgMXduMCBVMTAgMXR6MCBVMTAgMXR6MCAxN2QwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCBzMTAgMVZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDZmZDAgMTRuMHw3M2U1XCIsXG5cdFx0XHRcIkFzaWEvSG92ZHxMTVQgKzA2ICswNyArMDh8LTY2LkEgLTYwIC03MCAtODB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0yQVBHNi5BIDJVa282LkEgY0tuMCAxZGIwIDFkZDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDZoRDAgMTF6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIGtFcDAgMWNKMCAxY1AwIDFjSjB8ODFlM1wiLFxuXHRcdFx0XCJBc2lhL0lya3V0c2t8SU1UICswNyArMDggKzA5fC02Vi41IC03MCAtODAgLTkwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0yMXpHVi41IHBqWFYuNSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MHw2MGU0XCIsXG5cdFx0XHRcIkV1cm9wZS9Jc3RhbmJ1bHxJTVQgRUVUIEVFU1QgKzA0ICswM3wtMVUuVSAtMjAgLTMwIC00MCAtMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjM0MzQzNDM0MzQyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTI0fC0yb2dOVS5VIGR6elUuVSAxMWIwIDh0QjAgMW9uMCAxNDEwIDFkYjAgMTlCMCAxaW4wIDNSZDAgVW4wIDFvTjAgMTFiMCB6U3AwIENMMCBtTjAgMVZ6MCAxZ04wIDFwejAgNVJkMCAxZnowIDF5cDAgTUwwIDFrcDAgMTdiMCAxaXAwIDE3YjAgMWZCMCAxOVgwIDFqQjAgMThMMCAxaXAwIDE3ejAgcWRkMCB4WDAgM1MxMCBUejAgZEExMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMXplMCAxMUIwIFdNMCAxcU8wIFdJMCAxblgwIDFyQjAgMTBMMCAxMUIwIDFpbjAgMTdkMCAxaW4wIDJwWDAgMTlFMCAxZlUwIDE2UTAgMWlJMCAxNlEwIDFpSTAgMVZkMCBwYjAgM0twMCAxNG8wIDFkZTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV08wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgWGMwIDFxbzAgV00wIDFxTTAgMTFBMCAxbzAwIDEyMDAgMW5BMCAxMUEwIDF0QTAgVTAwIDE1dzB8MTNlNlwiLFxuXHRcdFx0XCJBc2lhL0pha2FydGF8Qk1UICswNzIwICswNzMwICswOSArMDggV0lCfC03Ny5jIC03ayAtN3UgLTkwIC04MCAtNzB8MDEyMzI0MjV8LTFRMFRrIGx1TTAgbVB6TyA4dld1IDZrcHUgNFBYdSB4aGN1fDMxZTZcIixcblx0XHRcdFwiQXNpYS9KYXlhcHVyYXxMTVQgKzA5ICswOTMwIFdJVHwtOW0uTSAtOTAgLTl1IC05MHwwMTIzfC0xdXU5bS5NIHNNTW0uTSBMNG51fDI2ZTRcIixcblx0XHRcdFwiQXNpYS9KZXJ1c2FsZW18Sk1UIElTVCBJRFQgSUREVHwtMmsuRSAtMjAgLTMwIC00MHwwMTIxMjEyMTIxMjEzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMjZCZWsuRSBTeU1rLkUgNVJiMCAxMHIwIDFweDAgMTBOMCAxcHowIDE2cDAgMWpCMCAxNnAwIDFqeDAgM0xCMCBFbTAgb3IwIDFjbjAgMWRCMCAxNm4wIDEwTzAgMWphMCAxdEMwIDE0bzAgMWNNMCAxYTAwIDExQTAgMU5hMCBBbjAgMU1QMCBBSjAgMUtwMCBMQzAgMW9vMCBXbDAgRVFOMCBEYjAgMWZCMCBSYjAgbnBCMCAxMXowIDFDMTAgSUwwIDFzMTAgMTBuMCAxbzEwIFdMMCAxemQwIE9uMCAxbGQwIDExejAgMW8xMCAxNG4wIDFvMTAgMTRuMCAxbmQwIDEybjAgMW5kMCBYejAgMXExMCAxMm4wIDFoQjAgMWRYMCAxZXAwIDFhTDAgMWVOMCAxN1gwIDFuZjAgMTF6MCAxdEIwIDE5VzAgMWUxMCAxN2IwIDFlcDAgMWdMMCAxOE4wIDFmejAgMWVOMCAxN2IwIDFncTAgMWduMCAxOWQwIDFkejAgMWMxMCAxN1gwIDFoQjAgMWduMCAxOWQwIDFkejAgMWMxMCAxN1gwIDFrcDAgMWR6MCAxYzEwIDFhTDAgMWVOMCAxb0wwIDEwTjAgMW9MMCAxME4wIDFvTDAgMTBOMCAxcnowIFcxMCAxcnowIFcxMCAxcnowIDEwTjAgMW9MMCAxME4wIDFvTDAgMTBOMCAxcnowIFcxMCAxcnowIFcxMCAxcnowIDEwTjAgMW9MMCAxME4wIDFvTDAgMTBOMCAxb0wwIDEwTjAgMXJ6MCBXMTAgMXJ6MCBXMTAgMXJ6MCAxME4wIDFvTDAgMTBOMCAxb0wwIDEwTjAgMXJ6MCBXMTAgMXJ6MCBXMTAgMXJ6MCBXMTAgMXJ6MCAxME4wIDFvTDAgMTBOMCAxb0wwfDgxZTRcIixcblx0XHRcdFwiQXNpYS9LYWJ1bHwrMDQgKzA0MzB8LTQwIC00dXwwMXwtMTBRczB8NDZlNVwiLFxuXHRcdFx0XCJBc2lhL0thbWNoYXRrYXxMTVQgKzExICsxMiArMTN8LWF5LkEgLWIwIC1jMCAtZDB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyfC0xU0xLeS5BIGl2WHkuQSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDJzcDAgV00wfDE4ZTRcIixcblx0XHRcdFwiQXNpYS9LYXJhY2hpfExNVCArMDUzMCArMDYzMCArMDUgUEtUIFBLU1R8LTRzLmMgLTV1IC02dSAtNTAgLTUwIC02MHwwMTIxMzQ1NDU0NTR8LTJ4b3NzLmMgMXFPS1cuYyA3elgwIGV1cDAgTHFNdSAxZnkwMCAxY0wwIGRLMTAgMTFiMCAxNjEwIDFqWDB8MjRlNlwiLFxuXHRcdFx0XCJBc2lhL1VydW1xaXxMTVQgKzA2fC01Ty5rIC02MHwwMXwtMUdndE8ua3wzMmU1XCIsXG5cdFx0XHRcIkFzaWEvS2F0aG1hbmR1fExNVCArMDUzMCArMDU0NXwtNUYuZyAtNXUgLTVKfDAxMnwtMjFKaEYuZyAyRUdNYi5nfDEyZTVcIixcblx0XHRcdFwiQXNpYS9LaGFuZHlnYXxMTVQgKzA4ICswOSArMTAgKzExfC05Mi5kIC04MCAtOTAgLWEwIC1iMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzQzNDM0MzQzNDM0MzQzNDMyfC0yMVE5Mi5kIHBBcDIuZCAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIHFLMCB5TjAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMTdWMCA3ekQwfDY2ZTJcIixcblx0XHRcdFwiQXNpYS9LcmFzbm95YXJza3xMTVQgKzA2ICswNyArMDh8LTZiLnEgLTYwIC03MCAtODB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTIxSGliLnEgcHJBYi5xIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowfDEwZTVcIixcblx0XHRcdFwiQXNpYS9LdWFsYV9MdW1wdXJ8U01UICswNyArMDcyMCArMDczMCArMDkgKzA4fC02VC5wIC03MCAtN2sgLTd1IC05MCAtODB8MDEyMzQzNXwtMkJnNlQucCAxN2FuVC5wIGw1WEUgMTdiTyA4Rnl1IDFzbzF1fDcxZTVcIixcblx0XHRcdFwiQXNpYS9LdWNoaW5nfExNVCArMDczMCArMDggKzA4MjAgKzA5fC03bC5rIC03dSAtODAgLThrIC05MHwwMTIzMjMyMzIzMjMyMzIzMjQyfC0xS0lUbC5rIGdEYlAuayA2eW51IEFuRSAxTzBrIEFuRSAxTkFrIEFuRSAxTkFrIEFuRSAxTkFrIEFuRSAxTzBrIEFuRSAxTkFrIEFuRSBwQWsgOEZ6MHwxM2U0XCIsXG5cdFx0XHRcIkFzaWEvTWFjYXV8TE1UIENTVCBDRFR8LTd5LmsgLTgwIC05MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJsZTgwIDFYTzN1IDF3bjAgUmQwIDF3bjAgUjl1IDF3cXUgVTEwIDF0ejAgVFZ1IDF0ejAgMTdndSAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNKdSAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjT3UgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNKdSAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDB8NTdlNFwiLFxuXHRcdFx0XCJBc2lhL01hZ2FkYW58TE1UICsxMCArMTEgKzEyfC1hMy5jIC1hMCAtYjAgLWMwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMxMnwtMVBjYTMuYyBlVW8zLmMgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejAgM0NxMHw5NWUzXCIsXG5cdFx0XHRcIkFzaWEvTWFrYXNzYXJ8TE1UIE1NVCArMDggKzA5IFdJVEF8LTdWLkEgLTdWLkEgLTgwIC05MCAtODB8MDEyMzR8LTIxSmpWLkEgdmZjMCBteUxWLkEgOE1MMHwxNWU1XCIsXG5cdFx0XHRcIkFzaWEvTWFuaWxhfCswOCArMDl8LTgwIC05MHwwMTAxMDEwMTB8LTFrSkkwIEFMMCBjSzEwIDY1WDAgbVhCMCB2WDAgVksxMCAxZGIwfDI0ZTZcIixcblx0XHRcdFwiQXNpYS9OaWNvc2lhfExNVCBFRVQgRUVTVHwtMmQucyAtMjAgLTMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0xVmMyZC5zIDJhM2NkLnMgMWNMMCAxcXAwIFh6MCAxOUIwIDE5WDAgMWZCMCAxZGIwIDFjcDAgMWNMMCAxZkIwIDE5WDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFvMzAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwzMmU0XCIsXG5cdFx0XHRcIkFzaWEvTm92b2t1em5ldHNrfExNVCArMDYgKzA3ICswOHwtNU0uTSAtNjAgLTcwIC04MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTJ8LTFQY3RNLk0gZVVMTS5NIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMnNwMCBXTTB8NTVlNFwiLFxuXHRcdFx0XCJBc2lhL05vdm9zaWJpcnNrfExNVCArMDYgKzA3ICswOHwtNXYuRSAtNjAgLTcwIC04MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0yMVFudi5FIHBBRnYuRSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgbWwwIE9zMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCA0ZU4wfDE1ZTVcIixcblx0XHRcdFwiQXNpYS9PbXNrfExNVCArMDUgKzA2ICswN3wtNFIudSAtNTAgLTYwIC03MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMjI0c1IudSBwTUxSLnUgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejB8MTJlNVwiLFxuXHRcdFx0XCJBc2lhL09yYWx8TE1UICswMyArMDUgKzA2ICswNHwtM3AubyAtMzAgLTUwIC02MCAtNDB8MDEyMzIzMjMyMzIzMjMyMzI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDJ8LTFQYzNwLm8gZVVvcC5vIDIzQ0swIDNEYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMnBCMCAxY00wIDFmQTAgMWNNMCAxY00wIElNMCAxRU0wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTB8MjdlNFwiLFxuXHRcdFx0XCJBc2lhL1BvbnRpYW5ha3xMTVQgUE1UICswNzMwICswOSArMDggV0lUQSBXSUJ8LTdoLmsgLTdoLmsgLTd1IC05MCAtODAgLTgwIC03MHwwMTIzMjQyNTZ8LTJ1YTdoLmsgWEUwMCBtdW5MLmsgOFJhdSA2a3B1IDRQWHUgeGhjdSBXcW51fDIzZTRcIixcblx0XHRcdFwiQXNpYS9QeW9uZ3lhbmd8TE1UIEtTVCBKU1QgS1NUfC04biAtOHUgLTkwIC05MHwwMTIzMTN8LTJ1bThuIDk3WFIgMWxUenUgMk9uYzAgNkJBdXwyOWU1XCIsXG5cdFx0XHRcIkFzaWEvUXl6eWxvcmRhfExNVCArMDQgKzA1ICswNnwtNGwuUSAtNDAgLTUwIC02MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzfC0xUGM0bC5RIGVVb2wuUSAyM0NMMCAzRGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgM2FvMCAxRU0wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTB8NzNlNFwiLFxuXHRcdFx0XCJBc2lhL1Jhbmdvb258Uk1UICswNjMwICswOXwtNm8uTCAtNnUgLTkwfDAxMjF8LTIxSmlvLkwgU21uUy5MIDdqOXV8NDhlNVwiLFxuXHRcdFx0XCJBc2lhL1Nha2hhbGlufExNVCArMDkgKzExICsxMiArMTB8LTl1Lk0gLTkwIC1iMCAtYzAgLWEwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyNDIzMjMyMzIzMjMyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyfC0yQUdWdS5NIDFCb011Lk0gMXFGYTAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMnBCMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIDNyZDB8NThlNFwiLFxuXHRcdFx0XCJBc2lhL1NhbWFya2FuZHxMTVQgKzA0ICswNSArMDZ8LTRyLlIgLTQwIC01MCAtNjB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFQYzRyLlIgZVVvci5SIDIzQ0wwIDNEYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTB8MzZlNFwiLFxuXHRcdFx0XCJBc2lhL1Nlb3VsfExNVCBLU1QgSlNUIEtTVCBLRFQgS0RUfC04ci5RIC04dSAtOTAgLTkwIC05dSAtYTB8MDEyMzE0MTQxNDE0MTQxNDEzNTM1M3wtMnVtOHIuUSA5N1hWLlEgMW0xenUga0tvMCAySTB1IE9MMCAxRkIwIFJiMCAxcU4wIFRYMCAxdEIwIFRYMCAxdEIwIFRYMCAxdEIwIFRYMCAyYXAwIDEyRkJ1IDExQTAgMW8wMCAxMUEwfDIzZTZcIixcblx0XHRcdFwiQXNpYS9TcmVkbmVrb2x5bXNrfExNVCArMTAgKzExICsxMnwtYWUuUSAtYTAgLWIwIC1jMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVBjYWUuUSBlVW9lLlEgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejB8MzVlMlwiLFxuXHRcdFx0XCJBc2lhL1RhaXBlaXxDU1QgSlNUIENEVHwtODAgLTkwIC05MHwwMTAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMHwtMWl3ODAgam9NMCAxeW8wIFR6MCAxaXAwIDFqWDAgMWNOMCAxMWIwIDFvTjAgMTFiMCAxb04wIDExYjAgMW9OMCAxMWIwIDEwTjAgMUJYMCAxMHAwIDFwejAgMTBwMCAxcHowIDEwcDAgMWRiMCAxZGQwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMUJCMCBNTDAgMUJkMCBNTDAgdXExMCAxZGIwIDFjTjAgMWRiMCA5N0IwIEFMMHw3NGU1XCIsXG5cdFx0XHRcIkFzaWEvVGFzaGtlbnR8TE1UICswNSArMDYgKzA3fC00Qi5iIC01MCAtNjAgLTcwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMXwtMVBjNEIuYiBlVW5CLmIgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwfDIzZTVcIixcblx0XHRcdFwiQXNpYS9UYmlsaXNpfFRCTVQgKzAzICswNCArMDV8LTJYLmIgLTMwIC00MCAtNTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjEyMTIzMjMyMzIzMjMyMzIzMjMyMzIxMnwtMVBjMlguYiAxalVuWC5iIFdDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIDFjSzAgMWNMMCAxY04wIDFjTDAgMWNOMCAycHowIDFjTDAgMWZCMCAzTnowIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIEFuMCBPczAgV00wfDExZTVcIixcblx0XHRcdFwiQXNpYS9UZWhyYW58TE1UIFRNVCArMDMzMCArMDQgKzA1ICswNDMwfC0zcC5JIC0zcC5JIC0zdSAtNDAgLTUwIC00dXwwMTIzNDMyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MnwtMmJ0RHAuSSAxZDNjMCAxaHVMVC5JIFRYdSAxcHowIHNOMCB2QXUgMWNMMCAxZEIwIDFlbjAgcE5CMCBVTDAgMWNOMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY04wIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNOMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjTjAgMWR6MCA2NHAwIDFkejAgMWNOMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY04wIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNOMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNOMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MHwxNGU2XCIsXG5cdFx0XHRcIkFzaWEvVGhpbXBodXxMTVQgKzA1MzAgKzA2fC01Vy5BIC01dSAtNjB8MDEyfC1TdTVXLkEgMUJHTXMuQXw3OWUzXCIsXG5cdFx0XHRcIkFzaWEvVG9reW98SlNUIEpEVHwtOTAgLWEwfDAxMDEwMTAxMHwtUUpKMCBSYjAgMWxkMCAxNG4wIDF6ZDAgT24wIDF6ZDAgT24wfDM4ZTZcIixcblx0XHRcdFwiQXNpYS9Ub21za3xMTVQgKzA2ICswNyArMDh8LTVELlAgLTYwIC03MCAtODB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMjFOaEQuUCBweHpELlAgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCBjbzAgMWJCMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIDNRcDB8MTBlNVwiLFxuXHRcdFx0XCJBc2lhL1VsYWFuYmFhdGFyfExNVCArMDcgKzA4ICswOXwtNzcudyAtNzAgLTgwIC05MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTJBUEg3LncgMlVrbzcudyBjS24wIDFkYjAgMWRkMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgNmhEMCAxMXowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAga0VwMCAxY0owIDFjUDAgMWNKMHwxMmU1XCIsXG5cdFx0XHRcIkFzaWEvVXN0LU5lcmF8TE1UICswOCArMDkgKzEyICsxMSArMTB8LTl3LlMgLTgwIC05MCAtYzAgLWIwIC1hMHwwMTIzNDM0MzQzNDM0MzQzNDM0MzQzNDU0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDV8LTIxUTl3LlMgcEFwdy5TIDIzQ0wwIDFkOTAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxN1YwIDd6RDB8NjVlMlwiLFxuXHRcdFx0XCJBc2lhL1ZsYWRpdm9zdG9rfExNVCArMDkgKzEwICsxMXwtOEwudiAtOTAgLWEwIC1iMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVNKSUwudiBpdFhMLnYgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejB8NjBlNFwiLFxuXHRcdFx0XCJBc2lhL1lha3V0c2t8TE1UICswOCArMDkgKzEwfC04Qy5XIC04MCAtOTAgLWEwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0yMVE4Qy5XIHBBb0MuVyAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MHwyOGU0XCIsXG5cdFx0XHRcIkFzaWEvWWVrYXRlcmluYnVyZ3xMTVQgUE1UICswNCArMDUgKzA2fC00Mi54IC0zSi41IC00MCAtNTAgLTYwfDAxMjM0MzQzNDM0MzQzNDM0MzQzNDM0MzIzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0M3wtMmFnNDIueCA3bVFoLnMgcUJ2Si41IDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowfDE0ZTVcIixcblx0XHRcdFwiQXNpYS9ZZXJldmFufExNVCArMDMgKzA0ICswNXwtMlcgLTMwIC00MCAtNTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjEyMTIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVBjMlcgMWpVblcgV0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCA0UlgwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMHwxM2U1XCIsXG5cdFx0XHRcIkF0bGFudGljL0F6b3Jlc3xITVQgLTAyIC0wMSArMDAgV0VUfDFTLncgMjAgMTAgMCAwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMTIzMjEyMzIxMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjM0MzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0ybGRXMCBhUFgwIFNwMCBMWDAgMXZjMCBUYzAgMXVNMCBTTTAgMXZjMCBUYzAgMXZjMCBTTTAgMXZjMCA2NjAwIDFjbzAgM0UwMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDFhMDAgMWlvMCAxN2MwIDNJMDAgMTdjMCAxY00wIDFjTTAgM0ZjMCAxY00wIDFhMDAgMWZBMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDFxTTAgRGMwIDF0QTAgMWNNMCAxZGMwIDE0MDAgZ0wwIElNMCBzMTAgVTAwIGRYMCBSYzAgcGQwIFJjMCBnTDAgT28wIHBkMCBSYzAgZ0wwIE9vMCBwZDAgMTRvMCAxY00wIDFjUDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDNDbzAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgcUlsMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTjAgMWNMMCAxY04wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxY0wwIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MjVlNFwiLFxuXHRcdFx0XCJBdGxhbnRpYy9CZXJtdWRhfExNVCBBU1QgQURUfDRqLmkgNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMUJuUkUuRyAxTFRiRS5HIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw2NWUzXCIsXG5cdFx0XHRcIkF0bGFudGljL0NhbmFyeXxMTVQgLTAxIFdFVCBXRVNUfDExLkEgMTAgMCAtMTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFVdGFXLm8gWFBBVy5vIDFsQUswIDFhMTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw1NGU0XCIsXG5cdFx0XHRcIkF0bGFudGljL0NhcGVfVmVyZGV8TE1UIC0wMiAtMDF8MXkuNCAyMCAxMHwwMTIxMnwtMmxkVzAgMWVFbzAgN3pYMCAxZGpmMHw1MGU0XCIsXG5cdFx0XHRcIkF0bGFudGljL0Zhcm9lfExNVCBXRVQgV0VTVHxyLjQgMCAtMTB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJ1U253LlUgMldnb3cuVSAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw0OWUzXCIsXG5cdFx0XHRcIkF0bGFudGljL01hZGVpcmF8Rk1UIC0wMSArMDAgKzAxIFdFVCBXRVNUfDE3LkEgMTAgMCAtMTAgMCAtMTB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIxMjMyMTIzMjEyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjE0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTJsZFgwIGFQWDAgU3AwIExYMCAxdmMwIFRjMCAxdU0wIFNNMCAxdmMwIFRjMCAxdmMwIFNNMCAxdmMwIDY2MDAgMWNvMCAzRTAwIDE3YzAgMWZBMCAxYTAwIDFpbzAgMWEwMCAxaW8wIDE3YzAgM0kwMCAxN2MwIDFjTTAgMWNNMCAzRmMwIDFjTTAgMWEwMCAxZkEwIDFpbzAgMTdjMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMXFNMCBEYzAgMXRBMCAxY00wIDFkYzAgMTQwMCBnTDAgSU0wIHMxMCBVMDAgZFgwIFJjMCBwZDAgUmMwIGdMMCBPbzAgcGQwIFJjMCBnTDAgT28wIHBkMCAxNG8wIDFjTTAgMWNQMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgM0NvMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCBxSWwwIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNOMCAxY0wwIDFjTjAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTDAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwyN2U0XCIsXG5cdFx0XHRcIkF0bGFudGljL1JleWtqYXZpa3xMTVQgLTAxICswMCBHTVR8MXMgMTAgMCAwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxM3wtMnVXbXcgbWZhdyAxQmQwIE1MMCAxTEIwIENuMCAxTEIwIDNmWDAgQzEwIEhyWDAgMWNPMCBMQjAgMUVMMCBMQTAgMUMwMCBPbzAgMXdvMCBSYzAgMXdvMCBSYzAgMXdvMCBSYzAgMXpjMCBPbzAgMXpjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMW8wMCAxMUEwIDFsYzAgMTRvMCAxbzAwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFvMDAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFvMDAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMW8wMCAxNG8wfDEyZTRcIixcblx0XHRcdFwiQXRsYW50aWMvU291dGhfR2VvcmdpYXwtMDJ8MjB8MHx8MzBcIixcblx0XHRcdFwiQXRsYW50aWMvU3RhbmxleXxTTVQgLTA0IC0wMyAtMDJ8M1AubyA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIzMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTJrSnc4LkEgMTJiQTguQSAxOVgwIDFmQjAgMTlYMCAxaXAwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIENuMCAxQ2MxMCBXTDAgMXFMMCBVMTAgMXR6MCAybU4wIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxdHowIFUxMCAxdHowIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxdHowIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcU4wIFUxMCAxd24wIFJkMCAxd24wIFUxMCAxdHowIFUxMCAxdHowIFUxMCAxdHowIFUxMCAxdHowIFUxMCAxd24wIFUxMCAxdHowIFUxMCAxdHowIFUxMHwyMWUyXCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9TeWRuZXl8QUVTVCBBRURUfC1hMCAtYjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMXwtMjkzbFggeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDE3YzEwIExBMCAxQzAwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIDE0bzAgMW8wMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBVMDAgMXFNMCBXTTAgMXRBMCBXTTAgMXRBMCBVMDAgMXRBMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDExQTAgMW8wMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCBXTTAgMXFNMCAxNG8wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMHw0MGU1XCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9BZGVsYWlkZXxBQ1NUIEFDRFR8LTl1IC1hdXwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxfC0yOTNsdCB4Y1ggMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDAgMTdjMTAgTEEwIDFDMDAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgVTAwIDFxTTAgV00wIDF0QTAgV00wIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgT28wIDF6YzAgV00wIDFxTTAgUmMwIDF6YzAgVTAwIDF0QTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCBXTTAgMXFNMCAxNG8wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMHwxMWU1XCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9CcmlzYmFuZXxBRVNUIEFFRFR8LWEwIC1iMHwwMTAxMDEwMTAxMDEwMTAxMHwtMjkzbFggeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDE3YzEwIExBMCBIMUEwIE9vMCAxemMwIE9vMCAxemMwIE9vMHwyMGU1XCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9Ccm9rZW5fSGlsbHxBQ1NUIEFDRFR8LTl1IC1hdXwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxfC0yOTNsdCB4Y1ggMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDAgMTdjMTAgTEEwIDFDMDAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgMTRvMCAxbzAwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFUwMCAxcU0wIFdNMCAxdEEwIFdNMCAxdEEwIFUwMCAxdEEwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgV00wIDFxTTAgMTRvMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTB8MThlM1wiLFxuXHRcdFx0XCJBdXN0cmFsaWEvQ3VycmllfEFFU1QgQUVEVHwtYTAgLWIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDF8LTI5RTgwIDE5WDAgMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDAgMTdjMTAgTEEwIDFDMDAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgMTFBMCAxcU0wIFdNMCAxcU0wIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxd28wIFdNMCAxdEEwIFdNMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIDExQTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMTFBMCAxbzAwIDFpbzAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxYTAwIDFpbzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTB8NzQ2XCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9EYXJ3aW58QUNTVCBBQ0RUfC05dSAtYXV8MDEwMTAxMDEwfC0yOTNsdCB4Y1ggMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDB8MTJlNFwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvRXVjbGF8KzA4NDUgKzA5NDV8LThKIC05SnwwMTAxMDEwMTAxMDEwMTAxMDEwfC0yOTNrSSB4Y1ggMTBqZDAgeUwwIDFjTjAgMWNMMCAxZ1NwMCBPbzAgbDVBMCBPbzAgaUpBMCBHMDAgelUwMCBJTTAgMXFNMCAxMUEwIDFvMDAgMTFBMHwzNjhcIixcblx0XHRcdFwiQXVzdHJhbGlhL0hvYmFydHxBRVNUIEFFRFR8LWEwIC1iMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDF8LTI5RTgwIDE5WDAgMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDAgVmZCMCAxY00wIDFvMDAgUmMwIDF3bzAgUmMwIDF3bzAgVTAwIDF3bzAgTEEwIDFDMDAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgMTFBMCAxcU0wIFdNMCAxcU0wIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxd28wIFdNMCAxdEEwIFdNMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIDExQTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMTFBMCAxbzAwIDFpbzAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxYTAwIDFpbzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTB8MjFlNFwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvTG9yZF9Ib3dlfEFFU1QgKzEwMzAgKzExMzAgKzExfC1hMCAtYXUgLWJ1IC1iMHwwMTIxMjEyMTIxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzfHJhQzAgMXpkdSBSYjAgMXpkMCBPbjAgMXpkMCBPbjAgMXpkMCBPbjAgMXpkMCBUWHUgMXFNdSBXTHUgMXRBdSBXTHUgMXRBdSBUWHUgMXRBdSBPbnUgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSBSYnUgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSAxMXp1IDFvMHUgMTF6dSAxbzB1IDExenUgMW8wdSAxMXp1IDFxTXUgV0x1IDExQXUgMW5YdSAxcU11IDExenUgMW8wdSAxMXp1IDFvMHUgMTF6dSAxcU11IFdMdSAxcU11IDExenUgMW8wdSBXTHUgMXFNdSAxNG51IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxZkF1IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxZkF1IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWZ6dSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFmQXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFmQXUgMWNMdSAxY011IDFjTHUgMWNNdXwzNDdcIixcblx0XHRcdFwiQXVzdHJhbGlhL0xpbmRlbWFufEFFU1QgQUVEVHwtYTAgLWIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjkzbFggeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDE3YzEwIExBMCBIMUEwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMHwxMFwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvTWVsYm91cm5lfEFFU1QgQUVEVHwtYTAgLWIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDF8LTI5M2xYIHhjWCAxMGpkMCB5TDAgMWNOMCAxY0wwIDFmQjAgMTlYMCAxN2MxMCBMQTAgMUMwMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBVMDAgMXFNMCBXTTAgMXFNMCAxMUEwIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxMUEwIDFvMDAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgV00wIDFxTTAgMTRvMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTB8MzllNVwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvUGVydGh8QVdTVCBBV0RUfC04MCAtOTB8MDEwMTAxMDEwMTAxMDEwMTAxMHwtMjkzalggeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWdTcDAgT28wIGw1QTAgT28wIGlKQTAgRzAwIHpVMDAgSU0wIDFxTTAgMTFBMCAxbzAwIDExQTB8MThlNVwiLFxuXHRcdFx0XCJDRVR8Q0VUIENFU1R8LTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmFGZTAgMTFkMCAxaU8wIDExQTAgMW8wMCAxMUEwIFFyYzAgNmkwMCBXTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxNk0wIDFnTU0wIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMFwiLFxuXHRcdFx0XCJQYWNpZmljL0Vhc3RlcnxFTVQgLTA3IC0wNiAtMDV8N2gucyA3MCA2MCA1MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjN8LTF1U2dHLncgMXM0SUcudyBXTDAgMXpkMCBPbjAgMWlwMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxbGQwIDE0bjAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMnBBMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIDFjTDAgMWNOMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxZkIwIDE5WDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTdiMCAxaXAwIDExejAgMWlwMCAxZnowIDFmQjAgMTF6MCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDE3YjAgMWlwMCAxMXowIDFvMTAgMTlYMCAxZkIwIDFuWDAgRzEwIDFFTDAgT3AwIDF6YjAgUmQwIDF3bjAgUmQwIDQ2bjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgRGQwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgRGQwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgRGQwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwfDMwZTJcIixcblx0XHRcdFwiQ1NUNkNEVHxDU1QgQ0RUIENXVCBDUFR8NjAgNTAgNTAgNTB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjFzMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MzAgaXcwIFF3TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiRUVUfEVFVCBFRVNUfC0yMCAtMzB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfGhEQjAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwXCIsXG5cdFx0XHRcIkV1cm9wZS9EdWJsaW58RE1UIElTVCBHTVQgQlNUIElTVHxwLmwgLXkuRCAwIC0xMCAtMTB8MDEyMzIzMjMyMzIzMjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDJ8LTJheDl5LkQgUmMwIDFmenkuRCAxNE0wIDFmYzAgMWcwMCAxY28wIDFkYzAgMWNvMCAxb28wIDE0MDAgMWRjMCAxOUEwIDFpbzAgMWlvMCBXTTAgMW8wMCAxNG8wIDFvMDAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFsYzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxY00wIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxcU0wIERjMCBnNjAwIDE0bzAgMXdvMCAxN2MwIDFpbzAgMTFBMCAxbzAwIDE3YzAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFsYzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWEwMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXRBMCBJTTAgOTBvMCBVMDAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCAxMXowIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDE0bzAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTJlNVwiLFxuXHRcdFx0XCJFU1R8RVNUfDUwfDB8XCIsXG5cdFx0XHRcIkVTVDVFRFR8RVNUIEVEVCBFV1QgRVBUfDUwIDQwIDQwIDQwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxdDAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDQwIGl2MCBRd04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkV0Yy9HTVQtMHxHTVR8MHwwfFwiLFxuXHRcdFx0XCJFdGMvR01ULTF8KzAxfC0xMHwwfFwiLFxuXHRcdFx0XCJQYWNpZmljL1BvcnRfTW9yZXNieXwrMTB8LWEwfDB8fDI1ZTRcIixcblx0XHRcdFwiUGFjaWZpYy9Qb2hucGVpfCsxMXwtYjB8MHx8MzRlM1wiLFxuXHRcdFx0XCJQYWNpZmljL1RhcmF3YXwrMTJ8LWMwfDB8fDI5ZTNcIixcblx0XHRcdFwiRXRjL0dNVC0xM3wrMTN8LWQwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQtMTR8KzE0fC1lMHwwfFwiLFxuXHRcdFx0XCJFdGMvR01ULTJ8KzAyfC0yMHwwfFwiLFxuXHRcdFx0XCJFdGMvR01ULTN8KzAzfC0zMHwwfFwiLFxuXHRcdFx0XCJFdGMvR01ULTR8KzA0fC00MHwwfFwiLFxuXHRcdFx0XCJFdGMvR01ULTV8KzA1fC01MHwwfFwiLFxuXHRcdFx0XCJFdGMvR01ULTZ8KzA2fC02MHwwfFwiLFxuXHRcdFx0XCJJbmRpYW4vQ2hyaXN0bWFzfCswN3wtNzB8MHx8MjFlMlwiLFxuXHRcdFx0XCJFdGMvR01ULTh8KzA4fC04MHwwfFwiLFxuXHRcdFx0XCJQYWNpZmljL1BhbGF1fCswOXwtOTB8MHx8MjFlM1wiLFxuXHRcdFx0XCJFdGMvR01UKzF8LTAxfDEwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQrMTB8LTEwfGEwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQrMTF8LTExfGIwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQrMTJ8LTEyfGMwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQrM3wtMDN8MzB8MHxcIixcblx0XHRcdFwiRXRjL0dNVCs0fC0wNHw0MHwwfFwiLFxuXHRcdFx0XCJFdGMvR01UKzV8LTA1fDUwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQrNnwtMDZ8NjB8MHxcIixcblx0XHRcdFwiRXRjL0dNVCs3fC0wN3w3MHwwfFwiLFxuXHRcdFx0XCJFdGMvR01UKzh8LTA4fDgwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQrOXwtMDl8OTB8MHxcIixcblx0XHRcdFwiRXRjL1VDVHxVQ1R8MHwwfFwiLFxuXHRcdFx0XCJFdGMvVVRDfFVUQ3wwfDB8XCIsXG5cdFx0XHRcIkV1cm9wZS9BbXN0ZXJkYW18QU1UIE5TVCArMDEyMCArMDAyMCBDRVNUIENFVHwtai53IC0xai53IC0xayAtayAtMjAgLTEwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMjMyMzIzNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NXwtMmFGY2oudyAxMWIwIDFpUDAgMTFBMCAxaW8wIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWNvMCAxaW8wIDF5bzAgUGMwIDFhMDAgMWZBMCAxQmMwIE1vMCAxdGMwIFVvMCAxdEEwIFUwMCAxdW8wIFcwMCAxczAwIFZBMCAxc28wIFZjMCAxc00wIFVNMCAxd28wIFJjMCAxdTAwIFdvMCAxckEwIFcwMCAxczAwIFZBMCAxc00wIFVNMCAxdzAwIGZWMCBCQ1gudyAxdEEwIFUwMCAxdTAwIFdvMCAxc20wIDYwMWsgV00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMTZNMCAxZ01NMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTZlNVwiLFxuXHRcdFx0XCJFdXJvcGUvQW5kb3JyYXxXRVQgQ0VUIENFU1R8MCAtMTAgLTIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtVUJBMCAxeElOMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDc5ZTNcIixcblx0XHRcdFwiRXVyb3BlL0FzdHJha2hhbnxMTVQgKzAzICswNCArMDV8LTNjLmMgLTMwIC00MCAtNTB8MDEyMzIzMjMyMzIzMjMyMzIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0xUGNyYy5jIGVVTWMuYyAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAycEIwIDFjTTAgMWZBMCAxY00wIDNDbzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIDNyZDBcIixcblx0XHRcdFwiRXVyb3BlL0F0aGVuc3xBTVQgRUVUIEVFU1QgQ0VTVCBDRVR8LTF5LlEgLTIwIC0zMCAtMjAgLTEwfDAxMjEyMzQzNDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmE2MXguUSBDTmJ4LlEgbW4wIGtVMTAgOWIwIDNFczAgWGEwIDFmYjAgMWRkMCBrM1gwIE56MCBTQ3AwIDF2YzAgU08wIDFjTTAgMWEwMCAxYW8wIDFmYzAgMWExMCAxZkcwIDFjZzAgMWRYMCAxYlgwIDFjUTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MzVlNVwiLFxuXHRcdFx0XCJFdXJvcGUvTG9uZG9ufEdNVCBCU1QgQkRTVHwwIC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEyMTIxMjEyMTIxMDEwMTIxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmF4YTAgUmMwIDFmQTAgMTRNMCAxZmMwIDFnMDAgMWNvMCAxZGMwIDFjbzAgMW9vMCAxNDAwIDFkYzAgMTlBMCAxaW8wIDFpbzAgV00wIDFvMDAgMTRvMCAxbzAwIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxbGMwIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWNNMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMXFNMCBEYzAgMlJ6MCBEYzAgMXpjMCBPbzAgMXpjMCBSYzAgMXdvMCAxN2MwIDFpTTAgRkEwIHhCMCAxZkEwIDFhMDAgMTRvMCBiYjAgTEEwIHhCMCBSYzAgMXdvMCAxMUEwIDFvMDAgMTdjMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWxjMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxYTAwIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxdEEwIElNMCA5MG8wIFUwMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIDExejAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTRvMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxMGU2XCIsXG5cdFx0XHRcIkV1cm9wZS9CZWxncmFkZXxDRVQgQ0VTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0xOVJDMCAzSVAwIFdNMCAxZkEwIDFjTTAgMWNNMCAxcmMwIFFvMCAxdm1vMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTJlNVwiLFxuXHRcdFx0XCJFdXJvcGUvQmVybGlufENFVCBDRVNUIENFTVR8LTEwIC0yMCAtMzB8MDEwMTAxMDEwMTAxMDEyMTAxMDEyMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhRmUwIDExZDAgMWlPMCAxMUEwIDFvMDAgMTFBMCBRcmMwIDZpMDAgV00wIDFmQTAgMWNNMCAxY00wIDFjTTAga0wwIE5jMCBtMTAgV00wIDFhbzAgMWNwMCBkWDAganowIERkMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFlaEEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw0MWU1XCIsXG5cdFx0XHRcIkV1cm9wZS9QcmFndWV8Q0VUIENFU1QgR01UfC0xMCAtMjAgMHwwMTAxMDEwMTAxMDEwMTAxMDIwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmFGZTAgMTFkMCAxaU8wIDExQTAgMW8wMCAxMUEwIFFyYzAgNmkwMCBXTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFxTTAgMTFjMCBtcDAgeEEwIG1uMCAxN2MwIDFpbzAgMTdjMCAxZmMwIDFhbzAgMWJOYzAgMWNNMCAxZkEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxM2U1XCIsXG5cdFx0XHRcIkV1cm9wZS9CcnVzc2Vsc3xXRVQgQ0VUIENFU1QgV0VTVHwwIC0xMCAtMjAgLTEwfDAxMjEyMTIxMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJlaGMwIDN6WDAgMTFjMCAxaU8wIDExQTAgMW8wMCAxMUEwIG15MCBJYzAgMXFNMCBSYzAgMUVNMCBVTTAgMXUwMCAxMG8wIDFpbzAgMWlvMCAxN2MwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDFhMzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWlvMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMTdjMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMXFNMCBEYzAgeTAwIDVXbjAgV00wIDFmQTAgMWNNMCAxNk0wIDFpTTAgMTZNMCAxQzAwIFVvMCAxZWVvMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MjFlNVwiLFxuXHRcdFx0XCJFdXJvcGUvQnVjaGFyZXN0fEJNVCBFRVQgRUVTVHwtMUkubyAtMjAgLTMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTF4QXBJLm8gMjBMSS5vIFJBMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMUF4YzAgT24wIDFmQTAgMWExMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNLMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDFuWDAgMTFFMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDE5ZTVcIixcblx0XHRcdFwiRXVyb3BlL0J1ZGFwZXN0fENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmFGZTAgMTFkMCAxaU8wIDExQTAgMWlwMCAxN2IwIDFvcDAgMXRiMCBRMm0wIDNOZTAgV00wIDFmQTAgMWNNMCAxY00wIDFvSjAgMWRjMCAxMDMwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWlNMCAxZkEwIDhIYTAgUmIwIDF3TjAgUmIwIDFCQjAgTHowIDFDMjAgTEIwIFNOWDAgMWExMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDE3ZTVcIixcblx0XHRcdFwiRXVyb3BlL1p1cmljaHxDRVQgQ0VTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0xOUxjMCAxMUEwIDFvMDAgMTFBMCAxeEcxMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwzOGU0XCIsXG5cdFx0XHRcIkV1cm9wZS9DaGlzaW5hdXxDTVQgQk1UIEVFVCBFRVNUIENFU1QgQ0VUIE1TSyBNU0R8LTFUIC0xSS5vIC0yMCAtMzAgLTIwIC0xMCAtMzAgLTQwfDAxMjMyMzIzMjMyMzIzMjMyMzIzNDU0NTQ2NzY3Njc2NzY3Njc2NzY3Njc2NzMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMjZqZFQgd0dNYS5BIDIwTEkubyBSQTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDI3QTAgMmVuMCAzOWcwIFdNMCAxZkEwIDFjTTAgVjkwIDF0N3owIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIGdMMCBXTzAgMWNNMCAxY00wIDFjSzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDFuWDAgMTFEMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDY3ZTRcIixcblx0XHRcdFwiRXVyb3BlL0NvcGVuaGFnZW58Q0VUIENFU1R8LTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYXpDMCBUejAgVnVPMCA2MHEwIFdNMCAxZkEwIDFjTTAgMWNNMCAxY00wIFMwMCAxSEEwIE5jMCAxQzAwIERjMCAxTmMwIEFvMCAxaDVBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTJlNVwiLFxuXHRcdFx0XCJFdXJvcGUvR2licmFsdGFyfEdNVCBCU1QgQkRTVCBDRVQgQ0VTVHwwIC0xMCAtMjAgLTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTIxMjEyMTIxMjEwMTAxMjEwMTAxMDEwMTAxMDEwMTAxMDEwMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDN8LTJheGEwIFJjMCAxZkEwIDE0TTAgMWZjMCAxZzAwIDFjbzAgMWRjMCAxY28wIDFvbzAgMTQwMCAxZGMwIDE5QTAgMWlvMCAxaW8wIFdNMCAxbzAwIDE0bzAgMW8wMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFjTTAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDFxTTAgRGMwIDJSejAgRGMwIDF6YzAgT28wIDF6YzAgUmMwIDF3bzAgMTdjMCAxaU0wIEZBMCB4QjAgMWZBMCAxYTAwIDE0bzAgYmIwIExBMCB4QjAgUmMwIDF3bzAgMTFBMCAxbzAwIDE3YzAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFsYzAgMTdjMCAxZkEwIDEwSnowIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MzBlM1wiLFxuXHRcdFx0XCJFdXJvcGUvSGVsc2lua2l8SE1UIEVFVCBFRVNUfC0xRC5OIC0yMCAtMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMVd1TkQuTiBPVUxELk4gMWRBMCAxeEdxMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxMmU1XCIsXG5cdFx0XHRcIkV1cm9wZS9LYWxpbmluZ3JhZHxDRVQgQ0VTVCBDRVQgQ0VTVCBNU0sgTVNEIEVFU1QgRUVUICswM3wtMTAgLTIwIC0yMCAtMzAgLTMwIC00MCAtMzAgLTIwIC0zMHwwMTAxMDEwMTAxMDEwMjMyNDU0NTQ1NDU0NTQ1NDU0NTQ2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2Nzg3fC0yYUZlMCAxMWQwIDFpTzAgMTFBMCAxbzAwIDExQTAgUXJjMCA2aTAwIFdNMCAxZkEwIDFjTTAgMWNNMCBBbTAgTGIwIDFlbjAgb3AwIDFwTnowIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejB8NDRlNFwiLFxuXHRcdFx0XCJFdXJvcGUvS2lldnxLTVQgRUVUIE1TSyBDRVNUIENFVCBNU0QgRUVTVHwtMjIuNCAtMjAgLTMwIC0yMCAtMTAgLTQwIC0zMHwwMTIzNDM0MjUyNTI1MjUyNTI1MjUyNTI1MjU2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxfC0xUGMyMi40IGVVbzIuNCBybnowIDJIZzAgV00wIDFmQTAgZGEwIDF2NG0wIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIERiMCAzMjIwIDFjSzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjUTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDM0ZTVcIixcblx0XHRcdFwiRXVyb3BlL0tpcm92fExNVCArMDMgKzA0ICswNXwtM2kuTSAtMzAgLTQwIC01MHwwMTIzMjMyMzIzMjMyMzIzMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMjJXTTAgcUg5MCAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAycEIwIDFjTTAgMWZBMCAxY00wIDNDbzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowfDQ4ZTRcIixcblx0XHRcdFwiRXVyb3BlL0xpc2JvbnxMTVQgV0VUIFdFU1QgV0VNVCBDRVQgQ0VTVHxBLkogMCAtMTAgLTIwIC0xMCAtMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIxMjMyMTIzMjEyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjE0MTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTI0NTQ1NDU0MjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0ybGUwMCBhUFgwIFNwMCBMWDAgMXZjMCBUYzAgMXVNMCBTTTAgMXZjMCBUYzAgMXZjMCBTTTAgMXZjMCA2NjAwIDFjbzAgM0UwMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDFhMDAgMWlvMCAxN2MwIDNJMDAgMTdjMCAxY00wIDFjTTAgM0ZjMCAxY00wIDFhMDAgMWZBMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDFxTTAgRGMwIDF0QTAgMWNNMCAxZGMwIDE0MDAgZ0wwIElNMCBzMTAgVTAwIGRYMCBSYzAgcGQwIFJjMCBnTDAgT28wIHBkMCBSYzAgZ0wwIE9vMCBwZDAgMTRvMCAxY00wIDFjUDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDNDbzAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgcHZ5MCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNOMCAxY0wwIDFjTjAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTDAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwyN2U1XCIsXG5cdFx0XHRcIkV1cm9wZS9MdXhlbWJvdXJnfExNVCBDRVQgQ0VTVCBXRVQgV0VTVCBXRVNUIFdFVHwtby5BIC0xMCAtMjAgMCAtMTAgLTIwIC0xMHwwMTIxMjEyMTM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0NTY1NjUxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yREcwby5BIHQ2bW8uQSBUQjAgMW5YMCBVcDAgMW8yMCAxMUEwIHJXMCBDTTAgMXFQMCBSOTAgMUVPMCBVSzAgMXUyMCAxMG0wIDFpcDAgMWluMCAxN2UwIDE5VzAgMWZCMCAxZGIwIDFjcDAgMWluMCAxN2QwIDFmejAgMWExMCAxaW4wIDFhMTAgMWluMCAxN2YwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWlvMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMTdjMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMXFNMCBEYzAgdkEwIDYwTDAgV00wIDFmQTAgMWNNMCAxN2MwIDFpbzAgMTZNMCAxQzAwIFVvMCAxZWVvMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NTRlNFwiLFxuXHRcdFx0XCJFdXJvcGUvTWFkcmlkfFdFVCBXRVNUIFdFTVQgQ0VUIENFU1R8MCAtMTAgLTIwIC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMjEwMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzfC0yNVRkMCAxOUIwIDFjTDAgMWRkMCBiMXowIDE4cDAgM0hYMCAxN2QwIDFmejAgMWExMCAxaW8wIDFhMDAgMWluMCAxN2QwIGlJbjAgSGQwIDFjTDAgYmIwIDEyMDAgMnMyMCAxNG4wIDVhTDAgTXAwIDF2ejAgMTdkMCAxaW4wIDE3ZDAgMWluMCAxN2QwIDFpbjAgMTdkMCA2aFgwIDExQjAgWEhYMCAxYTEwIDFmejAgMWExMCAxOVgwIDFjTjAgMWZ6MCAxYTEwIDFmQzAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NjJlNVwiLFxuXHRcdFx0XCJFdXJvcGUvTWFsdGF8Q0VUIENFU1R8LTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYXJCMCBMejAgMWNOMCAxZGIwIDE0MTAgMW9uMCBXcDAgMXFMMCAxN2QwIDFjTDAgTTNCMCA1TTIwIFdNMCAxZkEwIDFjbzAgMTdjMCAxaU0wIDE2bTAgMWRlMCAxbGMwIDE0bTAgMWxjMCBXTzAgMXFNMCBHVFcwIE9uMCAxQzEwIExBMCAxQzAwIExBMCAxRU0wIExBMCAxQzAwIExBMCAxemMwIE9vMCAxQzAwIE9vMCAxY28wIDFjTTAgMWxBMCBYYzAgMXFxMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxaU4wIDE5ejAgMWZCMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw0MmU0XCIsXG5cdFx0XHRcIkV1cm9wZS9NaW5za3xNTVQgRUVUIE1TSyBDRVNUIENFVCBNU0QgRUVTVCArMDN8LTFPIC0yMCAtMzAgLTIwIC0xMCAtNDAgLTMwIC0zMHwwMTIzNDM0MzI1MjUyNTI1MjUyNTI1MjUyNTI2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxN3wtMVBjMU8gZVVuTyBxTlgwIDNnUTAgV00wIDFmQTAgMWNNMCBBbDAgMXRzbjAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDNGYzAgMWNOMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMHwxOWU1XCIsXG5cdFx0XHRcIkV1cm9wZS9Nb25hY298UE1UIFdFVCBXRVNUIFdFTVQgQ0VUIENFU1R8LTkubCAwIC0xMCAtMjAgLTEwIC0yMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMjM0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMm5jbzkubCBjTmI5LmwgSEEwIDE5QTAgMWlNMCAxMWMwIDFvbzAgV28wIDFyYzAgUU0wIDFFTTAgVU0wIDF1MDAgMTBvMCAxaW8wIDF3bzAgUmMwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDFhMDAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWlvMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMTdjMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMXFNMCBEZjAgMlJWMCAxMXowIDExQjAgMXplMCBXTTAgMWZBMCAxY00wIDFmYTAgMWFxMCAxNk0wIDFla24wIDFjTDAgMWZDMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MzhlM1wiLFxuXHRcdFx0XCJFdXJvcGUvTW9zY293fE1NVCBNTVQgTVNUIE1EU1QgTVNEIE1TSyArMDUgRUVUIEVFU1QgTVNLfC0ydS5oIC0ydi5qIC0zdi5qIC00di5qIC00MCAtMzAgLTUwIC0yMCAtMzAgLTQwfDAxMjEzMjM0NTQ2NDU3NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1ODc1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU5NXwtMmFnMnUuaCAycHlXLlcgMWJBMCAxMVgwIEdOMCAxSGIwIGM0di5qIGlrMCAzREEwIGR6MCAxNUEwIGMxMCAycTEwIGlNMTAgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MHwxNmU2XCIsXG5cdFx0XHRcIkV1cm9wZS9QYXJpc3xQTVQgV0VUIFdFU1QgQ0VTVCBDRVQgV0VNVHwtOS5sIDAgLTEwIC0yMCAtMTAgLTIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjM0MzQzNTI1NDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzR8LTJuY284LmwgY05iOC5sIEhBMCAxOUEwIDFpTTAgMTFjMCAxb28wIFdvMCAxcmMwIFFNMCAxRU0wIFVNMCAxdTAwIDEwbzAgMWlvMCAxd28wIFJjMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxYTAwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFjTTAgMWNNMCAxYTAwIDFpbzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDFxTTAgRGYwIElrMCA1TTMwIFdNMCAxZkEwIDFjTTAgVngwIGhCMCAxYXEwIDE2TTAgMWVrbjAgMWNMMCAxZkMwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxMWU2XCIsXG5cdFx0XHRcIkV1cm9wZS9SaWdhfFJNVCBMU1QgRUVUIE1TSyBDRVNUIENFVCBNU0QgRUVTVHwtMUEueSAtMkEueSAtMjAgLTMwIC0yMCAtMTAgLTQwIC0zMHwwMTAxMDIzNDU0NTQ1MzYzNjM2MzYzNjM2MzYzNjM3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzJ8LTI1VHpBLnkgMTFBMCAxaU0wIGtvMCBnV20wIHlEWEEueSAyYlgwIDNmRTAgV00wIDFmQTAgMWNNMCAxY00wIDRtMCAxc0x5MCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTjAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTjAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIDNvbzAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NjRlNFwiLFxuXHRcdFx0XCJFdXJvcGUvUm9tZXxDRVQgQ0VTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhckIwIEx6MCAxY04wIDFkYjAgMTQxMCAxb24wIFdwMCAxcUwwIDE3ZDAgMWNMMCBNM0IwIDVNMjAgV00wIDFmQTAgMWNNMCAxNk0wIDFpTTAgMTZtMCAxZGUwIDFsYzAgMTRtMCAxbGMwIFdPMCAxcU0wIEdUVzAgT24wIDFDMTAgTEEwIDFDMDAgTEEwIDFFTTAgTEEwIDFDMDAgTEEwIDF6YzAgT28wIDFDMDAgT28wIDFDMDAgTEEwIDF6YzAgT28wIDFDMDAgTEEwIDFDMDAgTEEwIDF6YzAgT28wIDFDMDAgT28wIDF6YzAgT28wIDFmQzAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDM5ZTVcIixcblx0XHRcdFwiRXVyb3BlL1NhbWFyYXxMTVQgKzAzICswNCArMDV8LTNrLmsgLTMwIC00MCAtNTB8MDEyMzIzMjMyMzIzMjMyMzIzMjEyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMnwtMjJXTTAgcUg5MCAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAycEIwIDFjTTAgMWZBMCAyeTEwIDE0bTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAyc3AwIFdNMHwxMmU1XCIsXG5cdFx0XHRcIkV1cm9wZS9TYXJhdG92fExNVCArMDMgKzA0ICswNXwtMzQuaSAtMzAgLTQwIC01MHwwMTIzMjMyMzIzMjMyMzIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTIyV00wIHFIOTAgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAycEIwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAzQ28wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCA1ODEwXCIsXG5cdFx0XHRcIkV1cm9wZS9TaW1mZXJvcG9sfFNNVCBFRVQgTVNLIENFU1QgQ0VUIE1TRCBFRVNUIE1TS3wtMmcgLTIwIC0zMCAtMjAgLTEwIC00MCAtMzAgLTQwfDAxMjM0MzQzMjUyNTI1MjUyNTI1MjUyNTI1MjE2MTYxNjUyNTI1MjYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE3MnwtMVBjMmcgZVVvZyByRW4wIDJxczAgV00wIDFmQTAgMWNNMCAzVjAgMXUwTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFRMDAgNGVMMCAxY0wwIDFjTjAgMWNMMCAxY04wIGRYMCBXTDAgMWNOMCAxY0wwIDFmQjAgMW8zMCAxMUIwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTF6MCAxblcwfDMzZTRcIixcblx0XHRcdFwiRXVyb3BlL1NvZmlhfEVFVCBDRVQgQ0VTVCBFRVNUfC0yMCAtMTAgLTIwIC0zMHwwMTIxMjEwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMHwtMTY4TDAgV00wIDFmQTAgMWNNMCAxY00wIDFjTjAgMW1LSDAgMWRkMCAxZmIwIDFhcDAgMWZiMCAxYTIwIDFmeTAgMWEzMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjSzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxblgwIDExRTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxMmU1XCIsXG5cdFx0XHRcIkV1cm9wZS9TdG9ja2hvbG18Q0VUIENFU1R8LTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmF6QzAgVEIwIDJ5RGUwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxNWU1XCIsXG5cdFx0XHRcIkV1cm9wZS9UYWxsaW5ufFRNVCBDRVQgQ0VTVCBFRVQgTVNLIE1TRCBFRVNUfC0xRCAtMTAgLTIwIC0yMCAtMzAgLTQwIC0zMHwwMTIxMDM0MjEyMTI0NTQ1NDU0NTQ1NDU0NTQ1NDYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjN8LTI2b05EIHRlRCAxMUEwIDFUYTAgNHJYbCBLU0xEIDJGWDAgMkpnMCBXTTAgMWZBMCAxY00wIDE4SjAgMXNUWDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzEwIDExQTAgMXFNMCA1UU0wIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NDFlNFwiLFxuXHRcdFx0XCJFdXJvcGUvVGlyYW5lfExNVCBDRVQgQ0VTVHwtMWouayAtMTAgLTIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2xCai5rIDE0cGNqLmsgNUxDMCBXTTAgNE0wIDFmQ0swIDEwbjAgMW9wMCAxMXowIDFwZDAgMTF6MCAxcU4wIFdMMCAxcXAwIFhiMCAxcXAwIFhiMCAxcXAwIDExejAgMWxCMCAxMXowIDFxTjAgMTF6MCAxaU4wIDE2bjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw0MmU0XCIsXG5cdFx0XHRcIkV1cm9wZS9VbHlhbm92c2t8TE1UICswMyArMDQgKzA1ICswMnwtM2QuQSAtMzAgLTQwIC01MCAtMjB8MDEyMzIzMjMyMzIzMjMyMzIzMjEyMTQxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTIyV00wIHFIOTAgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMnBCMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIDNyZDBcIixcblx0XHRcdFwiRXVyb3BlL1V6aGdvcm9kfENFVCBDRVNUIE1TSyBNU0QgRUVUIEVFU1R8LTEwIC0yMCAtMzAgLTQwIC0yMCAtMzB8MDEwMTAxMDIzMjMyMzIzMjMyMzIzMjMyMzIwNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0xY3FMMCA2aTAwIFdNMCAxZkEwIDFjTTAgMW1sMCAxQ3AwIDFyM1cwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxUTAwIDFOZjAgMnB3MCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNRMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTFlNFwiLFxuXHRcdFx0XCJFdXJvcGUvVmllbm5hfENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmFGZTAgMTFkMCAxaU8wIDExQTAgMW8wMCAxMUEwIDNLTTAgMTRvMCBMQTAwIDZpMDAgV00wIDFmQTAgMWNNMCAxY00wIDFjTTAgNDAwIDJxTTAgMWEwMCAxY00wIDFjTTAgMWlvMCAxN2MwIDFnSGEwIDE5WDAgMWNQMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxOGU1XCIsXG5cdFx0XHRcIkV1cm9wZS9WaWxuaXVzfFdNVCBLTVQgQ0VUIEVFVCBNU0sgQ0VTVCBNU0QgRUVTVHwtMW8gLTF6LkEgLTEwIC0yMCAtMzAgLTIwIC00MCAtMzB8MDEyMzI0NTI1MjU0NjQ2NDY0NjQ2NDY0NjQ2NDczNzM3MzczNzM3MzczNzM3MzUyNTM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczfC0yOTNkbyA2SUxNLm8gMU9vei5BIHp6MCBNZmQwIDI5VzAgM2lzMCBXTTAgMWZBMCAxY00wIExWMCAxdGdMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTjAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUIwIDFvMDAgMTFBMCAxcU0wIDhpbzAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDU0ZTRcIixcblx0XHRcdFwiRXVyb3BlL1ZvbGdvZ3JhZHxMTVQgKzAzICswNCArMDV8LTJWLkUgLTMwIC00MCAtNTB8MDEyMzIzMjMyMzIzMjMyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTIxSXFWLkUgcHNMVi5FIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMnBCMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgM0NvMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejB8MTBlNVwiLFxuXHRcdFx0XCJFdXJvcGUvV2Fyc2F3fFdNVCBDRVQgQ0VTVCBFRVQgRUVTVHwtMW8gLTEwIC0yMCAtMjAgLTMwfDAxMjEyMTIzNDMxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmN0ZG8gMUxYbyAxMWQwIDFpTzAgMTFBMCAxbzAwIDExQTAgMW9uMCAxMUEwIDZ6eTAgSFdQMCA1SU0wIFdNMCAxZkEwIDFjTTAgMWR6MCAxbUwwIDFlbjAgMTVCMCAxYXEwIDFuQTAgMTFBMCAxaW8wIDE3YzAgMWZBMCAxYTAwIGlEWDAgTEEwIDFjTTAgMWNNMCAxQzAwIE9vMCAxY00wIDFjTTAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMUMwMCBMQTAgdXNvMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTdlNVwiLFxuXHRcdFx0XCJFdXJvcGUvWmFwb3Jvemh5ZXwrMDIyMCBFRVQgTVNLIENFU1QgQ0VUIE1TRCBFRVNUfC0yayAtMjAgLTMwIC0yMCAtMTAgLTQwIC0zMHwwMTIzNDM0MjUyNTI1MjUyNTI1MjUyNTI1MjUyNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MXwtMVBjMmsgZVVvayByZGIwIDJSRTAgV00wIDFmQTAgOG0wIDF2OWEwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY0swIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjUTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDc3ZTRcIixcblx0XHRcdFwiSFNUfEhTVHxhMHwwfFwiLFxuXHRcdFx0XCJJbmRpYW4vQ2hhZ29zfExNVCArMDUgKzA2fC00Ti5FIC01MCAtNjB8MDEyfC0yeG9zTi5FIDNBR0xOLkV8MzBlMlwiLFxuXHRcdFx0XCJJbmRpYW4vQ29jb3N8KzA2MzB8LTZ1fDB8fDU5NlwiLFxuXHRcdFx0XCJJbmRpYW4vS2VyZ3VlbGVufC0wMCArMDV8MCAtNTB8MDF8LU1HMDB8MTMwXCIsXG5cdFx0XHRcIkluZGlhbi9NYWhlfExNVCArMDR8LTNGLk0gLTQwfDAxfC0yeU8zRi5NfDc5ZTNcIixcblx0XHRcdFwiSW5kaWFuL01hbGRpdmVzfE1NVCArMDV8LTRTIC01MHwwMXwtb2xnU3wzNWU0XCIsXG5cdFx0XHRcIkluZGlhbi9NYXVyaXRpdXN8TE1UICswNCArMDV8LTNPIC00MCAtNTB8MDEyMTIxfC0yeG9yTyAzNHVuTyAxNEwwIDEya3IwIDExejB8MTVlNFwiLFxuXHRcdFx0XCJJbmRpYW4vUmV1bmlvbnxMTVQgKzA0fC0zRi5RIC00MHwwMXwtMm1EREYuUXw4NGU0XCIsXG5cdFx0XHRcIlBhY2lmaWMvS3dhamFsZWlufCsxMSAtMTIgKzEyfC1iMCBjMCAtYzB8MDEyfC1BWDAgVzlYMHwxNGUzXCIsXG5cdFx0XHRcIk1FVHxNRVQgTUVTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYUZlMCAxMWQwIDFpTzAgMTFBMCAxbzAwIDExQTAgUXJjMCA2aTAwIFdNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDE2TTAgMWdNTTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwXCIsXG5cdFx0XHRcIk1TVHxNU1R8NzB8MHxcIixcblx0XHRcdFwiTVNUN01EVHxNU1QgTURUIE1XVCBNUFR8NzAgNjAgNjAgNjB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjFyMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MjAgaXgwIFF3TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiUGFjaWZpYy9DaGF0aGFtfCsxMjE1ICsxMjQ1ICsxMzQ1fC1jZiAtY0ogLWRKfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtV3FBZiAxYWRlZiBJTTAgMUMwMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXFNMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE3YzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWlvMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMHw2MDBcIixcblx0XHRcdFwiUGFjaWZpYy9BcGlhfExNVCAtMTEzMCAtMTEgLTEwICsxNCArMTN8YnEuVSBidSBiMCBhMCAtZTAgLWQwfDAxMjMyMzQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0ybkRNeC40IDF5VzAzLjQgMnJSYnUgMWZmMCAxYTAwIENJMCBBUTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFpbzAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDB8MzdlM1wiLFxuXHRcdFx0XCJQYWNpZmljL0JvdWdhaW52aWxsZXwrMTAgKzA5ICsxMXwtYTAgLTkwIC1iMHwwMTAyfC0xNld5MCA3Q04wIDJNUXAwfDE4ZTRcIixcblx0XHRcdFwiUGFjaWZpYy9FZmF0ZXxMTVQgKzExICsxMnwtYmQuZyAtYjAgLWMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJsOW5kLmcgMlN6Y2QuZyAxY0wwIDFvTjAgMTBMMCAxZkIwIDE5WDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxZkIwIEx6MCAxTmQwIEFuMHw2NmUzXCIsXG5cdFx0XHRcIlBhY2lmaWMvRW5kZXJidXJ5fC0xMiAtMTEgKzEzfGMwIGIwIC1kMHwwMTJ8bkljMCBCN1gwfDFcIixcblx0XHRcdFwiUGFjaWZpYy9GYWthb2ZvfC0xMSArMTN8YjAgLWQwfDAxfDFHZm4wfDQ4M1wiLFxuXHRcdFx0XCJQYWNpZmljL0Zpaml8TE1UICsxMiArMTN8LWJULkkgLWMwIC1kMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yYlV6VC5JIDNtOE5ULkkgTEEwIDFFTTAgSU0wIG5KYzAgTEEwIDFvMDAgUmMwIDF3bzAgQW8wIDFOYzAgQW8wIDFRMDAgeHowIDFTTjAgdU0wIDFTTTAgdU0wIDFWQTAgczAwIDFWQTAgczAwIDFWQTAgdU0wIDFTTTAgdU0wIDFTTTAgdU0wIDFWQTAgczAwIDFWQTAgczAwIDFWQTAgczAwIDFWQTAgdU0wIDFTTTAgdU0wIDFTTTAgdU0wIDFWQTAgczAwIDFWQTAgczAwIDFWQTAgdU0wIDFTTTAgdU0wIDFTTTAgdU0wIDFWQTAgczAwIDFWQTAgczAwIDFWQTAgczAwIDFWQTAgdU0wIDFTTTAgdU0wIDFTTTAgdU0wfDg4ZTRcIixcblx0XHRcdFwiUGFjaWZpYy9HYWxhcGFnb3N8TE1UIC0wNSAtMDZ8NVcubyA1MCA2MHwwMTIxMnwtMXlWUzEuQSAyZFR6MS5BIGdOZDAgcnowfDI1ZTNcIixcblx0XHRcdFwiUGFjaWZpYy9HYW1iaWVyfExNVCAtMDl8OFguTSA5MHwwMXwtMmpvZjAuY3wxMjVcIixcblx0XHRcdFwiUGFjaWZpYy9HdWFkYWxjYW5hbHxMTVQgKzExfC1hRC5NIC1iMHwwMXwtMmpveUQuTXwxMWU0XCIsXG5cdFx0XHRcIlBhY2lmaWMvR3VhbXxHU1QgQ2hTVHwtYTAgLWEwfDAxfDFmcHEwfDE3ZTRcIixcblx0XHRcdFwiUGFjaWZpYy9Ib25vbHVsdXxIU1QgSERUIEhTVHxhdSA5dSBhMHwwMTAxMDJ8LTF0aEx1IDh4MCBsZWYwIDhQejAgNDZwMHwzN2U0XCIsXG5cdFx0XHRcIlBhY2lmaWMvS2lyaXRpbWF0aXwtMTA0MCAtMTAgKzE0fGFFIGEwIC1lMHwwMTJ8bklhRSBCN1hrfDUxZTJcIixcblx0XHRcdFwiUGFjaWZpYy9Lb3NyYWV8KzExICsxMnwtYjAgLWMwfDAxMHwtQVgwIDFiZHowfDY2ZTJcIixcblx0XHRcdFwiUGFjaWZpYy9NYWp1cm98KzExICsxMnwtYjAgLWMwfDAxfC1BWDB8MjhlM1wiLFxuXHRcdFx0XCJQYWNpZmljL01hcnF1ZXNhc3xMTVQgLTA5MzB8OWkgOXV8MDF8LTJqb2VHfDg2ZTJcIixcblx0XHRcdFwiUGFjaWZpYy9QYWdvX1BhZ298TE1UIFNTVHxibS5NIGIwfDAxfC0ybkRNQi5jfDM3ZTJcIixcblx0XHRcdFwiUGFjaWZpYy9OYXVydXxMTVQgKzExMzAgKzA5ICsxMnwtYjcuRSAtYnUgLTkwIC1jMHwwMTIxM3wtMVhkbjcuRSBQdnpCLkUgNVJDdSAxb3VKdXwxMGUzXCIsXG5cdFx0XHRcIlBhY2lmaWMvTml1ZXwtMTEyMCAtMTEzMCAtMTF8YmsgYnUgYjB8MDEyfC1LZk1FIDE3eTBhfDEyZTJcIixcblx0XHRcdFwiUGFjaWZpYy9Ob3Jmb2xrfCsxMTEyICsxMTMwICsxMjMwICsxMXwtYmMgLWJ1IC1jdSAtYjB8MDEyMTN8LUtnYmMgVzAxRyBPbjAgMUNPcDB8MjVlNFwiLFxuXHRcdFx0XCJQYWNpZmljL05vdW1lYXxMTVQgKzExICsxMnwtYjUuTSAtYjAgLWMwfDAxMjEyMTIxfC0ybDluNS5NIDJFcU01Lk0geFgwIDFQQjAgeW4wIEhlUDAgQW8wfDk4ZTNcIixcblx0XHRcdFwiUGFjaWZpYy9QaXRjYWlybnwtMDgzMCAtMDh8OHUgODB8MDF8MThWa3V8NTZcIixcblx0XHRcdFwiUGFjaWZpYy9SYXJvdG9uZ2F8LTEwMzAgLTA5MzAgLTEwfGF1IDl1IGEwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnxseVd1IElMMCAxemN1IE9udSAxemN1IE9udSAxemN1IFJidSAxemN1IE9udSAxemN1IE9udSAxemN1IE9udSAxemN1IE9udSAxemN1IE9udSAxemN1IFJidSAxemN1IE9udSAxemN1IE9udSAxemN1IE9udXwxM2UzXCIsXG5cdFx0XHRcIlBhY2lmaWMvVGFoaXRpfExNVCAtMTB8OVcuZyBhMHwwMXwtMmpvZTEuSXwxOGU0XCIsXG5cdFx0XHRcIlBhY2lmaWMvVG9uZ2F0YXB1fCsxMjIwICsxMyArMTR8LWNrIC1kMCAtZTB8MDEyMTIxMjEyMXwtMWFCMGsgMm41ZGsgMTVBMCAxd28wIHh6MCAxUTEwIHh6MCB6V04wIHMwMHw3NWUzXCIsXG5cdFx0XHRcIlBTVDhQRFR8UFNUIFBEVCBQV1QgUFBUfDgwIDcwIDcwIDcwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxcTAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDEwIGl5MCBRd04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIldFVHxXRVQgV0VTVHwwIC0xMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8aERCMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDBcIlxuXHRcdF0sXG5cdFx0XCJsaW5rc1wiOiBbXG5cdFx0XHRcIkFmcmljYS9BYmlkamFufEFmcmljYS9CYW1ha29cIixcblx0XHRcdFwiQWZyaWNhL0FiaWRqYW58QWZyaWNhL0Jhbmp1bFwiLFxuXHRcdFx0XCJBZnJpY2EvQWJpZGphbnxBZnJpY2EvQ29uYWtyeVwiLFxuXHRcdFx0XCJBZnJpY2EvQWJpZGphbnxBZnJpY2EvRGFrYXJcIixcblx0XHRcdFwiQWZyaWNhL0FiaWRqYW58QWZyaWNhL0ZyZWV0b3duXCIsXG5cdFx0XHRcIkFmcmljYS9BYmlkamFufEFmcmljYS9Mb21lXCIsXG5cdFx0XHRcIkFmcmljYS9BYmlkamFufEFmcmljYS9Ob3Vha2Nob3R0XCIsXG5cdFx0XHRcIkFmcmljYS9BYmlkamFufEFmcmljYS9PdWFnYWRvdWdvdVwiLFxuXHRcdFx0XCJBZnJpY2EvQWJpZGphbnxBZnJpY2EvVGltYnVrdHVcIixcblx0XHRcdFwiQWZyaWNhL0FiaWRqYW58QXRsYW50aWMvU3RfSGVsZW5hXCIsXG5cdFx0XHRcIkFmcmljYS9DYWlyb3xFZ3lwdFwiLFxuXHRcdFx0XCJBZnJpY2EvSm9oYW5uZXNidXJnfEFmcmljYS9NYXNlcnVcIixcblx0XHRcdFwiQWZyaWNhL0pvaGFubmVzYnVyZ3xBZnJpY2EvTWJhYmFuZVwiLFxuXHRcdFx0XCJBZnJpY2EvTGFnb3N8QWZyaWNhL0Jhbmd1aVwiLFxuXHRcdFx0XCJBZnJpY2EvTGFnb3N8QWZyaWNhL0JyYXp6YXZpbGxlXCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xBZnJpY2EvRG91YWxhXCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xBZnJpY2EvS2luc2hhc2FcIixcblx0XHRcdFwiQWZyaWNhL0xhZ29zfEFmcmljYS9MaWJyZXZpbGxlXCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xBZnJpY2EvTHVhbmRhXCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xBZnJpY2EvTWFsYWJvXCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xBZnJpY2EvTmlhbWV5XCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xBZnJpY2EvUG9ydG8tTm92b1wiLFxuXHRcdFx0XCJBZnJpY2EvTWFwdXRvfEFmcmljYS9CbGFudHlyZVwiLFxuXHRcdFx0XCJBZnJpY2EvTWFwdXRvfEFmcmljYS9CdWp1bWJ1cmFcIixcblx0XHRcdFwiQWZyaWNhL01hcHV0b3xBZnJpY2EvR2Fib3JvbmVcIixcblx0XHRcdFwiQWZyaWNhL01hcHV0b3xBZnJpY2EvSGFyYXJlXCIsXG5cdFx0XHRcIkFmcmljYS9NYXB1dG98QWZyaWNhL0tpZ2FsaVwiLFxuXHRcdFx0XCJBZnJpY2EvTWFwdXRvfEFmcmljYS9MdWJ1bWJhc2hpXCIsXG5cdFx0XHRcIkFmcmljYS9NYXB1dG98QWZyaWNhL0x1c2FrYVwiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxBZnJpY2EvQWRkaXNfQWJhYmFcIixcblx0XHRcdFwiQWZyaWNhL05haXJvYml8QWZyaWNhL0FzbWFyYVwiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxBZnJpY2EvQXNtZXJhXCIsXG5cdFx0XHRcIkFmcmljYS9OYWlyb2JpfEFmcmljYS9EYXJfZXNfU2FsYWFtXCIsXG5cdFx0XHRcIkFmcmljYS9OYWlyb2JpfEFmcmljYS9Eamlib3V0aVwiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxBZnJpY2EvS2FtcGFsYVwiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxBZnJpY2EvTW9nYWRpc2h1XCIsXG5cdFx0XHRcIkFmcmljYS9OYWlyb2JpfEluZGlhbi9BbnRhbmFuYXJpdm9cIixcblx0XHRcdFwiQWZyaWNhL05haXJvYml8SW5kaWFuL0NvbW9yb1wiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxJbmRpYW4vTWF5b3R0ZVwiLFxuXHRcdFx0XCJBZnJpY2EvVHJpcG9saXxMaWJ5YVwiLFxuXHRcdFx0XCJBbWVyaWNhL0FkYWt8QW1lcmljYS9BdGthXCIsXG5cdFx0XHRcIkFtZXJpY2EvQWRha3xVUy9BbGV1dGlhblwiLFxuXHRcdFx0XCJBbWVyaWNhL0FuY2hvcmFnZXxVUy9BbGFza2FcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvQnVlbm9zX0FpcmVzfEFtZXJpY2EvQnVlbm9zX0FpcmVzXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL0NhdGFtYXJjYXxBbWVyaWNhL0FyZ2VudGluYS9Db21vZFJpdmFkYXZpYVwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9DYXRhbWFyY2F8QW1lcmljYS9DYXRhbWFyY2FcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvQ29yZG9iYXxBbWVyaWNhL0NvcmRvYmFcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvQ29yZG9iYXxBbWVyaWNhL1Jvc2FyaW9cIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvSnVqdXl8QW1lcmljYS9KdWp1eVwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9NZW5kb3phfEFtZXJpY2EvTWVuZG96YVwiLFxuXHRcdFx0XCJBbWVyaWNhL0F0aWtva2FufEFtZXJpY2EvQ29yYWxfSGFyYm91clwiLFxuXHRcdFx0XCJBbWVyaWNhL0NoaWNhZ298VVMvQ2VudHJhbFwiLFxuXHRcdFx0XCJBbWVyaWNhL0N1cmFjYW98QW1lcmljYS9BcnViYVwiLFxuXHRcdFx0XCJBbWVyaWNhL0N1cmFjYW98QW1lcmljYS9LcmFsZW5kaWprXCIsXG5cdFx0XHRcIkFtZXJpY2EvQ3VyYWNhb3xBbWVyaWNhL0xvd2VyX1ByaW5jZXNcIixcblx0XHRcdFwiQW1lcmljYS9EZW52ZXJ8QW1lcmljYS9TaGlwcm9ja1wiLFxuXHRcdFx0XCJBbWVyaWNhL0RlbnZlcnxOYXZham9cIixcblx0XHRcdFwiQW1lcmljYS9EZW52ZXJ8VVMvTW91bnRhaW5cIixcblx0XHRcdFwiQW1lcmljYS9EZXRyb2l0fFVTL01pY2hpZ2FuXCIsXG5cdFx0XHRcIkFtZXJpY2EvRWRtb250b258Q2FuYWRhL01vdW50YWluXCIsXG5cdFx0XHRcIkFtZXJpY2EvRm9ydF9XYXluZXxBbWVyaWNhL0luZGlhbmEvSW5kaWFuYXBvbGlzXCIsXG5cdFx0XHRcIkFtZXJpY2EvRm9ydF9XYXluZXxBbWVyaWNhL0luZGlhbmFwb2xpc1wiLFxuXHRcdFx0XCJBbWVyaWNhL0ZvcnRfV2F5bmV8VVMvRWFzdC1JbmRpYW5hXCIsXG5cdFx0XHRcIkFtZXJpY2EvSGFsaWZheHxDYW5hZGEvQXRsYW50aWNcIixcblx0XHRcdFwiQW1lcmljYS9IYXZhbmF8Q3ViYVwiLFxuXHRcdFx0XCJBbWVyaWNhL0luZGlhbmEvS25veHxBbWVyaWNhL0tub3hfSU5cIixcblx0XHRcdFwiQW1lcmljYS9JbmRpYW5hL0tub3h8VVMvSW5kaWFuYS1TdGFya2VcIixcblx0XHRcdFwiQW1lcmljYS9KYW1haWNhfEphbWFpY2FcIixcblx0XHRcdFwiQW1lcmljYS9LZW50dWNreS9Mb3Vpc3ZpbGxlfEFtZXJpY2EvTG91aXN2aWxsZVwiLFxuXHRcdFx0XCJBbWVyaWNhL0xvc19BbmdlbGVzfFVTL1BhY2lmaWNcIixcblx0XHRcdFwiQW1lcmljYS9Mb3NfQW5nZWxlc3xVUy9QYWNpZmljLU5ld1wiLFxuXHRcdFx0XCJBbWVyaWNhL01hbmF1c3xCcmF6aWwvV2VzdFwiLFxuXHRcdFx0XCJBbWVyaWNhL01hemF0bGFufE1leGljby9CYWphU3VyXCIsXG5cdFx0XHRcIkFtZXJpY2EvTWV4aWNvX0NpdHl8TWV4aWNvL0dlbmVyYWxcIixcblx0XHRcdFwiQW1lcmljYS9OZXdfWW9ya3xVUy9FYXN0ZXJuXCIsXG5cdFx0XHRcIkFtZXJpY2EvTm9yb25oYXxCcmF6aWwvRGVOb3JvbmhhXCIsXG5cdFx0XHRcIkFtZXJpY2EvUGFuYW1hfEFtZXJpY2EvQ2F5bWFuXCIsXG5cdFx0XHRcIkFtZXJpY2EvUGhvZW5peHxVUy9Bcml6b25hXCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL0FuZ3VpbGxhXCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL0FudGlndWFcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvRG9taW5pY2FcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvR3JlbmFkYVwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9HdWFkZWxvdXBlXCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL01hcmlnb3RcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvTW9udHNlcnJhdFwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9TdF9CYXJ0aGVsZW15XCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL1N0X0tpdHRzXCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL1N0X0x1Y2lhXCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL1N0X1Rob21hc1wiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9TdF9WaW5jZW50XCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL1RvcnRvbGFcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvVmlyZ2luXCIsXG5cdFx0XHRcIkFtZXJpY2EvUmVnaW5hfENhbmFkYS9TYXNrYXRjaGV3YW5cIixcblx0XHRcdFwiQW1lcmljYS9SaW9fQnJhbmNvfEFtZXJpY2EvUG9ydG9fQWNyZVwiLFxuXHRcdFx0XCJBbWVyaWNhL1Jpb19CcmFuY298QnJhemlsL0FjcmVcIixcblx0XHRcdFwiQW1lcmljYS9TYW50aWFnb3xDaGlsZS9Db250aW5lbnRhbFwiLFxuXHRcdFx0XCJBbWVyaWNhL1Nhb19QYXVsb3xCcmF6aWwvRWFzdFwiLFxuXHRcdFx0XCJBbWVyaWNhL1N0X0pvaG5zfENhbmFkYS9OZXdmb3VuZGxhbmRcIixcblx0XHRcdFwiQW1lcmljYS9UaWp1YW5hfEFtZXJpY2EvRW5zZW5hZGFcIixcblx0XHRcdFwiQW1lcmljYS9UaWp1YW5hfEFtZXJpY2EvU2FudGFfSXNhYmVsXCIsXG5cdFx0XHRcIkFtZXJpY2EvVGlqdWFuYXxNZXhpY28vQmFqYU5vcnRlXCIsXG5cdFx0XHRcIkFtZXJpY2EvVG9yb250b3xBbWVyaWNhL01vbnRyZWFsXCIsXG5cdFx0XHRcIkFtZXJpY2EvVG9yb250b3xDYW5hZGEvRWFzdGVyblwiLFxuXHRcdFx0XCJBbWVyaWNhL1ZhbmNvdXZlcnxDYW5hZGEvUGFjaWZpY1wiLFxuXHRcdFx0XCJBbWVyaWNhL1doaXRlaG9yc2V8Q2FuYWRhL1l1a29uXCIsXG5cdFx0XHRcIkFtZXJpY2EvV2lubmlwZWd8Q2FuYWRhL0NlbnRyYWxcIixcblx0XHRcdFwiQXNpYS9Bc2hnYWJhdHxBc2lhL0FzaGtoYWJhZFwiLFxuXHRcdFx0XCJBc2lhL0Jhbmdrb2t8QXNpYS9QaG5vbV9QZW5oXCIsXG5cdFx0XHRcIkFzaWEvQmFuZ2tva3xBc2lhL1ZpZW50aWFuZVwiLFxuXHRcdFx0XCJBc2lhL0RoYWthfEFzaWEvRGFjY2FcIixcblx0XHRcdFwiQXNpYS9EdWJhaXxBc2lhL011c2NhdFwiLFxuXHRcdFx0XCJBc2lhL0hvX0NoaV9NaW5ofEFzaWEvU2FpZ29uXCIsXG5cdFx0XHRcIkFzaWEvSG9uZ19Lb25nfEhvbmdrb25nXCIsXG5cdFx0XHRcIkFzaWEvSmVydXNhbGVtfEFzaWEvVGVsX0F2aXZcIixcblx0XHRcdFwiQXNpYS9KZXJ1c2FsZW18SXNyYWVsXCIsXG5cdFx0XHRcIkFzaWEvS2F0aG1hbmR1fEFzaWEvS2F0bWFuZHVcIixcblx0XHRcdFwiQXNpYS9Lb2xrYXRhfEFzaWEvQ2FsY3V0dGFcIixcblx0XHRcdFwiQXNpYS9LdWFsYV9MdW1wdXJ8QXNpYS9TaW5nYXBvcmVcIixcblx0XHRcdFwiQXNpYS9LdWFsYV9MdW1wdXJ8U2luZ2Fwb3JlXCIsXG5cdFx0XHRcIkFzaWEvTWFjYXV8QXNpYS9NYWNhb1wiLFxuXHRcdFx0XCJBc2lhL01ha2Fzc2FyfEFzaWEvVWp1bmdfUGFuZGFuZ1wiLFxuXHRcdFx0XCJBc2lhL05pY29zaWF8RXVyb3BlL05pY29zaWFcIixcblx0XHRcdFwiQXNpYS9RYXRhcnxBc2lhL0JhaHJhaW5cIixcblx0XHRcdFwiQXNpYS9SYW5nb29ufEFzaWEvWWFuZ29uXCIsXG5cdFx0XHRcIkFzaWEvUml5YWRofEFzaWEvQWRlblwiLFxuXHRcdFx0XCJBc2lhL1JpeWFkaHxBc2lhL0t1d2FpdFwiLFxuXHRcdFx0XCJBc2lhL1Nlb3VsfFJPS1wiLFxuXHRcdFx0XCJBc2lhL1NoYW5naGFpfEFzaWEvQ2hvbmdxaW5nXCIsXG5cdFx0XHRcIkFzaWEvU2hhbmdoYWl8QXNpYS9DaHVuZ2tpbmdcIixcblx0XHRcdFwiQXNpYS9TaGFuZ2hhaXxBc2lhL0hhcmJpblwiLFxuXHRcdFx0XCJBc2lhL1NoYW5naGFpfFBSQ1wiLFxuXHRcdFx0XCJBc2lhL1RhaXBlaXxST0NcIixcblx0XHRcdFwiQXNpYS9UZWhyYW58SXJhblwiLFxuXHRcdFx0XCJBc2lhL1RoaW1waHV8QXNpYS9UaGltYnVcIixcblx0XHRcdFwiQXNpYS9Ub2t5b3xKYXBhblwiLFxuXHRcdFx0XCJBc2lhL1VsYWFuYmFhdGFyfEFzaWEvVWxhbl9CYXRvclwiLFxuXHRcdFx0XCJBc2lhL1VydW1xaXxBc2lhL0thc2hnYXJcIixcblx0XHRcdFwiQXRsYW50aWMvRmFyb2V8QXRsYW50aWMvRmFlcm9lXCIsXG5cdFx0XHRcIkF0bGFudGljL1JleWtqYXZpa3xJY2VsYW5kXCIsXG5cdFx0XHRcIkF0bGFudGljL1NvdXRoX0dlb3JnaWF8RXRjL0dNVCsyXCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9BZGVsYWlkZXxBdXN0cmFsaWEvU291dGhcIixcblx0XHRcdFwiQXVzdHJhbGlhL0JyaXNiYW5lfEF1c3RyYWxpYS9RdWVlbnNsYW5kXCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9Ccm9rZW5fSGlsbHxBdXN0cmFsaWEvWWFuY293aW5uYVwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvRGFyd2lufEF1c3RyYWxpYS9Ob3J0aFwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvSG9iYXJ0fEF1c3RyYWxpYS9UYXNtYW5pYVwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvTG9yZF9Ib3dlfEF1c3RyYWxpYS9MSElcIixcblx0XHRcdFwiQXVzdHJhbGlhL01lbGJvdXJuZXxBdXN0cmFsaWEvVmljdG9yaWFcIixcblx0XHRcdFwiQXVzdHJhbGlhL1BlcnRofEF1c3RyYWxpYS9XZXN0XCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9TeWRuZXl8QXVzdHJhbGlhL0FDVFwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvU3lkbmV5fEF1c3RyYWxpYS9DYW5iZXJyYVwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvU3lkbmV5fEF1c3RyYWxpYS9OU1dcIixcblx0XHRcdFwiRXRjL0dNVC0wfEV0Yy9HTVRcIixcblx0XHRcdFwiRXRjL0dNVC0wfEV0Yy9HTVQrMFwiLFxuXHRcdFx0XCJFdGMvR01ULTB8RXRjL0dNVDBcIixcblx0XHRcdFwiRXRjL0dNVC0wfEV0Yy9HcmVlbndpY2hcIixcblx0XHRcdFwiRXRjL0dNVC0wfEdNVFwiLFxuXHRcdFx0XCJFdGMvR01ULTB8R01UKzBcIixcblx0XHRcdFwiRXRjL0dNVC0wfEdNVC0wXCIsXG5cdFx0XHRcIkV0Yy9HTVQtMHxHTVQwXCIsXG5cdFx0XHRcIkV0Yy9HTVQtMHxHcmVlbndpY2hcIixcblx0XHRcdFwiRXRjL1VDVHxVQ1RcIixcblx0XHRcdFwiRXRjL1VUQ3xFdGMvVW5pdmVyc2FsXCIsXG5cdFx0XHRcIkV0Yy9VVEN8RXRjL1p1bHVcIixcblx0XHRcdFwiRXRjL1VUQ3xVVENcIixcblx0XHRcdFwiRXRjL1VUQ3xVbml2ZXJzYWxcIixcblx0XHRcdFwiRXRjL1VUQ3xadWx1XCIsXG5cdFx0XHRcIkV1cm9wZS9CZWxncmFkZXxFdXJvcGUvTGp1YmxqYW5hXCIsXG5cdFx0XHRcIkV1cm9wZS9CZWxncmFkZXxFdXJvcGUvUG9kZ29yaWNhXCIsXG5cdFx0XHRcIkV1cm9wZS9CZWxncmFkZXxFdXJvcGUvU2FyYWpldm9cIixcblx0XHRcdFwiRXVyb3BlL0JlbGdyYWRlfEV1cm9wZS9Ta29wamVcIixcblx0XHRcdFwiRXVyb3BlL0JlbGdyYWRlfEV1cm9wZS9aYWdyZWJcIixcblx0XHRcdFwiRXVyb3BlL0NoaXNpbmF1fEV1cm9wZS9UaXJhc3BvbFwiLFxuXHRcdFx0XCJFdXJvcGUvRHVibGlufEVpcmVcIixcblx0XHRcdFwiRXVyb3BlL0hlbHNpbmtpfEV1cm9wZS9NYXJpZWhhbW5cIixcblx0XHRcdFwiRXVyb3BlL0lzdGFuYnVsfEFzaWEvSXN0YW5idWxcIixcblx0XHRcdFwiRXVyb3BlL0lzdGFuYnVsfFR1cmtleVwiLFxuXHRcdFx0XCJFdXJvcGUvTGlzYm9ufFBvcnR1Z2FsXCIsXG5cdFx0XHRcIkV1cm9wZS9Mb25kb258RXVyb3BlL0JlbGZhc3RcIixcblx0XHRcdFwiRXVyb3BlL0xvbmRvbnxFdXJvcGUvR3Vlcm5zZXlcIixcblx0XHRcdFwiRXVyb3BlL0xvbmRvbnxFdXJvcGUvSXNsZV9vZl9NYW5cIixcblx0XHRcdFwiRXVyb3BlL0xvbmRvbnxFdXJvcGUvSmVyc2V5XCIsXG5cdFx0XHRcIkV1cm9wZS9Mb25kb258R0JcIixcblx0XHRcdFwiRXVyb3BlL0xvbmRvbnxHQi1FaXJlXCIsXG5cdFx0XHRcIkV1cm9wZS9Nb3Njb3d8Vy1TVVwiLFxuXHRcdFx0XCJFdXJvcGUvT3Nsb3xBcmN0aWMvTG9uZ3llYXJieWVuXCIsXG5cdFx0XHRcIkV1cm9wZS9Pc2xvfEF0bGFudGljL0phbl9NYXllblwiLFxuXHRcdFx0XCJFdXJvcGUvUHJhZ3VlfEV1cm9wZS9CcmF0aXNsYXZhXCIsXG5cdFx0XHRcIkV1cm9wZS9Sb21lfEV1cm9wZS9TYW5fTWFyaW5vXCIsXG5cdFx0XHRcIkV1cm9wZS9Sb21lfEV1cm9wZS9WYXRpY2FuXCIsXG5cdFx0XHRcIkV1cm9wZS9XYXJzYXd8UG9sYW5kXCIsXG5cdFx0XHRcIkV1cm9wZS9adXJpY2h8RXVyb3BlL0J1c2luZ2VuXCIsXG5cdFx0XHRcIkV1cm9wZS9adXJpY2h8RXVyb3BlL1ZhZHV6XCIsXG5cdFx0XHRcIkluZGlhbi9DaHJpc3RtYXN8RXRjL0dNVC03XCIsXG5cdFx0XHRcIlBhY2lmaWMvQXVja2xhbmR8QW50YXJjdGljYS9NY011cmRvXCIsXG5cdFx0XHRcIlBhY2lmaWMvQXVja2xhbmR8QW50YXJjdGljYS9Tb3V0aF9Qb2xlXCIsXG5cdFx0XHRcIlBhY2lmaWMvQXVja2xhbmR8TlpcIixcblx0XHRcdFwiUGFjaWZpYy9DaGF0aGFtfE5aLUNIQVRcIixcblx0XHRcdFwiUGFjaWZpYy9FYXN0ZXJ8Q2hpbGUvRWFzdGVySXNsYW5kXCIsXG5cdFx0XHRcIlBhY2lmaWMvR3VhbXxQYWNpZmljL1NhaXBhblwiLFxuXHRcdFx0XCJQYWNpZmljL0hvbm9sdWx1fFBhY2lmaWMvSm9obnN0b25cIixcblx0XHRcdFwiUGFjaWZpYy9Ib25vbHVsdXxVUy9IYXdhaWlcIixcblx0XHRcdFwiUGFjaWZpYy9Ld2FqYWxlaW58S3dhamFsZWluXCIsXG5cdFx0XHRcIlBhY2lmaWMvUGFnb19QYWdvfFBhY2lmaWMvTWlkd2F5XCIsXG5cdFx0XHRcIlBhY2lmaWMvUGFnb19QYWdvfFBhY2lmaWMvU2Ftb2FcIixcblx0XHRcdFwiUGFjaWZpYy9QYWdvX1BhZ298VVMvU2Ftb2FcIixcblx0XHRcdFwiUGFjaWZpYy9QYWxhdXxFdGMvR01ULTlcIixcblx0XHRcdFwiUGFjaWZpYy9Qb2hucGVpfEV0Yy9HTVQtMTFcIixcblx0XHRcdFwiUGFjaWZpYy9Qb2hucGVpfFBhY2lmaWMvUG9uYXBlXCIsXG5cdFx0XHRcIlBhY2lmaWMvUG9ydF9Nb3Jlc2J5fEV0Yy9HTVQtMTBcIixcblx0XHRcdFwiUGFjaWZpYy9Qb3J0X01vcmVzYnl8UGFjaWZpYy9DaHV1a1wiLFxuXHRcdFx0XCJQYWNpZmljL1BvcnRfTW9yZXNieXxQYWNpZmljL1RydWtcIixcblx0XHRcdFwiUGFjaWZpYy9Qb3J0X01vcmVzYnl8UGFjaWZpYy9ZYXBcIixcblx0XHRcdFwiUGFjaWZpYy9UYXJhd2F8RXRjL0dNVC0xMlwiLFxuXHRcdFx0XCJQYWNpZmljL1RhcmF3YXxQYWNpZmljL0Z1bmFmdXRpXCIsXG5cdFx0XHRcIlBhY2lmaWMvVGFyYXdhfFBhY2lmaWMvV2FrZVwiLFxuXHRcdFx0XCJQYWNpZmljL1RhcmF3YXxQYWNpZmljL1dhbGxpc1wiXG5cdFx0XVxuXHR9KTtcblxuXG5cdHJldHVybiBtb21lbnQ7XG59KSk7IiwiLypcbiAqIFRpdGxlOiBUeXBld3JpdGVyIEpTXG4gKiBEZXNjcmlwdGlvbjogQSBuYXRpdmUgamF2YXNjcmlwdCBwbHVnaW4gdGhhdCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYW4gZWxlZ2VudCBhdXRvbWF0aWMgdHlwZXdyaXRlciBhbmltYXRpb24gZWZmZWN0IG9uIHdlYnNpdGVzLlxuICogQXV0aG9yOiBUYW1lZW0gU2FmaVxuICogV2Vic2l0ZTogaHR0cHM6Ly9zYWZpLm1lLnVrXG4gKiBWZXJzaW9uOiAxLjAuMFxuICovXG5cbihmdW5jdGlvbigpIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHQvLyBodHRwOi8vcGF1bGlyaXNoLmNvbS8yMDExL3JlcXVlc3RhbmltYXRpb25mcmFtZS1mb3Itc21hcnQtYW5pbWF0aW5nL1xuXHQvLyBodHRwOi8vbXkub3BlcmEuY29tL2Vtb2xsZXIvYmxvZy8yMDExLzEyLzIwL3JlcXVlc3RhbmltYXRpb25mcmFtZS1mb3Itc21hcnQtZXItYW5pbWF0aW5nXG5cdC8vIHJlcXVlc3RBbmltYXRpb25GcmFtZSBwb2x5ZmlsbCBieSBFcmlrIE3DtmxsZXIuIGZpeGVzIGZyb20gUGF1bCBJcmlzaCBhbmQgVGlubyBaaWpkZWxcblx0Ly8gTUlUIGxpY2Vuc2Vcblx0KGZ1bmN0aW9uKCkge1xuXHQgICAgdmFyIGxhc3RUaW1lID0gMDtcblx0ICAgIHZhciB2ZW5kb3JzID0gWydtcycsICdtb3onLCAnd2Via2l0JywgJ28nXTtcblx0ICAgIGZvcih2YXIgeCA9IDA7IHggPCB2ZW5kb3JzLmxlbmd0aCAmJiAhd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZTsgKyt4KSB7XG5cdCAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSA9IHdpbmRvd1t2ZW5kb3JzW3hdKydSZXF1ZXN0QW5pbWF0aW9uRnJhbWUnXTtcblx0ICAgICAgICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUgPSB3aW5kb3dbdmVuZG9yc1t4XSsnQ2FuY2VsQW5pbWF0aW9uRnJhbWUnXVxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHdpbmRvd1t2ZW5kb3JzW3hdKydDYW5jZWxSZXF1ZXN0QW5pbWF0aW9uRnJhbWUnXTtcblx0ICAgIH1cblxuXHQgICAgaWYgKCF3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKVxuXHQgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPSBmdW5jdGlvbihjYWxsYmFjaywgZWxlbWVudCkge1xuXHQgICAgICAgICAgICB2YXIgY3VyclRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcblx0ICAgICAgICAgICAgdmFyIHRpbWVUb0NhbGwgPSBNYXRoLm1heCgwLCAxNiAtIChjdXJyVGltZSAtIGxhc3RUaW1lKSk7XG5cdCAgICAgICAgICAgIHZhciBpZCA9IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBjYWxsYmFjayhjdXJyVGltZSArIHRpbWVUb0NhbGwpOyB9LFxuXHQgICAgICAgICAgICAgIHRpbWVUb0NhbGwpO1xuXHQgICAgICAgICAgICBsYXN0VGltZSA9IGN1cnJUaW1lICsgdGltZVRvQ2FsbDtcblx0ICAgICAgICAgICAgcmV0dXJuIGlkO1xuXHQgICAgICAgIH07XG5cblx0ICAgIGlmICghd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKVxuXHQgICAgICAgIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKGlkKSB7XG5cdCAgICAgICAgICAgIGNsZWFyVGltZW91dChpZCk7XG5cdCAgICAgICAgfTtcblx0fSgpKTtcblxuXHR3aW5kb3cuVHlwZXdyaXRlciA9IGZ1bmN0aW9uIFR5cGV3cml0ZXIoZWxlbWVudCwgb3B0aW9ucykge1xuXHRcdHRoaXMuX3NldHRpbmdzID0ge1xuXHRcdFx0Y3Vyc29yQW5pbWF0aW9uUGF1c2VkOiBmYWxzZSxcblx0XHRcdG9wYWNpdHlJbmNyZWFzaW5nOiBmYWxzZSxcblx0XHRcdGN1cnJlbnRPcGFjaXR5OiAxLFxuXHRcdFx0ZGVsYXllZFF1ZTogW10sXG5cdFx0XHRkZWxheUl0ZW1zQ291bnQ6IDAsXG5cdFx0XHRldmVudFF1ZTogW10sXG5cdFx0XHRjYWxsZWRFdmVudHM6IFtdLFxuXHRcdFx0ZXZlbnRSdW5uaW5nOiBmYWxzZSxcblx0XHRcdHRpbWVvdXQ6IGZhbHNlLFxuXHRcdFx0ZGVsYXlFeGVjdXRpb246IGZhbHNlLFxuXHRcdFx0ZnBzOiAoNjAvMTAwMCksXG5cdFx0XHR0eXBpbmdGcmFtZUNvdW50OiAwLFxuXHRcdFx0c3RyaW5nVG9UeXBlSFRNTEFycmF5OiBbXSxcblx0XHRcdGN1cnJlbnRUeXBlZENoYXJhY3RlcnM6IFtdLFxuXHRcdFx0dHlwaW5nOiBmYWxzZSxcblx0XHRcdHVzZWRJRHM6IFtdLFxuXHRcdFx0Y2hhckFtb3VudFRvRGVsZXRlOiBmYWxzZSxcblx0XHRcdHVzZXJPcHRpb25zOiB7fSxcblx0XHRcdGV2ZW50TG9vcFJlcnVuOiAwXG5cdFx0fTtcblxuXHRcdGlmKCFlbGVtZW50KSB7XG5cdFx0XHRyZXR1cm4gY29uc29sZS5lcnJvcignUGxlYXNlIGNob29zZSBhbiBET00gZWxlbWVudCBzbyB0aGF0IHR5cGUgd3JpdGVyIGNhbiBkaXNwbGF5IGl0c2VsZi4nKTtcblx0XHR9XG5cblx0XHQvLyBpZighb3B0aW9ucy5zdHJpbmdzICYmICEob3B0aW9ucy5zdHJpbmdzIGluc3RhbmNlb2YgQXJyYXkgfHwgdHlwZW9mIG9wdGlvbnMuc3RyaW5ncyA9PT0gJ3N0cmluZycpKSB7XG5cdFx0Ly8gXHRyZXR1cm4gY29uc29sZS5lcnJvcignUGxlYXNlIGVudGVyIGFuIGFycmF5IG9mIHN0cmluZ3MgZm9yIHRoZSB0eXBld3JpdGVyIGFuaW1hdGlvbiB0byB3b3JrLicpO1xuXHRcdC8vIH1cblxuXHRcdGlmKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1R5cGV3cml0ZXIgb25seSBhY2NlcHRzIHRoZSBvcHRpb25zIGFzIGFuIG9iamVjdC4nKTtcblx0XHR9XG5cblx0XHR0aGlzLl9zZXR0aW5ncy51c2VyT3B0aW9ucyA9IG9wdGlvbnM7XG5cblx0XHR0aGlzLmRlZmF1bHRfb3B0aW9ucyA9IHtcblx0XHRcdHN0cmluZ3M6IGZhbHNlLFxuXHRcdFx0Y3Vyc29yQ2xhc3NOYW1lOiAndHlwZXdyaXRlci1jdXJzb3InLFxuXHRcdFx0Y3Vyc29yOiAnfCcsXG5cdFx0XHRhbmltYXRlQ3Vyc29yOiB0cnVlLFxuXHRcdFx0YmxpbmtTcGVlZDogNTAsXG5cdFx0XHR0eXBpbmdTcGVlZDogJ25hdHVyYWwnLFxuXHRcdFx0ZGVsZXRlU3BlZWQ6ICduYXR1cmFsJyxcblx0XHRcdGNoYXJTcGFuQ2xhc3NOYW1lOiAndHlwZXdyaXRlci1jaGFyJyxcblx0XHRcdHdyYXBwZXJDbGFzc05hbWU6ICd0eXBld3JpdGVyLXdyYXBwZXInLFxuXHRcdFx0bG9vcDogZmFsc2UsXG5cdFx0XHRhdXRvU3RhcnQ6IGZhbHNlLFxuXHRcdFx0ZGV2TW9kZTogZmFsc2Vcblx0XHR9O1xuXG5cdFx0dGhpcy5vcHRpb25zID0gdGhpcy5fc2V0dXBPcHRpb25zKG9wdGlvbnMpO1xuXG5cdFx0dGhpcy5lbCA9IGVsZW1lbnQ7XG5cblx0XHR0aGlzLl9zZXR1cFR5cHdyaXRlcldyYXBwZXIoKTtcblxuXHRcdHRoaXMuX3N0YXJ0Q3Vyc29yQW5pbWF0aW9uKCk7XG5cblx0XHRpZih0aGlzLm9wdGlvbnMuYXV0b1N0YXJ0ID09PSB0cnVlICYmIHRoaXMub3B0aW9ucy5zdHJpbmdzKSB7XG5cdFx0XHR0aGlzLnR5cGVPdXRBbGxTdHJpbmdzKCk7XG5cdFx0fVxuXG5cdH07XG5cblx0dmFyIFR5cGV3cml0ZXJQcm90b3R5cGUgPSB3aW5kb3cuVHlwZXdyaXRlci5wcm90b3R5cGU7XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24oKSB7XG5cdFx0dGhpcy5fYWRkVG9FdmVudFF1ZSh0aGlzLl9zdG9wRXZlbnRMb29wKVxuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuc3RhcnQgPSBmdW5jdGlvbigpIHtcblx0XHR0aGlzLl9zdGFydEV2ZW50TG9vcCgpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUucmVydW4gPSBmdW5jdGlvbigpIHtcblx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKHRoaXMuX3JlcnVuQ2FsbGVkRXZlbnRzKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLnR5cGVTdHJpbmcgPSBmdW5jdGlvbihzdHJpbmcpIHtcblx0XHRpZighc3RyaW5nIHx8IHR5cGVvZiBzdHJpbmcgIT0gJ3N0cmluZycpIHtcblx0XHRcdHJldHVybiBjb25zb2xlLmVycm9yKCdQbGVhc2UgZW50ZXIgYSBzdHJpbmcgYXMgdGhlIHBhcmFtYXRlci4nKTtcblx0XHR9XG5cblx0XHR2YXIgc3RyaW5nX2NoYXJzID0gdGhpcy5fZ2V0Q2hhcmFjdGVycyhzdHJpbmcpO1xuXG5cdFx0dGhpcy5fYWRkVG9FdmVudFF1ZShbdGhpcy5fdHlwZUNoYXJhY3RlcnMsIFtzdHJpbmdfY2hhcnNdXSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5kZWxldGVBbGwgPSBmdW5jdGlvbigpIHtcblx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKFt0aGlzLl9kZWxldGVDaGFycywgWydhbGwnXV0pO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuZGVsZXRlQ2hhcnMgPSBmdW5jdGlvbihhbW91bnQpIHtcblx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKFt0aGlzLl9kZWxldGVDaGFycywgW2Ftb3VudF1dKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLnBhdXNlRm9yID0gZnVuY3Rpb24obXMpIHtcblx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKFt0aGlzLl9wYXVzZUZvciwgW21zXV0pO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUudHlwZU91dEFsbFN0cmluZ3MgPSBmdW5jdGlvbigpIHtcblx0XHR2YXIgY2hhcmFjdGVyc19hcnJheSA9IHRoaXMuX2dldFN0cmluZ3NBc0NoYXJzQXJyYXkoKTtcblxuXHRcdGlmKGNoYXJhY3RlcnNfYXJyYXkubGVuZ3RoID09PSAxKSB7XG5cdFx0XHR0aGlzLl90eXBlQ2hhcmFjdGVycyhjaGFyYWN0ZXJzX2FycmF5WzBdKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yKHZhciBpID0gMCwgbGVuZ3RoID0gY2hhcmFjdGVyc19hcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuXHRcdFx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKFt0aGlzLl90eXBlQ2hhcmFjdGVycywgW2NoYXJhY3RlcnNfYXJyYXlbaV1dXSk7XG5cdFx0XHRcdHRoaXMucGF1c2VGb3IodGhpcy5fcmFuZG9tSW50ZWdlcigxNTAwLCAyNTAwKSk7XG5cdFx0XHRcdHRoaXMuZGVsZXRlQWxsKCk7XG5cdFx0XHRcdHRoaXMucGF1c2VGb3IodGhpcy5fcmFuZG9tSW50ZWdlcigxNTAwLCAyNTAwKSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLmNoYW5nZVNldHRpbmdzID0gZnVuY3Rpb24obmV3X3NldHRpbmdzKSB7XG5cdFx0aWYoIW5ld19zZXR0aW5ncyAmJiB0eXBlb2YgbmV3X3NldHRpbmdzICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1R5cGV3cml0ZXIgd2lsbCBvbmx5IGFjY2VwdCBhbiBvYmplY3QgYXMgdGhlIHNldHRpbmdzLicpO1xuXHRcdH1cblxuXHRcdHRoaXMuX2FkZFRvRXZlbnRRdWUoW3RoaXMuX2NoYW5nZVNldHRpbmdzLCBbSlNPTi5zdHJpbmdpZnkobmV3X3NldHRpbmdzKV1dKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5jaGFuZ2VCbGlua1NwZWVkID0gZnVuY3Rpb24obmV3X3NwZWVkKSB7XG5cdFx0aWYoIW5ld19zcGVlZCAmJiB0eXBlb2YgbmV3X3NwZWVkICE9PSAnbnVtYmVyJykge1xuXHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1BsZWFzZSBlbnRlciBhIG51bWJlciBmb3IgdGhlIG5ldyBibGluayBzcGVlZC4nKTtcblx0XHR9XG5cblx0XHR0aGlzLmNoYW5nZVNldHRpbmdzKHtcblx0XHRcdGJsaW5rU3BlZWQ6IG5ld19zcGVlZFxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5jaGFuZ2VUeXBpbmdTcGVlZCA9IGZ1bmN0aW9uKG5ld19zcGVlZCkge1xuXHRcdGlmKCFuZXdfc3BlZWQgJiYgdHlwZW9mIG5ld19zcGVlZCAhPT0gJ251bWJlcicpIHtcblx0XHRcdHJldHVybiBjb25zb2xlLmVycm9yKCdQbGVhc2UgZW50ZXIgYSBudW1iZXIgZm9yIHRoZSBuZXcgdHlwaW5nIHNwZWVkLicpO1xuXHRcdH1cblxuXHRcdHZhciBuZXdfc2V0dGluZ3MgPSB7XG5cdFx0XHR0eXBpbmdTcGVlZDogbmV3X3NwZWVkXG5cdFx0fTtcblxuXHRcdHRoaXMuY2hhbmdlU2V0dGluZ3Moe1xuXHRcdFx0dHlwaW5nU3BlZWQ6IG5ld19zcGVlZFxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5jaGFuZ2VEZWxldGVTcGVlZCA9IGZ1bmN0aW9uKG5ld19zcGVlZCkge1xuXHRcdGlmKCFuZXdfc3BlZWQgJiYgdHlwZW9mIG5ld19zcGVlZCAhPT0gJ251bWJlcicpIHtcblx0XHRcdHJldHVybiBjb25zb2xlLmVycm9yKCdQbGVhc2UgZW50ZXIgYSBudW1iZXIgZm9yIHRoZSBuZXcgZGVsZXRlIHNwZWVkLicpO1xuXHRcdH1cblxuXHRcdHRoaXMuY2hhbmdlU2V0dGluZ3Moe1xuXHRcdFx0Y2hhbmdlRGVsZXRlU3BlZWQ6IG5ld19zcGVlZFxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fcmVydW5DYWxsZWRFdmVudHMgPSBmdW5jdGlvbigpIHtcblx0XHRpZih0aGlzLl9zZXR0aW5ncy5jdXJyZW50VHlwZWRDaGFyYWN0ZXJzLmxlbmd0aCA+IDApIHtcblx0XHRcdHRoaXMuZGVsZXRlQWxsKCk7XG5cdFx0XHR0aGlzLl9yZXNldEV2ZW50TG9vcCgncmVydW5DYWxsZWRFdmVudHMnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fc2V0dGluZ3MuZXZlbnRRdWUgPSB0aGlzLl9zZXR0aW5ncy5jYWxsZWRFdmVudHM7XG5cdFx0XHR0aGlzLl9zZXR0aW5ncy5jYWxsZWRFdmVudHMgPSBbXTtcblx0XHRcdHRoaXMub3B0aW9ucyA9IHRoaXMuX3NldHVwT3B0aW9ucyh0aGlzLl9zZXR0aW5ncy51c2VyT3B0aW9ucyk7XG5cdFx0XHR0aGlzLl9zZXR0aW5ncy51c2VkSURzID0gW107XG5cdFx0XHR0aGlzLmNoYXJBbW91bnRUb0RlbGV0ZSA9IGZhbHNlO1xuXHRcdFx0dGhpcy5fc3RhcnRFdmVudExvb3AoKTtcblx0XHR9XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fZGVsZXRlQ2hhcnMgPSBmdW5jdGlvbihhbW91bnQpIHtcblxuXG5cdFx0aWYoYW1vdW50KSB7XG5cdFx0XHR0aGlzLl9zZXR0aW5ncy5jaGFyQW1vdW50VG9EZWxldGUgPSBhbW91bnQ7XG5cdFx0fVxuXHRcdHRoaXMuX2RlbGV0aW5nQ2hhcklkc0FuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fZGVsZXRpbmdDaGFyQW5pbWF0aW9uRnJhbWUuYmluZCh0aGlzKSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fcGF1c2VGb3IgPSBmdW5jdGlvbihtcykge1xuXHRcdHZhciBzZWxmID0gdGhpcztcblx0XHRzZWxmLl9zZXR0aW5ncy5ldmVudFJ1bm5pbmcgPSB0cnVlO1xuXHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cdFx0XHRzZWxmLl9yZXNldEV2ZW50TG9vcCgncGF1c2VGb3InKTtcblx0XHR9LCBtcyk7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fY2hhbmdlU2V0dGluZ3MgPSBmdW5jdGlvbihuZXdfc2V0dGluZ3MpIHtcblx0XHR0aGlzLm9wdGlvbnMgPSB0aGlzLl9zZXR1cE9wdGlvbnMoSlNPTi5wYXJzZShuZXdfc2V0dGluZ3NbMF0pKTtcblx0XHR0aGlzLl9yZXNldEV2ZW50TG9vcCgnY2hhbmdlU2V0dGluZ3MnKTtcblxuXHRcdGlmKHRoaXMub3B0aW9ucy5kZXZNb2RlKSB7XG5cdFx0XHRjb25zb2xlLmxvZygnTmV3IHNldHRpbmdzJywgdGhpcy5vcHRpb25zKTtcblx0XHR9XG5cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9kZWxldGluZ0NoYXJBbmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBzZWxmID0gdGhpcztcblx0XHR2YXIgZGVsZXRlX3NwZWVkID0gdGhpcy5vcHRpb25zLmRlbGV0ZVNwZWVkO1xuXHRcdHZhciB0eXBld3JpdGVyX3dyYXBwZXJfY2xhc3NfbmFtZSA9IHNlbGYub3B0aW9ucy53cmFwcGVyQ2xhc3NOYW1lO1xuXHRcdHZhciBjdXJyZW50X3R5cGVkX2NoYXJfaWRzID0gc2VsZi5fc2V0dGluZ3MuY3VycmVudFR5cGVkQ2hhcmFjdGVycztcblx0XHR2YXIgY2hhcl9hbW91bnRfdG9fZGVsZXRlID0gc2VsZi5fc2V0dGluZ3MuY2hhckFtb3VudFRvRGVsZXRlO1xuXG5cdFx0aWYoIXNlbGYuX3NldHRpbmdzLmNoYXJBbW91bnRUb0RlbGV0ZSB8fCBzZWxmLl9zZXR0aW5ncy5jaGFyQW1vdW50VG9EZWxldGUgPT09IDAgfHwgY3VycmVudF90eXBlZF9jaGFyX2lkcyA9PT0gMCkge1xuXHRcdFx0c2VsZi5fcmVzZXRFdmVudExvb3AoJ2RlbGV0aW5nQ2hhckFuaW1hdGlvbkZyYW1lJyk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZihkZWxldGVfc3BlZWQgPT0gJ25hdHVyYWwnKSB7XG5cdFx0XHRkZWxldGVfc3BlZWQgPSBzZWxmLl9yYW5kb21JbnRlZ2VyKDUwLCAxNTApO1xuXHRcdH1cblxuXHRcdGlmKGNoYXJfYW1vdW50X3RvX2RlbGV0ZSA9PSAnYWxsJykge1xuXHRcdFx0Y2hhcl9hbW91bnRfdG9fZGVsZXRlID0gY3VycmVudF90eXBlZF9jaGFyX2lkcy5sZW5ndGg7XG5cdFx0XHRzZWxmLl9zZXR0aW5ncy5jaGFyQW1vdW50VG9EZWxldGUgPSBjaGFyX2Ftb3VudF90b19kZWxldGU7XG5cdFx0fVxuXG5cdFx0c2V0VGltZW91dChmdW5jdGlvbigpIHtcblx0XHRcdGlmKHNlbGYuX3NldHRpbmdzLmNoYXJBbW91bnRUb0RlbGV0ZSkge1xuXHRcdFx0XHR2YXIgbGFzdF90eXBlZF9jaGFyX2luZGV4ID0gY3VycmVudF90eXBlZF9jaGFyX2lkcy5sZW5ndGggLSAxO1xuXHRcdFx0XHR2YXIgZ2V0X2xhc3RfdHlwZWRfY2hhciA9IGN1cnJlbnRfdHlwZWRfY2hhcl9pZHNbbGFzdF90eXBlZF9jaGFyX2luZGV4XTtcblxuXHRcdFx0XHRzZWxmLl9zZXR0aW5ncy5jdXJyZW50VHlwZWRDaGFyYWN0ZXJzLnNwbGljZShsYXN0X3R5cGVkX2NoYXJfaW5kZXgsIDEpO1xuXG5cdFx0XHRcdHZhciBjaGFyX3RvX2RlbGV0ZV9lbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGdldF9sYXN0X3R5cGVkX2NoYXIpO1xuXG5cdFx0XHRcdGlmKGNoYXJfdG9fZGVsZXRlX2VsKSB7XG5cdFx0XHRcdFx0dmFyIHR5cGV3cml0ZXJfd3JhcHBlcl9lbCA9IHNlbGYuZWwucXVlcnlTZWxlY3RvcignLicgKyB0eXBld3JpdGVyX3dyYXBwZXJfY2xhc3NfbmFtZSk7XG5cdFx0XHRcdFx0dHlwZXdyaXRlcl93cmFwcGVyX2VsLnJlbW92ZUNoaWxkKGNoYXJfdG9fZGVsZXRlX2VsKTtcblx0XHRcdFx0XHRzZWxmLl9zZXR0aW5ncy5jaGFyQW1vdW50VG9EZWxldGUgPSBjaGFyX2Ftb3VudF90b19kZWxldGUgLSAxO1xuXG5cdFx0XHRcdFx0aWYoc2VsZi5vcHRpb25zLmRldk1vZGUpIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdEZWxldGVkIGNoYXIgd2l0aCBJRCcsIGdldF9sYXN0X3R5cGVkX2NoYXIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHR9XG5cblx0XHRcdHNlbGYuX2RlbGV0aW5nQ2hhcklkc0FuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc2VsZi5fZGVsZXRpbmdDaGFyQW5pbWF0aW9uRnJhbWUuYmluZChzZWxmKSk7XG5cblx0XHR9LCBkZWxldGVfc3BlZWQpO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX3NldHVwT3B0aW9ucyA9IGZ1bmN0aW9uKG5ld19vcHRpb25zKSB7XG5cdCAgICB2YXIgbWVyZ2VkX29wdGlvbnMgPSB7fTtcblxuXHQgICAgZm9yICh2YXIgYXR0cm5hbWUgaW4gdGhpcy5kZWZhdWx0X29wdGlvbnMpIHtcblx0ICAgIFx0bWVyZ2VkX29wdGlvbnNbYXR0cm5hbWVdID0gdGhpcy5kZWZhdWx0X29wdGlvbnNbYXR0cm5hbWVdO1xuXHQgICAgfVxuXG5cdCAgICBpZih0aGlzLl9zZXR0aW5ncy51c2VyT3B0aW9ucykge1xuXHQgICAgXHRmb3IgKHZhciBhdHRybmFtZSBpbiB0aGlzLl9zZXR0aW5ncy51c2VyT3B0aW9ucykge1xuXHRcdCAgICBcdG1lcmdlZF9vcHRpb25zW2F0dHJuYW1lXSA9IHRoaXMuX3NldHRpbmdzLnVzZXJPcHRpb25zW2F0dHJuYW1lXTtcblx0XHQgICAgfVxuXHQgICAgfVxuXG5cdCAgICBmb3IgKHZhciBhdHRybmFtZSBpbiBuZXdfb3B0aW9ucykge1xuXHQgICAgXHRtZXJnZWRfb3B0aW9uc1thdHRybmFtZV0gPSBuZXdfb3B0aW9uc1thdHRybmFtZV07XG5cdCAgICB9XG5cblx0ICAgIHJldHVybiBtZXJnZWRfb3B0aW9ucztcblx0fVxuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX2FkZFRvRXZlbnRRdWUgPSBmdW5jdGlvbihldmVudCkge1xuXHRcdHRoaXMuX3NldHRpbmdzLmV2ZW50UXVlLnB1c2goZXZlbnQpO1xuXHRcdGlmKHRoaXMuX3NldHRpbmdzLmV2ZW50UXVlLmxlbmd0aCA+IDAgJiYgIXRoaXMuX3NldHRpbmdzLmV2ZW50UnVubmluZyAmJiB0aGlzLm9wdGlvbnMuYXV0b1N0YXJ0KSB7XG5cdFx0XHR0aGlzLl9zdGFydEV2ZW50TG9vcCgpO1xuXHRcdH1cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9zdGFydEV2ZW50TG9vcCA9IGZ1bmN0aW9uKCkge1xuXHRcdGlmKHRoaXMub3B0aW9ucy5kZXZNb2RlKSB7XG5cdFx0XHRjb25zb2xlLmxvZygnRXZlbnQgbG9vcCBzdGFydGVkLicpO1xuXHRcdH1cblxuXHRcdGlmKCF0aGlzLl9zZXR0aW5ncy5ldmVudFJ1bm5pbmcpIHtcblxuXHRcdFx0aWYodGhpcy5fc2V0dGluZ3MuZXZlbnRRdWUubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR0aGlzLmV2ZW50TG9vcFJlcnVuID0gMDtcblx0XHRcdFx0dmFyIGZpcnN0X2V2ZW50ID0gdGhpcy5fc2V0dGluZ3MuZXZlbnRRdWVbMF07XG5cdFx0XHRcdGlmKHR5cGVvZiBmaXJzdF9ldmVudCA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuZXZlbnRSdW5uaW5nID0gdHJ1ZTtcblx0XHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jYWxsZWRFdmVudHMucHVzaChmaXJzdF9ldmVudCk7XG5cdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuZXZlbnRRdWUuc3BsaWNlKDAsIDEpO1xuXHRcdFx0XHRcdGZpcnN0X2V2ZW50LmNhbGwodGhpcyk7XG5cdFx0XHRcdFx0aWYodGhpcy5vcHRpb25zLmRldk1vZGUpIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdFdmVudCBzdGFydGVkLicpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmKGZpcnN0X2V2ZW50IGluc3RhbmNlb2YgQXJyYXkpIHtcblx0XHRcdFx0XHRpZih0eXBlb2YgZmlyc3RfZXZlbnRbMF0gPT0gJ2Z1bmN0aW9uJyAmJiBmaXJzdF9ldmVudFsxXSBpbnN0YW5jZW9mIEFycmF5KSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5ldmVudFJ1bm5pbmcgPSB0cnVlO1xuXHRcdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuY2FsbGVkRXZlbnRzLnB1c2goZmlyc3RfZXZlbnQpO1xuXHRcdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuZXZlbnRRdWUuc3BsaWNlKDAsIDEpO1xuXHRcdFx0XHRcdFx0Zmlyc3RfZXZlbnRbMF0uY2FsbCh0aGlzLCBmaXJzdF9ldmVudFsxXSk7XG5cdFx0XHRcdFx0XHRpZih0aGlzLm9wdGlvbnMuZGV2TW9kZSkge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnRXZlbnQgc3RhcnRlZC4nKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHRoaXMuX2V2ZW50UXVlQW5pbWF0aW9uID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl9zdGFydEV2ZW50TG9vcC5iaW5kKHRoaXMpKTtcblx0XHR9XG5cblx0XHRpZighdGhpcy5fc2V0dGluZ3MuZXZlbnRSdW5uaW5nICYmIHRoaXMuX3NldHRpbmdzLmV2ZW50UXVlLmxlbmd0aCA8PSAwKSB7XG5cdFx0XHR2YXIgc2VsZiA9IHRoaXM7XG5cdFx0XHRzZWxmLl9zdG9wRXZlbnRMb29wKCk7XG5cdFx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZihzZWxmLm9wdGlvbnMubG9vcCkge1xuXHRcdFx0XHRcdHNlbGYuZXZlbnRMb29wUmVydW4rKztcblx0XHRcdFx0XHRpZihzZWxmLm9wdGlvbnMuZGV2TW9kZSkge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ0JlZm9yZSBMb29wIFN0YXRlJywgc2VsZi5fc2V0dGluZ3MpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZihzZWxmLmV2ZW50TG9vcFJlcnVuID4gNCkge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcignTWF4aW11bSBhbW91bnQgb2YgbG9vcCByZXRyaWVzIHJlYWNoZWQuJyk7XG5cdFx0XHRcdFx0XHRzZWxmLl9zdG9wRXZlbnRMb29wKCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGlmKHNlbGYub3B0aW9ucy5kZXZNb2RlKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdMb29waW5nIGV2ZW50cy4nKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHNlbGYuX3JlcnVuQ2FsbGVkRXZlbnRzKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9LCAxMDAwKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9yZXNldEV2ZW50TG9vcCA9IGZ1bmN0aW9uKG5hbWUpIHtcblx0XHR2YXIgZXZlbnRfbmFtZSA9IG5hbWUgfHwgJ0V2ZW50Jztcblx0XHR0aGlzLl9zZXR0aW5ncy5ldmVudFJ1bm5pbmcgPSBmYWxzZTtcblx0XHR0aGlzLl9zdGFydEV2ZW50TG9vcCgpO1xuXHRcdGlmKHRoaXMub3B0aW9ucy5kZXZNb2RlKSB7XG5cdFx0XHRjb25zb2xlLmxvZyhldmVudF9uYW1lLCAnRmluaXNoZWQnKTtcblx0XHR9XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fc3RvcEV2ZW50TG9vcCA9IGZ1bmN0aW9uKCkge1xuXHRcdHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9ldmVudFF1ZUFuaW1hdGlvbik7XG5cdFx0aWYodGhpcy5vcHRpb25zLmRldk1vZGUpIHtcblx0XHRcdGNvbnNvbGUubG9nKCdFdmVudCBsb29wIHN0b3BwZWQuJyk7XG5cdFx0fVxuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX3NldHVwVHlwd3JpdGVyV3JhcHBlciA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciB0eXBld3JpdGVyX3dyYXBwZXJfY2xhc3NfbmFtZSA9IHRoaXMub3B0aW9ucy53cmFwcGVyQ2xhc3NOYW1lO1xuXHRcdHZhciB0eXBld3JpdGVyX3dyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0dHlwZXdyaXRlcl93cmFwcGVyLmNsYXNzTmFtZSA9IHR5cGV3cml0ZXJfd3JhcHBlcl9jbGFzc19uYW1lO1xuXHRcdHRoaXMuZWwuaW5uZXJIVE1MID0gJyc7XG5cdFx0dGhpcy5lbC5hcHBlbmRDaGlsZCh0eXBld3JpdGVyX3dyYXBwZXIpO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX3R5cGVDaGFyYWN0ZXJzID0gZnVuY3Rpb24oY2hhcmFjdGVyc19hcnJheSkge1xuXHRcdHRoaXMuX3NldHRpbmdzLnN0cmluZ1RvVHlwZUhUTUxBcnJheSA9IHRoaXMuX2NvbnZlcnRDaGFyc1RvSFRNTChjaGFyYWN0ZXJzX2FycmF5KTtcblx0XHR0aGlzLl90eXBpbmdBbmltYXRpb24gPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX3R5cGluZ0FuaW1hdGlvbkZyYW1lLmJpbmQodGhpcywgY2hhcmFjdGVyc19hcnJheS5sZW5ndGgpKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl90eXBpbmdBbmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKHRvdGFsX2l0ZW1zKSB7XG5cdFx0dmFyIHNlbGYgPSB0aGlzO1xuXHRcdHZhciB0eXBpbmdfc3BlZWQgPSB0aGlzLm9wdGlvbnMudHlwaW5nU3BlZWQ7XG5cdFx0dmFyIHR5cGV3cml0ZXJfd3JhcHBlcl9jbGFzc19uYW1lID0gc2VsZi5vcHRpb25zLndyYXBwZXJDbGFzc05hbWU7XG5cblx0XHRpZihzZWxmLl9zZXR0aW5ncy5zdHJpbmdUb1R5cGVIVE1MQXJyYXkubGVuZ3RoID09IDApIHtcblx0XHRcdHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShzZWxmLl90eXBpbmdBbmltYXRpb24pO1xuXHRcdFx0dGhpcy5fcmVzZXRFdmVudExvb3AoJ3R5cGluZ0FuaW1hdGlvbkZyYW1lJyk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZih0eXBpbmdfc3BlZWQgPT0gJ25hdHVyYWwnKSB7XG5cdFx0XHR0eXBpbmdfc3BlZWQgPSB0aGlzLl9yYW5kb21JbnRlZ2VyKDUwLCAxNTApO1xuXHRcdH1cblxuXHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgZWxfaW5uZXJfaHRtbCA9IHNlbGYuZWwuaW5uZXJIVE1MO1xuXHRcdFx0dmFyIGl0ZW1fdG9fdHlwZSA9IHNlbGYuX3NldHRpbmdzLnN0cmluZ1RvVHlwZUhUTUxBcnJheVswXTtcblx0XHRcdHNlbGYuZWwucXVlcnlTZWxlY3RvcignLicgKyB0eXBld3JpdGVyX3dyYXBwZXJfY2xhc3NfbmFtZSkuYXBwZW5kQ2hpbGQoaXRlbV90b190eXBlLmVsKTtcblx0XHRcdHNlbGYuX3NldHRpbmdzLmN1cnJlbnRUeXBlZENoYXJhY3RlcnMucHVzaChpdGVtX3RvX3R5cGUuaWQpO1xuXHRcdFx0c2VsZi5fc2V0dGluZ3Muc3RyaW5nVG9UeXBlSFRNTEFycmF5LnNwbGljZSgwLCAxKTtcblx0XHRcdHNlbGYuX3R5cGluZ0FuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc2VsZi5fdHlwaW5nQW5pbWF0aW9uRnJhbWUuYmluZChzZWxmLCB0b3RhbF9pdGVtcykpO1xuXHRcdFx0aWYoc2VsZi5vcHRpb25zLmRldk1vZGUpIHtcblx0XHRcdFx0Y29uc29sZS5sb2coJ1R5cGVkJywgaXRlbV90b190eXBlKTtcblx0XHRcdH1cblx0XHR9LCB0eXBpbmdfc3BlZWQpO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX2NvbnZlcnRDaGFyc1RvSFRNTCA9IGZ1bmN0aW9uKGNoYXJzKSB7XG5cdFx0dmFyIGNoYXJzX2h0bWxfd3JhcF9hcnJheSA9IFtdO1xuXHRcdHZhciBjaGFyX2NsYXNzX25hbWUgPSB0aGlzLm9wdGlvbnMuY2hhclNwYW5DbGFzc05hbWU7XG5cdFx0dmFyIGNoYXJzX2FycmF5ID0gY2hhcnNbMF07XG5cblx0XHRmb3IodmFyIGkgPSAwLCBsZW5ndGggPSBjaGFyc19hcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGNoYXJfZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRcdHZhciBjaGFyX2lkID0gdGhpcy5fZ2VuZXJhdGVVbmlxdWVJRCgpO1xuXHRcdFx0Y2hhcl9lbGVtZW50LmlkID0gY2hhcl9pZDtcblx0XHRcdGNoYXJfZWxlbWVudC5jbGFzc05hbWUgPSBjaGFyX2NsYXNzX25hbWUgKyAnIHR5cGV3cml0ZXItaXRlbS0nICsgaTtcblx0XHRcdGNoYXJfZWxlbWVudC5pbm5lckhUTUwgPSBjaGFyc19hcnJheVtpXTtcblx0XHRcdGNoYXJzX2h0bWxfd3JhcF9hcnJheS5wdXNoKHtcblx0XHRcdFx0aWQ6IGNoYXJfaWQsXG5cdFx0XHRcdGVsOiBjaGFyX2VsZW1lbnRcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdHJldHVybiBjaGFyc19odG1sX3dyYXBfYXJyYXk7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fZ2V0Q2hhcmFjdGVycyA9IGZ1bmN0aW9uKHN0cmluZykge1xuXHRcdGlmKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiBzdHJpbmcuc3BsaXQoXCJcIik7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fZ2V0U3RyaW5nc0FzQ2hhcnNBcnJheSA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBzdHJpbmdzX2FycmF5X2NoZWNrID0gdGhpcy5vcHRpb25zLnN0cmluZ3MgaW5zdGFuY2VvZiBBcnJheTtcblx0XHR2YXIgc3RyaW5nc19zdHJpbmdfY2hlY2sgPSB0eXBlb2YgdGhpcy5vcHRpb25zLnN0cmluZ3MgPT09ICdzdHJpbmcnO1xuXHRcdGlmKCFzdHJpbmdzX2FycmF5X2NoZWNrKSB7XG5cdFx0XHRpZighc3RyaW5nc19zdHJpbmdfY2hlY2spIHtcblx0XHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1R5cGV3cml0ZXIgb25seSBhY2NlcHRzIHN0cmluZ3Mgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncyBhcyB0aGUgaW5wdXQuJyk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gW3RoaXMub3B0aW9ucy5zdHJpbmdzLnNwbGl0KFwiXCIpXTtcblx0XHR9XG5cblx0XHR2YXIgc3RyaW5nc19jaGFyc19hcnJheSA9IFtdO1xuXG5cdFx0Zm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IHRoaXMub3B0aW9ucy5zdHJpbmdzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgc3RyaW5nX2NoYXJzID0gdGhpcy5fZ2V0Q2hhcmFjdGVycyh0aGlzLm9wdGlvbnMuc3RyaW5nc1tpXSk7XG5cdFx0XHRpZighc3RyaW5nX2NoYXJzKSB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ1BsZWFzZSBlbnRlciBvbmx5IHN0cmluZ3MuJyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0c3RyaW5nc19jaGFyc19hcnJheS5wdXNoKHN0cmluZ19jaGFycyk7XG4gICAgXHR9XG5cbiAgICBcdHJldHVybiBzdHJpbmdzX2NoYXJzX2FycmF5O1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX2N1cnNvckFuaW1hdGlvbkZyYW1lID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYoIXRoaXMuX3NldHRpbmdzLmN1cnNvckFuaW1hdGlvblBhdXNlZCkge1xuXHRcdFx0dmFyIGJsaW5rX3NwZWVkID0gdGhpcy5vcHRpb25zLmJsaW5rU3BlZWQ7XG5cdFx0XHR2YXIgb3BhY2l0eV9hbW91bnQgPSAoMS8xMDAwKSAqIGJsaW5rX3NwZWVkO1xuXG5cdFx0XHR2YXIgY3Vyc29yX2VsID0gdGhpcy5lbC5xdWVyeVNlbGVjdG9yKCcudHlwZXdyaXRlci1jdXJzb3InKTtcblxuXHRcdFx0aWYodGhpcy5fc2V0dGluZ3Mub3BhY2l0eUluY3JlYXNpbmcgPT0gdHJ1ZSkge1xuXHRcdFx0XHRpZih0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSA+PSAxKSB7XG5cdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3Mub3BhY2l0eUluY3JlYXNpbmcgPSBmYWxzZTtcblx0XHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSA9IDE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSArPSBvcGFjaXR5X2Ftb3VudDtcblx0XHRcdH1cblxuXHRcdFx0aWYodGhpcy5fc2V0dGluZ3Mub3BhY2l0eUluY3JlYXNpbmcgPT0gZmFsc2UpIHtcblx0XHRcdFx0aWYodGhpcy5fc2V0dGluZ3MuY3VycmVudE9wYWNpdHkgPD0gMCkge1xuXHRcdFx0XHRcdHRoaXMuX3NldHRpbmdzLm9wYWNpdHlJbmNyZWFzaW5nID0gdHJ1ZTtcblx0XHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSA9IDA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSAtPSBvcGFjaXR5X2Ftb3VudDtcblx0XHRcdH1cblxuXHRcdFx0Y3Vyc29yX2VsLnN0eWxlLm9wYWNpdHkgPSB0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eTtcblx0XHRcdHRoaXMuX2N1cnNvckFuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fY3Vyc29yQW5pbWF0aW9uRnJhbWUuYmluZCh0aGlzKSk7XG5cdFx0fVxuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuYXBwZW5kVGV4dCA9IGZ1bmN0aW9uKHRleHQpe1xuXHQgICAgdGhpcy5fYWRkVG9FdmVudFF1ZShbdGhpcy5fYXBwZW5kVGV4dCwgW3RleHRdXSlcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fYXBwZW5kVGV4dCA9IGZ1bmN0aW9uKHRleHQpe1xuICAgICAgICAgICAgdmFyIGNoYXJfY2xhc3NfbmFtZSA9IHRoaXMub3B0aW9ucy5jaGFyU3BhbkNsYXNzTmFtZTtcbiAgICAgICAgICAgIHZhciBjaGFyX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgICAgICB2YXIgY2hhcl9pZCA9IHRoaXMuX2dlbmVyYXRlVW5pcXVlSUQoKTtcbiAgICAgICAgICAgIGNoYXJfZWxlbWVudC5pZCA9IGNoYXJfaWQ7XG4gICAgICAgICAgICBjaGFyX2VsZW1lbnQuY2xhc3NOYW1lID0gY2hhcl9jbGFzc19uYW1lICsgJyBkb20tYXBwZW5kZWQnXG4gICAgICAgICAgICBjaGFyX2VsZW1lbnQuaW5uZXJIVE1MID0gdGV4dFxuICAgICAgICAgICAgdmFyIGl0ZW1zID0gIFtdXG4gICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogY2hhcl9pZCxcbiAgICAgICAgICAgICAgICBlbDogY2hhcl9lbGVtZW50XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5fc2V0dGluZ3Muc3RyaW5nVG9UeXBlSFRNTEFycmF5ID0gaXRlbXNcblxuICAgICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl90eXBpbmdBbmltYXRpb25GcmFtZS5iaW5kKHRoaXMsIDEpKTtcblxuICAgIH1cblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9zdGFydEN1cnNvckFuaW1hdGlvbiA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBjdXJzb3IgPSB0aGlzLm9wdGlvbnMuY3Vyc29yO1xuXHRcdHZhciBjdXJzb3JfY2xhc3NfbmFtZSA9IHRoaXMub3B0aW9ucy5jdXJzb3JDbGFzc05hbWU7XG5cblx0XHR2YXIgY3Vyc29yX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0Y3Vyc29yX2VsZW1lbnQuY2xhc3NOYW1lID0gY3Vyc29yX2NsYXNzX25hbWU7XG5cdFx0Y3Vyc29yX2VsZW1lbnQuaW5uZXJIVE1MID0gY3Vyc29yO1xuXG5cdFx0dGhpcy5lbC5hcHBlbmRDaGlsZChjdXJzb3JfZWxlbWVudCk7XG5cdFx0aWYodGhpcy5vcHRpb25zLmFuaW1hdGVDdXJzb3IpIHtcblx0XHRcdHRoaXMuX2N1cnNvckFuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fY3Vyc29yQW5pbWF0aW9uRnJhbWUuYmluZCh0aGlzKSk7XG5cdFx0fVxuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX3BhdXNlQ3Vyc29yQW5pbWF0aW9uID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYoIXRoaXMuX3NldHRpbmdzLmN1cnNvckFuaW1hdGlvblBhdXNlZCkge1xuXHRcdFx0d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX2N1cnNvckFuaW1hdGlvbik7XG5cdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJzb3JBbmltYXRpb25QYXVzZWQgPSB0cnVlO1xuXHRcdH1cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9yZXN0YXJ0Q3Vyc29yQW5pbWF0aW9uID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYoIXRoaXMuX3NldHRpbmdzLmN1cnNvckFuaW1hdGlvblBhdXNlZCkge1xuXHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ0N1cnNvciBhbmltYXRpb24gaXMgYWxyZWFkeSBydW5uaW5nLicpXG5cdFx0fVxuXG5cdFx0dGhpcy5fc2V0dGluZ3MuY3Vyc29yQW5pbWF0aW9uUGF1c2VkID0gZmFsc2U7XG5cdFx0dGhpcy5fY3Vyc29yQW5pbWF0aW9uID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl9jdXJzb3JBbmltYXRpb25GcmFtZS5iaW5kKHRoaXMpKTtcblx0fTtcblxuXHQvKiBVdGlscyAqL1xuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9yYW5kb21JbnRlZ2VyID0gZnVuY3Rpb24obWluLCBtYXgpIHtcblx0XHRyZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbiArIDEpKSArIG1pbjtcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9yYW5kb21JRCA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciB0ZXh0ID0gXCJcIjtcbiAgICBcdHZhciBwb3NzaWJsZSA9IFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlcIjtcblxuICAgIFx0Zm9yKCB2YXIgaT0wOyBpIDwgdGhpcy5fcmFuZG9tSW50ZWdlcig1LCAxNSk7IGkrKyApIHtcbiAgICBcdFx0dGV4dCArPSBwb3NzaWJsZS5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogcG9zc2libGUubGVuZ3RoKSk7XG5cdFx0fVxuICAgIFx0cmV0dXJuIHRleHQ7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fZ2VuZXJhdGVVbmlxdWVJRCA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciB0ZW1wX2lkID0gdGhpcy5fcmFuZG9tSUQoKTtcblx0XHRpZih0aGlzLl9zZXR0aW5ncy51c2VkSURzLmluZGV4T2YodGVtcF9pZCkgPT0gLTEpIHtcblx0XHRcdHRoaXMuX3NldHRpbmdzLnVzZWRJRHMucHVzaCh0ZW1wX2lkKTtcblx0XHRcdHJldHVybiB0ZW1wX2lkO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5fZ2VuZXJhdGVVbmlxdWVJRC5jYWxsKHRoaXMpO1xuXHR9O1xuXG5cbn0pKCk7IiwiLyohIFVJa2l0IDMuMC4wLXJjLjUgfCBodHRwOi8vd3d3LmdldHVpa2l0LmNvbSB8IChjKSAyMDE0IC0gMjAxNyBZT090aGVtZSB8IE1JVCBMaWNlbnNlICovXG5cbihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCkgOlxuICAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZSgndWlraXQnLCBmYWN0b3J5KSA6XG4gICAgKGdsb2JhbC5VSWtpdCA9IGZhY3RvcnkoKSk7XG59KHRoaXMsIChmdW5jdGlvbiAoKSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIGZ1bmN0aW9uIGJpbmQoZm4sIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICB2YXIgbCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgICAgICByZXR1cm4gbCA/IGwgPiAxID8gZm4uYXBwbHkoY29udGV4dCwgYXJndW1lbnRzKSA6IGZuLmNhbGwoY29udGV4dCwgYSkgOiBmbi5jYWxsKGNvbnRleHQpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciByZWYgPSBPYmplY3QucHJvdG90eXBlO1xuICAgIHZhciBoYXNPd25Qcm9wZXJ0eSA9IHJlZi5oYXNPd25Qcm9wZXJ0eTtcblxuICAgIGZ1bmN0aW9uIGhhc093bihvYmosIGtleSkge1xuICAgICAgICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSk7XG4gICAgfVxuXG4gICAgdmFyIGh5cGhlbmF0ZUNhY2hlID0ge307XG4gICAgdmFyIGh5cGhlbmF0ZVJlID0gLyhbYS16XFxkXSkoW0EtWl0pL2c7XG5cbiAgICBmdW5jdGlvbiBoeXBoZW5hdGUoc3RyKSB7XG5cbiAgICAgICAgaWYgKCEoc3RyIGluIGh5cGhlbmF0ZUNhY2hlKSkge1xuICAgICAgICAgICAgaHlwaGVuYXRlQ2FjaGVbc3RyXSA9IHN0clxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKGh5cGhlbmF0ZVJlLCAnJDEtJDInKVxuICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGh5cGhlbmF0ZUNhY2hlW3N0cl07XG4gICAgfVxuXG4gICAgdmFyIGNhbWVsaXplUmUgPSAvLShcXHcpL2c7XG5cbiAgICBmdW5jdGlvbiBjYW1lbGl6ZShzdHIpIHtcbiAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKGNhbWVsaXplUmUsIHRvVXBwZXIpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvVXBwZXIoXywgYykge1xuICAgICAgICByZXR1cm4gYyA/IGMudG9VcHBlckNhc2UoKSA6ICcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVjZmlyc3Qoc3RyKSB7XG4gICAgICAgIHJldHVybiBzdHIubGVuZ3RoID8gdG9VcHBlcihudWxsLCBzdHIuY2hhckF0KDApKSArIHN0ci5zbGljZSgxKSA6ICcnO1xuICAgIH1cblxuICAgIHZhciBzdHJQcm90b3R5cGUgPSBTdHJpbmcucHJvdG90eXBlO1xuICAgIHZhciBzdGFydHNXaXRoRm4gPSBzdHJQcm90b3R5cGUuc3RhcnRzV2l0aCB8fCBmdW5jdGlvbiAoc2VhcmNoKSB7IHJldHVybiB0aGlzLmxhc3RJbmRleE9mKHNlYXJjaCwgMCkgPT09IDA7IH07XG5cbiAgICBmdW5jdGlvbiBzdGFydHNXaXRoKHN0ciwgc2VhcmNoKSB7XG4gICAgICAgIHJldHVybiBzdGFydHNXaXRoRm4uY2FsbChzdHIsIHNlYXJjaCk7XG4gICAgfVxuXG4gICAgdmFyIGVuZHNXaXRoRm4gPSBzdHJQcm90b3R5cGUuZW5kc1dpdGggfHwgZnVuY3Rpb24gKHNlYXJjaCkgeyByZXR1cm4gdGhpcy5zdWJzdHIoLXNlYXJjaC5sZW5ndGgpID09PSBzZWFyY2g7IH07XG5cbiAgICBmdW5jdGlvbiBlbmRzV2l0aChzdHIsIHNlYXJjaCkge1xuICAgICAgICByZXR1cm4gZW5kc1dpdGhGbi5jYWxsKHN0ciwgc2VhcmNoKTtcbiAgICB9XG5cbiAgICB2YXIgaW5jbHVkZXNGbiA9IGZ1bmN0aW9uIChzZWFyY2gpIHsgcmV0dXJuIH50aGlzLmluZGV4T2Yoc2VhcmNoKTsgfTtcbiAgICB2YXIgaW5jbHVkZXNTdHIgPSBzdHJQcm90b3R5cGUuaW5jbHVkZXMgfHwgaW5jbHVkZXNGbjtcbiAgICB2YXIgaW5jbHVkZXNBcnJheSA9IEFycmF5LnByb3RvdHlwZS5pbmNsdWRlcyB8fCBpbmNsdWRlc0ZuO1xuXG4gICAgZnVuY3Rpb24gaW5jbHVkZXMob2JqLCBzZWFyY2gpIHtcbiAgICAgICAgcmV0dXJuIG9iaiAmJiAoaXNTdHJpbmcob2JqKSA/IGluY2x1ZGVzU3RyIDogaW5jbHVkZXNBcnJheSkuY2FsbChvYmosIHNlYXJjaCk7XG4gICAgfVxuXG4gICAgdmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG4gICAgZnVuY3Rpb24gaXNGdW5jdGlvbihvYmopIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdmdW5jdGlvbic7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPYmplY3Qob2JqKSB7XG4gICAgICAgIHJldHVybiBvYmogIT09IG51bGwgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNQbGFpbk9iamVjdChvYmopIHtcbiAgICAgICAgcmV0dXJuIGlzT2JqZWN0KG9iaikgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikgPT09IE9iamVjdC5wcm90b3R5cGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNXaW5kb3cob2JqKSB7XG4gICAgICAgIHJldHVybiBpc09iamVjdChvYmopICYmIG9iaiA9PT0gb2JqLndpbmRvdztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0RvY3VtZW50KG9iaikge1xuICAgICAgICByZXR1cm4gaXNPYmplY3Qob2JqKSAmJiBvYmoubm9kZVR5cGUgPT09IDk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNKUXVlcnkob2JqKSB7XG4gICAgICAgIHJldHVybiBpc09iamVjdChvYmopICYmICEhb2JqLmpxdWVyeTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc05vZGUoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudCBpbnN0YW5jZW9mIE5vZGUgfHwgaXNPYmplY3QoZWxlbWVudCkgJiYgZWxlbWVudC5ub2RlVHlwZSA9PT0gMTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc05vZGVDb2xsZWN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQgaW5zdGFuY2VvZiBOb2RlTGlzdCB8fCBlbGVtZW50IGluc3RhbmNlb2YgSFRNTENvbGxlY3Rpb247XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc051bWJlcih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc051bWVyaWModmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGlzTnVtYmVyKHZhbHVlKSB8fCBpc1N0cmluZyh2YWx1ZSkgJiYgIWlzTmFOKHZhbHVlIC0gcGFyc2VGbG9hdCh2YWx1ZSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdm9pZCAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvQm9vbGVhbih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gaXNCb29sZWFuKHZhbHVlKVxuICAgICAgICAgICAgPyB2YWx1ZVxuICAgICAgICAgICAgOiB2YWx1ZSA9PT0gJ3RydWUnIHx8IHZhbHVlID09PSAnMScgfHwgdmFsdWUgPT09ICcnXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB2YWx1ZSA9PT0gJ2ZhbHNlJyB8fCB2YWx1ZSA9PT0gJzAnXG4gICAgICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgOiB2YWx1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b051bWJlcih2YWx1ZSkge1xuICAgICAgICB2YXIgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuICFpc05hTihudW1iZXIpID8gbnVtYmVyIDogZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9GbG9hdCh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZSkgfHwgMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b05vZGUoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gaXNOb2RlKGVsZW1lbnQpIHx8IGlzV2luZG93KGVsZW1lbnQpIHx8IGlzRG9jdW1lbnQoZWxlbWVudClcbiAgICAgICAgICAgID8gZWxlbWVudFxuICAgICAgICAgICAgOiBpc05vZGVDb2xsZWN0aW9uKGVsZW1lbnQpIHx8IGlzSlF1ZXJ5KGVsZW1lbnQpXG4gICAgICAgICAgICAgICAgPyBlbGVtZW50WzBdXG4gICAgICAgICAgICAgICAgOiBpc0FycmF5KGVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgID8gdG9Ob2RlKGVsZW1lbnRbMF0pXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcbiAgICBmdW5jdGlvbiB0b05vZGVzKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGlzTm9kZShlbGVtZW50KVxuICAgICAgICAgICAgPyBbZWxlbWVudF1cbiAgICAgICAgICAgIDogaXNOb2RlQ29sbGVjdGlvbihlbGVtZW50KVxuICAgICAgICAgICAgICAgID8gYXJyYXlQcm90by5zbGljZS5jYWxsKGVsZW1lbnQpXG4gICAgICAgICAgICAgICAgOiBpc0FycmF5KGVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgID8gZWxlbWVudC5tYXAodG9Ob2RlKS5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICAgICAgOiBpc0pRdWVyeShlbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBlbGVtZW50LnRvQXJyYXkoKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0xpc3QodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGlzQXJyYXkodmFsdWUpXG4gICAgICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICA6IGlzU3RyaW5nKHZhbHVlKVxuICAgICAgICAgICAgICAgID8gdmFsdWUuc3BsaXQoLywoPyFbXihdKlxcKSkvKS5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiBpc051bWVyaWModmFsdWUpXG4gICAgICAgICAgICAgICAgICAgID8gdG9OdW1iZXIodmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIDogdG9Cb29sZWFuKHZhbHVlLnRyaW0oKSk7IH0pXG4gICAgICAgICAgICAgICAgOiBbdmFsdWVdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvTXModGltZSkge1xuICAgICAgICByZXR1cm4gIXRpbWVcbiAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgOiBlbmRzV2l0aCh0aW1lLCAnbXMnKVxuICAgICAgICAgICAgICAgID8gdG9GbG9hdCh0aW1lKVxuICAgICAgICAgICAgICAgIDogdG9GbG9hdCh0aW1lKSAqIDEwMDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3dhcCh2YWx1ZSwgYSwgYikge1xuICAgICAgICByZXR1cm4gdmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKChhICsgXCJ8XCIgKyBiKSwgJ21nJyksIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgcmV0dXJuIG1hdGNoID09PSBhID8gYiA6IGE7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBhc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgICAgIHdoaWxlICggbGVuLS0gPiAwICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiArIDEgXTtcblxuICAgICAgICB0YXJnZXQgPSBPYmplY3QodGFyZ2V0KTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgc291cmNlID0gYXJnc1tpXTtcbiAgICAgICAgICAgIGlmIChzb3VyY2UgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNPd24oc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGVhY2gob2JqLCBjYikge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICAgICAgICBjYi5jYWxsKG9ialtrZXldLCBvYmpba2V5XSwga2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNvcnRCeShjb2xsZWN0aW9uLCBwcm9wKSB7XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGFbcHJvcF0gPiBiW3Byb3BdXG4gICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgOiBiW3Byb3BdID4gYVtwcm9wXVxuICAgICAgICAgICAgICAgICAgICA/IC0xXG4gICAgICAgICAgICAgICAgICAgIDogMDsgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsYW1wKG51bWJlciwgbWluLCBtYXgpIHtcbiAgICAgICAgaWYgKCBtaW4gPT09IHZvaWQgMCApIG1pbiA9IDA7XG4gICAgICAgIGlmICggbWF4ID09PSB2b2lkIDAgKSBtYXggPSAxO1xuXG4gICAgICAgIHJldHVybiBNYXRoLm1pbihNYXRoLm1heChudW1iZXIsIG1pbiksIG1heCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbm9vcCgpIHt9XG5cbiAgICBmdW5jdGlvbiBpbnRlcnNlY3RSZWN0KHIxLCByMikge1xuICAgICAgICByZXR1cm4gcjEubGVmdCA8PSByMi5yaWdodCAmJlxuICAgICAgICAgICAgcjIubGVmdCA8PSByMS5yaWdodCAmJlxuICAgICAgICAgICAgcjEudG9wIDw9IHIyLmJvdHRvbSAmJlxuICAgICAgICAgICAgcjIudG9wIDw9IHIxLmJvdHRvbTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwb2ludEluUmVjdChwb2ludCwgcmVjdCkge1xuICAgICAgICByZXR1cm4gaW50ZXJzZWN0UmVjdCh7dG9wOiBwb2ludC55LCBib3R0b206IHBvaW50LnksIGxlZnQ6IHBvaW50LngsIHJpZ2h0OiBwb2ludC54fSwgcmVjdCk7XG4gICAgfVxuXG4gICAgdmFyIERpbWVuc2lvbnMgPSB7XG5cbiAgICAgICAgcmF0aW86IGZ1bmN0aW9uKGRpbWVuc2lvbnMsIHByb3AsIHZhbHVlKSB7XG4gICAgICAgICAgICB2YXIgb2JqO1xuXG5cbiAgICAgICAgICAgIHZhciBhUHJvcCA9IHByb3AgPT09ICd3aWR0aCcgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG5cbiAgICAgICAgICAgIHJldHVybiAoIG9iaiA9IHt9LCBvYmpbYVByb3BdID0gTWF0aC5yb3VuZCh2YWx1ZSAqIGRpbWVuc2lvbnNbYVByb3BdIC8gZGltZW5zaW9uc1twcm9wXSksIG9ialtwcm9wXSA9IHZhbHVlLCBvYmogKTtcbiAgICAgICAgfSxcblxuICAgICAgICBjb250YWluOiBmdW5jdGlvbihkaW1lbnNpb25zLCBtYXhEaW1lbnNpb25zKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICAgICAgZGltZW5zaW9ucyA9IGFzc2lnbih7fSwgZGltZW5zaW9ucyk7XG5cbiAgICAgICAgICAgIGVhY2goZGltZW5zaW9ucywgZnVuY3Rpb24gKF8sIHByb3ApIHsgcmV0dXJuIGRpbWVuc2lvbnMgPSBkaW1lbnNpb25zW3Byb3BdID4gbWF4RGltZW5zaW9uc1twcm9wXVxuICAgICAgICAgICAgICAgID8gdGhpcyQxLnJhdGlvKGRpbWVuc2lvbnMsIHByb3AsIG1heERpbWVuc2lvbnNbcHJvcF0pXG4gICAgICAgICAgICAgICAgOiBkaW1lbnNpb25zOyB9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICByZXR1cm4gZGltZW5zaW9ucztcbiAgICAgICAgfSxcblxuICAgICAgICBjb3ZlcjogZnVuY3Rpb24oZGltZW5zaW9ucywgbWF4RGltZW5zaW9ucykge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgIGRpbWVuc2lvbnMgPSB0aGlzLmNvbnRhaW4oZGltZW5zaW9ucywgbWF4RGltZW5zaW9ucyk7XG5cbiAgICAgICAgICAgIGVhY2goZGltZW5zaW9ucywgZnVuY3Rpb24gKF8sIHByb3ApIHsgcmV0dXJuIGRpbWVuc2lvbnMgPSBkaW1lbnNpb25zW3Byb3BdIDwgbWF4RGltZW5zaW9uc1twcm9wXVxuICAgICAgICAgICAgICAgID8gdGhpcyQxLnJhdGlvKGRpbWVuc2lvbnMsIHByb3AsIG1heERpbWVuc2lvbnNbcHJvcF0pXG4gICAgICAgICAgICAgICAgOiBkaW1lbnNpb25zOyB9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICByZXR1cm4gZGltZW5zaW9ucztcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGF0dHIoZWxlbWVudCwgbmFtZSwgdmFsdWUpIHtcblxuICAgICAgICBpZiAoaXNPYmplY3QobmFtZSkpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBuYW1lKSB7XG4gICAgICAgICAgICAgICAgYXR0cihlbGVtZW50LCBrZXksIG5hbWVba2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgJiYgZWxlbWVudC5nZXRBdHRyaWJ1dGUobmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0b05vZGVzKGVsZW1lbnQpLmZvckVhY2goZnVuY3Rpb24gKGVsZW1lbnQpIHtcblxuICAgICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmNhbGwoZWxlbWVudCwgYXR0cihlbGVtZW50LCBuYW1lKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUF0dHIoZWxlbWVudCwgbmFtZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYXNBdHRyKGVsZW1lbnQsIG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMoZWxlbWVudCkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1dGUobmFtZSk7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZUF0dHIoZWxlbWVudCwgbmFtZSkge1xuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlcyhlbGVtZW50KTtcbiAgICAgICAgbmFtZS5zcGxpdCgnICcpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIGVsZW1lbnQuZm9yRWFjaChmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7IH1cbiAgICAgICAgICAgICk7IH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaWx0ZXJBdHRyKGVsZW1lbnQsIGF0dHJpYnV0ZSwgcGF0dGVybiwgcmVwbGFjZW1lbnQpIHtcbiAgICAgICAgYXR0cihlbGVtZW50LCBhdHRyaWJ1dGUsIGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPyB2YWx1ZS5yZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50KSA6IHZhbHVlOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkYXRhKGVsZW1lbnQsIGF0dHJpYnV0ZSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMCwgYXR0cnMgPSBbYXR0cmlidXRlLCAoXCJkYXRhLVwiICsgYXR0cmlidXRlKV07IGkgPCBhdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGhhc0F0dHIoZWxlbWVudCwgYXR0cnNbaV0pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF0dHIoZWxlbWVudCwgYXR0cnNbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcXVlcnkoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZShzZWxlY3RvcikgfHwgZmluZChzZWxlY3RvciwgaXNDb250ZXh0U2VsZWN0b3Ioc2VsZWN0b3IpID8gY29udGV4dCA6IGRvY3VtZW50KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBxdWVyeUFsbChzZWxlY3RvciwgY29udGV4dCkge1xuICAgICAgICB2YXIgbm9kZXMgPSB0b05vZGVzKHNlbGVjdG9yKTtcbiAgICAgICAgcmV0dXJuIG5vZGVzLmxlbmd0aCAmJiBub2RlcyB8fCBmaW5kQWxsKHNlbGVjdG9yLCBpc0NvbnRleHRTZWxlY3RvcihzZWxlY3RvcikgPyBjb250ZXh0IDogZG9jdW1lbnQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZpbmQoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZShfcXVlcnkoc2VsZWN0b3IsIGNvbnRleHQsICdxdWVyeVNlbGVjdG9yJykpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZpbmRBbGwoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMoX3F1ZXJ5KHNlbGVjdG9yLCBjb250ZXh0LCAncXVlcnlTZWxlY3RvckFsbCcpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBfcXVlcnkoc2VsZWN0b3IsIGNvbnRleHQsIHF1ZXJ5Rm4pIHtcbiAgICAgICAgaWYgKCBjb250ZXh0ID09PSB2b2lkIDAgKSBjb250ZXh0ID0gZG9jdW1lbnQ7XG5cblxuICAgICAgICBpZiAoIXNlbGVjdG9yIHx8ICFpc1N0cmluZyhzZWxlY3RvcikpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3Rvci5yZXBsYWNlKGNvbnRleHRTYW5pdGl6ZVJlLCAnJDEgKicpO1xuXG4gICAgICAgIHZhciByZW1vdmVzO1xuXG4gICAgICAgIGlmIChpc0NvbnRleHRTZWxlY3RvcihzZWxlY3RvcikpIHtcblxuICAgICAgICAgICAgcmVtb3ZlcyA9IFtdO1xuXG4gICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChzZWxlY3RvciwgaSkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGN0eCA9IGNvbnRleHQ7XG5cbiAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLnRyaW0oKTtcblxuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RvclswXSA9PT0gJyEnKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGVjdG9ycyA9IHNlbGVjdG9yLnN1YnN0cigxKS50cmltKCkuc3BsaXQoJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gY2xvc2VzdChjb250ZXh0LnBhcmVudE5vZGUsIHNlbGVjdG9yc1swXSk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3JzLnNsaWNlKDEpLmpvaW4oJyAnKS50cmltKCk7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3JbMF0gPT09ICctJykge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3RvcnMkMSA9IHNlbGVjdG9yLnN1YnN0cigxKS50cmltKCkuc3BsaXQoJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHByZXYgPSAoY3R4IHx8IGNvbnRleHQpLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IG1hdGNoZXMocHJldiwgc2VsZWN0b3Iuc3Vic3RyKDEpKSA/IHByZXYgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9ycyQxLnNsaWNlKDEpLmpvaW4oJyAnKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghY3R4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghY3R4LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eC5pZCA9IFwidWstXCIgKyAoRGF0ZS5ub3coKSkgKyBpO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVzLnB1c2goZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVtb3ZlQXR0cihjdHgsICdpZCcpOyB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFwiI1wiICsgKGVzY2FwZShjdHguaWQpKSArIFwiIFwiICsgc2VsZWN0b3IpO1xuXG4gICAgICAgICAgICB9KS5maWx0ZXIoQm9vbGVhbikuam9pbignLCcpO1xuXG4gICAgICAgICAgICBjb250ZXh0ID0gZG9jdW1lbnQ7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG5cbiAgICAgICAgICAgIHJldHVybiBjb250ZXh0W3F1ZXJ5Rm5dKHNlbGVjdG9yKTtcblxuICAgICAgICB9IGNhdGNoIChlKSB7XG5cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgIH0gZmluYWxseSB7XG5cbiAgICAgICAgICAgIHJlbW92ZXMgJiYgcmVtb3Zlcy5mb3JFYWNoKGZ1bmN0aW9uIChyZW1vdmUpIHsgcmV0dXJuIHJlbW92ZSgpOyB9KTtcblxuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICB2YXIgY29udGV4dFNlbGVjdG9yUmUgPSAvKF58LClcXHMqWyE+K34tXS87XG4gICAgdmFyIGNvbnRleHRTYW5pdGl6ZVJlID0gLyhbIT4rfi1dKSg/PVxccytbIT4rfi1dfFxccyokKS9nO1xuXG4gICAgZnVuY3Rpb24gaXNDb250ZXh0U2VsZWN0b3Ioc2VsZWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIGlzU3RyaW5nKHNlbGVjdG9yKSAmJiBzZWxlY3Rvci5tYXRjaChjb250ZXh0U2VsZWN0b3JSZSk7XG4gICAgfVxuXG4gICAgdmFyIGVsUHJvdG8gPSBFbGVtZW50LnByb3RvdHlwZTtcbiAgICB2YXIgbWF0Y2hlc0ZuID0gZWxQcm90by5tYXRjaGVzIHx8IGVsUHJvdG8ud2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8IGVsUHJvdG8ubXNNYXRjaGVzU2VsZWN0b3I7XG5cbiAgICBmdW5jdGlvbiBtYXRjaGVzKGVsZW1lbnQsIHNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiB0b05vZGVzKGVsZW1lbnQpLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIG1hdGNoZXNGbi5jYWxsKGVsZW1lbnQsIHNlbGVjdG9yKTsgfSk7XG4gICAgfVxuXG4gICAgdmFyIGNsb3Nlc3RGbiA9IGVsUHJvdG8uY2xvc2VzdCB8fCBmdW5jdGlvbiAoc2VsZWN0b3IpIHtcbiAgICAgICAgdmFyIGFuY2VzdG9yID0gdGhpcztcblxuICAgICAgICBkbyB7XG5cbiAgICAgICAgICAgIGlmIChtYXRjaGVzKGFuY2VzdG9yLCBzZWxlY3RvcikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYW5jZXN0b3I7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFuY2VzdG9yID0gYW5jZXN0b3IucGFyZW50Tm9kZTtcblxuICAgICAgICB9IHdoaWxlIChhbmNlc3RvciAmJiBhbmNlc3Rvci5ub2RlVHlwZSA9PT0gMSk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGNsb3Nlc3QoZWxlbWVudCwgc2VsZWN0b3IpIHtcblxuICAgICAgICBpZiAoc3RhcnRzV2l0aChzZWxlY3RvciwgJz4nKSkge1xuICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3Rvci5zbGljZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpc05vZGUoZWxlbWVudClcbiAgICAgICAgICAgID8gZWxlbWVudC5wYXJlbnROb2RlICYmIGNsb3Nlc3RGbi5jYWxsKGVsZW1lbnQsIHNlbGVjdG9yKVxuICAgICAgICAgICAgOiB0b05vZGVzKGVsZW1lbnQpLm1hcChmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5wYXJlbnROb2RlICYmIGNsb3Nlc3RGbi5jYWxsKGVsZW1lbnQsIHNlbGVjdG9yKTsgfSkuZmlsdGVyKEJvb2xlYW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcmVudHMoZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgICAgICAgdmFyIGVsZW1lbnRzID0gW107XG4gICAgICAgIHZhciBwYXJlbnQgPSB0b05vZGUoZWxlbWVudCkucGFyZW50Tm9kZTtcblxuICAgICAgICB3aGlsZSAocGFyZW50ICYmIHBhcmVudC5ub2RlVHlwZSA9PT0gMSkge1xuXG4gICAgICAgICAgICBpZiAobWF0Y2hlcyhwYXJlbnQsIHNlbGVjdG9yKSkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnRzLnB1c2gocGFyZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudE5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZWxlbWVudHM7XG4gICAgfVxuXG4gICAgdmFyIGVzY2FwZUZuID0gd2luZG93LkNTUyAmJiBDU1MuZXNjYXBlIHx8IGZ1bmN0aW9uIChjc3MpIHsgcmV0dXJuIGNzcy5yZXBsYWNlKC8oW15cXHg3Zi1cXHVGRkZGXFx3LV0pL2csIGZ1bmN0aW9uIChtYXRjaCkgeyByZXR1cm4gKFwiXFxcXFwiICsgbWF0Y2gpOyB9KTsgfTtcbiAgICBmdW5jdGlvbiBlc2NhcGUoY3NzKSB7XG4gICAgICAgIHJldHVybiBpc1N0cmluZyhjc3MpID8gZXNjYXBlRm4uY2FsbChudWxsLCBjc3MpIDogJyc7XG4gICAgfVxuXG4gICAgdmFyIHZvaWRFbGVtZW50cyA9IHtcbiAgICAgICAgYXJlYTogdHJ1ZSxcbiAgICAgICAgYmFzZTogdHJ1ZSxcbiAgICAgICAgYnI6IHRydWUsXG4gICAgICAgIGNvbDogdHJ1ZSxcbiAgICAgICAgZW1iZWQ6IHRydWUsXG4gICAgICAgIGhyOiB0cnVlLFxuICAgICAgICBpbWc6IHRydWUsXG4gICAgICAgIGlucHV0OiB0cnVlLFxuICAgICAgICBrZXlnZW46IHRydWUsXG4gICAgICAgIGxpbms6IHRydWUsXG4gICAgICAgIG1lbnVpdGVtOiB0cnVlLFxuICAgICAgICBtZXRhOiB0cnVlLFxuICAgICAgICBwYXJhbTogdHJ1ZSxcbiAgICAgICAgc291cmNlOiB0cnVlLFxuICAgICAgICB0cmFjazogdHJ1ZSxcbiAgICAgICAgd2JyOiB0cnVlXG4gICAgfTtcbiAgICBmdW5jdGlvbiBpc1ZvaWRFbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMoZWxlbWVudCkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gdm9pZEVsZW1lbnRzW2VsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpXTsgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNWaXNpYmxlKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMoZWxlbWVudCkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5vZmZzZXRXaWR0aCB8fCBlbGVtZW50Lm9mZnNldEhlaWdodCB8fCBlbGVtZW50LmdldENsaWVudFJlY3RzKCkubGVuZ3RoOyB9KTtcbiAgICB9XG5cbiAgICB2YXIgc2VsSW5wdXQgPSAnaW5wdXQsc2VsZWN0LHRleHRhcmVhLGJ1dHRvbic7XG4gICAgZnVuY3Rpb24gaXNJbnB1dChlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0b05vZGVzKGVsZW1lbnQpLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIG1hdGNoZXMoZWxlbWVudCwgc2VsSW5wdXQpOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaWx0ZXIoZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMoZWxlbWVudCkuZmlsdGVyKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBtYXRjaGVzKGVsZW1lbnQsIHNlbGVjdG9yKTsgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd2l0aGluKGVsZW1lbnQsIHNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiAhaXNTdHJpbmcoc2VsZWN0b3IpXG4gICAgICAgICAgICA/IGVsZW1lbnQgPT09IHNlbGVjdG9yIHx8IChpc0RvY3VtZW50KHNlbGVjdG9yKVxuICAgICAgICAgICAgICAgID8gc2VsZWN0b3IuZG9jdW1lbnRFbGVtZW50XG4gICAgICAgICAgICAgICAgOiB0b05vZGUoc2VsZWN0b3IpKS5jb250YWlucyh0b05vZGUoZWxlbWVudCkpIC8vIElFIDExIGRvY3VtZW50IGRvZXMgbm90IGltcGxlbWVudCBjb250YWluc1xuICAgICAgICAgICAgOiBtYXRjaGVzKGVsZW1lbnQsIHNlbGVjdG9yKSB8fCBjbG9zZXN0KGVsZW1lbnQsIHNlbGVjdG9yKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKCBsZW4tLSApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gXTtcblxuXG4gICAgICAgIHZhciByZWYgPSBnZXRBcmdzKGFyZ3MpO1xuICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmWzBdO1xuICAgICAgICB2YXIgdHlwZSA9IHJlZlsxXTtcbiAgICAgICAgdmFyIHNlbGVjdG9yID0gcmVmWzJdO1xuICAgICAgICB2YXIgbGlzdGVuZXIgPSByZWZbM107XG4gICAgICAgIHZhciB1c2VDYXB0dXJlID0gcmVmWzRdO1xuXG4gICAgICAgIHRhcmdldCA9IHRvRXZlbnRUYXJnZXQodGFyZ2V0KTtcblxuICAgICAgICBpZiAoc2VsZWN0b3IpIHtcbiAgICAgICAgICAgIGxpc3RlbmVyID0gZGVsZWdhdGUodGFyZ2V0LCBzZWxlY3RvciwgbGlzdGVuZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxpc3RlbmVyLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGxpc3RlbmVyID0gZGV0YWlsKGxpc3RlbmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHR5cGUuc3BsaXQoJyAnKS5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7IHJldHVybiB0YXJnZXQgJiYgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOyB9KTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9mZih0YXJnZXQsIHR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvZmYodGFyZ2V0LCB0eXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkge1xuICAgICAgICBpZiAoIHVzZUNhcHR1cmUgPT09IHZvaWQgMCApIHVzZUNhcHR1cmUgPSBmYWxzZTtcblxuICAgICAgICB0YXJnZXQgPSB0b0V2ZW50VGFyZ2V0KHRhcmdldCk7XG4gICAgICAgIHRhcmdldCAmJiB0eXBlLnNwbGl0KCcgJykuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkgeyByZXR1cm4gdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbmNlKCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICB3aGlsZSAoIGxlbi0tICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiBdO1xuXG5cbiAgICAgICAgdmFyIHJlZiA9IGdldEFyZ3MoYXJncyk7XG4gICAgICAgIHZhciBlbGVtZW50ID0gcmVmWzBdO1xuICAgICAgICB2YXIgdHlwZSA9IHJlZlsxXTtcbiAgICAgICAgdmFyIHNlbGVjdG9yID0gcmVmWzJdO1xuICAgICAgICB2YXIgbGlzdGVuZXIgPSByZWZbM107XG4gICAgICAgIHZhciB1c2VDYXB0dXJlID0gcmVmWzRdO1xuICAgICAgICB2YXIgY29uZGl0aW9uID0gcmVmWzVdO1xuICAgICAgICB2YXIgb2ZmID0gb24oZWxlbWVudCwgdHlwZSwgc2VsZWN0b3IsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gIWNvbmRpdGlvbiB8fCBjb25kaXRpb24oZSk7XG4gICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgb2ZmKCk7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXIoZSwgcmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgdXNlQ2FwdHVyZSk7XG5cbiAgICAgICAgcmV0dXJuIG9mZjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0cmlnZ2VyKHRhcmdldCwgZXZlbnQsIGRldGFpbCkge1xuICAgICAgICByZXR1cm4gdG9FdmVudFRhcmdldHModGFyZ2V0KS5yZWR1Y2UoZnVuY3Rpb24gKG5vdENhbmNlbGVkLCB0YXJnZXQpIHsgcmV0dXJuIG5vdENhbmNlbGVkICYmIHRhcmdldC5kaXNwYXRjaEV2ZW50KGNyZWF0ZUV2ZW50KGV2ZW50LCB0cnVlLCB0cnVlLCBkZXRhaWwpKTsgfVxuICAgICAgICAgICAgLCB0cnVlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVFdmVudChlLCBidWJibGVzLCBjYW5jZWxhYmxlLCBkZXRhaWwpIHtcbiAgICAgICAgaWYgKCBidWJibGVzID09PSB2b2lkIDAgKSBidWJibGVzID0gdHJ1ZTtcbiAgICAgICAgaWYgKCBjYW5jZWxhYmxlID09PSB2b2lkIDAgKSBjYW5jZWxhYmxlID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKGlzU3RyaW5nKGUpKSB7XG4gICAgICAgICAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnQ3VzdG9tRXZlbnQnKTsgLy8gSUUgMTFcbiAgICAgICAgICAgIGV2ZW50LmluaXRDdXN0b21FdmVudChlLCBidWJibGVzLCBjYW5jZWxhYmxlLCBkZXRhaWwpO1xuICAgICAgICAgICAgZSA9IGV2ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0QXJncyhhcmdzKSB7XG5cbiAgICAgICAgaWYgKGlzU3RyaW5nKGFyZ3NbMF0pKSB7XG4gICAgICAgICAgICBhcmdzWzBdID0gZmluZChhcmdzWzBdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKGFyZ3NbMl0pKSB7XG4gICAgICAgICAgICBhcmdzLnNwbGljZSgyLCAwLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFyZ3M7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVsZWdhdGUoZWxlbWVudCwgc2VsZWN0b3IsIGxpc3RlbmVyKSB7XG4gICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoZSkge1xuXG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgICAgICAgICB2YXIgY3VycmVudCA9IHNlbGVjdG9yWzBdID09PSAnPidcbiAgICAgICAgICAgICAgICA/IGZpbmRBbGwoc2VsZWN0b3IsIGVsZW1lbnQpLnJldmVyc2UoKS5maWx0ZXIoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIHdpdGhpbih0YXJnZXQsIGVsZW1lbnQpOyB9KVswXVxuICAgICAgICAgICAgICAgIDogY2xvc2VzdCh0YXJnZXQsIHNlbGVjdG9yKTtcblxuICAgICAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBlLmRlbGVnYXRlID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICBlLmN1cnJlbnQgPSBjdXJyZW50O1xuXG4gICAgICAgICAgICAgICAgbGlzdGVuZXIuY2FsbCh0aGlzJDEsIGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRldGFpbChsaXN0ZW5lcikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGlzQXJyYXkoZS5kZXRhaWwpID8gbGlzdGVuZXIuYXBwbHkodm9pZCAwLCBbZV0uY29uY2F0KGUuZGV0YWlsKSkgOiBsaXN0ZW5lcihlKTsgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0V2ZW50VGFyZ2V0KHRhcmdldCkge1xuICAgICAgICByZXR1cm4gJ0V2ZW50VGFyZ2V0JyBpbiB3aW5kb3dcbiAgICAgICAgICAgID8gdGFyZ2V0IGluc3RhbmNlb2YgRXZlbnRUYXJnZXRcbiAgICAgICAgICAgIDogdGFyZ2V0ICYmICdhZGRFdmVudExpc3RlbmVyJyBpbiB0YXJnZXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9FdmVudFRhcmdldCh0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIGlzRXZlbnRUYXJnZXQodGFyZ2V0KSA/IHRhcmdldCA6IHRvTm9kZSh0YXJnZXQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvRXZlbnRUYXJnZXRzKHRhcmdldCkge1xuICAgICAgICByZXR1cm4gaXNFdmVudFRhcmdldCh0YXJnZXQpXG4gICAgICAgICAgICA/IFt0YXJnZXRdXG4gICAgICAgICAgICA6IGlzQXJyYXkodGFyZ2V0KVxuICAgICAgICAgICAgICAgID8gdGFyZ2V0Lm1hcCh0b0V2ZW50VGFyZ2V0KS5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICA6IHRvTm9kZXModGFyZ2V0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmV2ZW50Q2xpY2soKSB7XG5cbiAgICAgICAgdmFyIHRpbWVyID0gc2V0VGltZW91dChvbmNlKGRvY3VtZW50LCAnY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuXG4gICAgICAgIH0sIHRydWUpKTtcblxuICAgICAgICB0cmlnZ2VyKGRvY3VtZW50LCAndG91Y2hjYW5jZWwnKTtcblxuICAgIH1cblxuICAgIC8qIGdsb2JhbCBzZXRJbW1lZGlhdGUgKi9cblxuICAgIHZhciBQcm9taXNlJDEgPSAnUHJvbWlzZScgaW4gd2luZG93ID8gd2luZG93LlByb21pc2UgOiBQcm9taXNlRm47XG5cbiAgICB2YXIgRGVmZXJyZWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB0aGlzJDEucmVqZWN0ID0gcmVqZWN0O1xuICAgICAgICAgICAgdGhpcyQxLnJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogUHJvbWlzZXMvQSsgcG9seWZpbGwgdjEuMS40IChodHRwczovL2dpdGh1Yi5jb20vYnJhbXN0ZWluL3Byb21pcylcbiAgICAgKi9cblxuICAgIHZhciBSRVNPTFZFRCA9IDA7XG4gICAgdmFyIFJFSkVDVEVEID0gMTtcbiAgICB2YXIgUEVORElORyA9IDI7XG5cbiAgICB2YXIgYXN5bmMgPSAnc2V0SW1tZWRpYXRlJyBpbiB3aW5kb3cgPyBzZXRJbW1lZGlhdGUgOiBzZXRUaW1lb3V0O1xuXG4gICAgZnVuY3Rpb24gUHJvbWlzZUZuKGV4ZWN1dG9yKSB7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IFBFTkRJTkc7XG4gICAgICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuZGVmZXJyZWQgPSBbXTtcblxuICAgICAgICB2YXIgcHJvbWlzZSA9IHRoaXM7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGV4ZWN1dG9yKFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZSh4KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KHIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHByb21pc2UucmVqZWN0KGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgUHJvbWlzZUZuLnJlamVjdCA9IGZ1bmN0aW9uIChyKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUZuKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHJlamVjdChyKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIFByb21pc2VGbi5yZXNvbHZlID0gZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlRm4oZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgcmVzb2x2ZSh4KTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIFByb21pc2VGbi5hbGwgPSBmdW5jdGlvbiBhbGwoaXRlcmFibGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlRm4oZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcblxuICAgICAgICAgICAgaWYgKGl0ZXJhYmxlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnVuY3Rpb24gcmVzb2x2ZXIoaSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSB4O1xuICAgICAgICAgICAgICAgICAgICBjb3VudCArPSAxO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA9PT0gaXRlcmFibGUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZXJhYmxlLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgUHJvbWlzZUZuLnJlc29sdmUoaXRlcmFibGVbaV0pLnRoZW4ocmVzb2x2ZXIoaSksIHJlamVjdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBQcm9taXNlRm4ucmFjZSA9IGZ1bmN0aW9uIHJhY2UoaXRlcmFibGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlRm4oZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVyYWJsZS5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgIFByb21pc2VGbi5yZXNvbHZlKGl0ZXJhYmxlW2ldKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICB2YXIgcCA9IFByb21pc2VGbi5wcm90b3R5cGU7XG5cbiAgICBwLnJlc29sdmUgPSBmdW5jdGlvbiByZXNvbHZlKHgpIHtcbiAgICAgICAgdmFyIHByb21pc2UgPSB0aGlzO1xuXG4gICAgICAgIGlmIChwcm9taXNlLnN0YXRlID09PSBQRU5ESU5HKSB7XG4gICAgICAgICAgICBpZiAoeCA9PT0gcHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb21pc2Ugc2V0dGxlZCB3aXRoIGl0c2VsZi4nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHZhciB0aGVuID0geCAmJiB4LnRoZW47XG5cbiAgICAgICAgICAgICAgICBpZiAoeCAhPT0gbnVsbCAmJiBpc09iamVjdCh4KSAmJiBpc0Z1bmN0aW9uKHRoZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoZW4uY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2FsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZSh4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAocikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2FsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KHIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGlmICghY2FsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHByb21pc2Uuc3RhdGUgPSBSRVNPTFZFRDtcbiAgICAgICAgICAgIHByb21pc2UudmFsdWUgPSB4O1xuICAgICAgICAgICAgcHJvbWlzZS5ub3RpZnkoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwLnJlamVjdCA9IGZ1bmN0aW9uIHJlamVjdChyZWFzb24pIHtcbiAgICAgICAgdmFyIHByb21pc2UgPSB0aGlzO1xuXG4gICAgICAgIGlmIChwcm9taXNlLnN0YXRlID09PSBQRU5ESU5HKSB7XG4gICAgICAgICAgICBpZiAocmVhc29uID09PSBwcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUHJvbWlzZSBzZXR0bGVkIHdpdGggaXRzZWxmLicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwcm9taXNlLnN0YXRlID0gUkVKRUNURUQ7XG4gICAgICAgICAgICBwcm9taXNlLnZhbHVlID0gcmVhc29uO1xuICAgICAgICAgICAgcHJvbWlzZS5ub3RpZnkoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwLm5vdGlmeSA9IGZ1bmN0aW9uIG5vdGlmeSgpIHtcbiAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgYXN5bmMoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMkMS5zdGF0ZSAhPT0gUEVORElORykge1xuICAgICAgICAgICAgICAgIHdoaWxlICh0aGlzJDEuZGVmZXJyZWQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzJDEuZGVmZXJyZWQuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG9uUmVzb2x2ZWQgPSByZWZbMF07XG4gICAgICAgICAgICAgICAgICAgIHZhciBvblJlamVjdGVkID0gcmVmWzFdO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzb2x2ZSA9IHJlZlsyXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlamVjdCA9IHJlZlszXTtcblxuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5zdGF0ZSA9PT0gUkVTT0xWRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihvblJlc29sdmVkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG9uUmVzb2x2ZWQuY2FsbCh1bmRlZmluZWQsIHRoaXMkMS52YWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodGhpcyQxLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMkMS5zdGF0ZSA9PT0gUkVKRUNURUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihvblJlamVjdGVkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG9uUmVqZWN0ZWQuY2FsbCh1bmRlZmluZWQsIHRoaXMkMS52YWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCh0aGlzJDEudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcC50aGVuID0gZnVuY3Rpb24gdGhlbihvblJlc29sdmVkLCBvblJlamVjdGVkKSB7XG4gICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUZuKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHRoaXMkMS5kZWZlcnJlZC5wdXNoKFtvblJlc29sdmVkLCBvblJlamVjdGVkLCByZXNvbHZlLCByZWplY3RdKTtcbiAgICAgICAgICAgIHRoaXMkMS5ub3RpZnkoKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIHAuY2F0Y2ggPSBmdW5jdGlvbiAob25SZWplY3RlZCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aGVuKHVuZGVmaW5lZCwgb25SZWplY3RlZCk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGFqYXgodXJsLCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcblxuICAgICAgICAgICAgdmFyIGVudiA9IGFzc2lnbih7XG4gICAgICAgICAgICAgICAgZGF0YTogbnVsbCxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgICAgICAgICAgIHhocjogbmV3IFhNTEh0dHBSZXF1ZXN0KCksXG4gICAgICAgICAgICAgICAgYmVmb3JlU2VuZDogbm9vcCxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICcnXG4gICAgICAgICAgICB9LCBvcHRpb25zKTtcblxuICAgICAgICAgICAgZW52LmJlZm9yZVNlbmQoZW52KTtcblxuICAgICAgICAgICAgdmFyIHhociA9IGVudi54aHI7XG5cbiAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gZW52KSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3AgaW4geGhyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHhocltwcm9wXSA9IGVudltwcm9wXTtcblxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgeGhyLm9wZW4oZW52Lm1ldGhvZC50b1VwcGVyQ2FzZSgpLCB1cmwpO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBoZWFkZXIgaW4gZW52LmhlYWRlcnMpIHtcbiAgICAgICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihoZWFkZXIsIGVudi5oZWFkZXJzW2hlYWRlcl0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvbih4aHIsICdsb2FkJywgZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDAgfHwgeGhyLnN0YXR1cyA+PSAyMDAgJiYgeGhyLnN0YXR1cyA8IDMwMCB8fCB4aHIuc3RhdHVzID09PSAzMDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh4aHIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChhc3NpZ24oRXJyb3IoeGhyLnN0YXR1c1RleHQpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB4aHI6IHhocixcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogeGhyLnN0YXR1c1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgb24oeGhyLCAnZXJyb3InLCBmdW5jdGlvbiAoKSB7IHJldHVybiByZWplY3QoYXNzaWduKEVycm9yKCdOZXR3b3JrIEVycm9yJyksIHt4aHI6IHhocn0pKTsgfSk7XG4gICAgICAgICAgICBvbih4aHIsICd0aW1lb3V0JywgZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVqZWN0KGFzc2lnbihFcnJvcignTmV0d29yayBUaW1lb3V0JyksIHt4aHI6IHhocn0pKTsgfSk7XG5cbiAgICAgICAgICAgIHhoci5zZW5kKGVudi5kYXRhKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0SW1hZ2Uoc3JjLCBzcmNzZXQsIHNpemVzKSB7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpO1xuXG4gICAgICAgICAgICBpbWcub25lcnJvciA9IHJlamVjdDtcbiAgICAgICAgICAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiByZXNvbHZlKGltZyk7IH07XG5cbiAgICAgICAgICAgIGltZy5zcmMgPSBzcmM7XG4gICAgICAgICAgICBzcmNzZXQgJiYgKGltZy5zcmNzZXQgPSBzcmNzZXQpO1xuICAgICAgICAgICAgc2l6ZXMgJiYgKGltZy5zaXplcyA9IHNpemVzKTtcbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1JlYWR5KCkge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJyB8fCBkb2N1bWVudC5yZWFkeVN0YXRlICE9PSAnbG9hZGluZycgJiYgIWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWFkeShmbikge1xuXG4gICAgICAgIGlmIChpc1JlYWR5KCkpIHtcbiAgICAgICAgICAgIGZuKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaGFuZGxlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdW5iaW5kMSgpO1xuICAgICAgICAgICAgdW5iaW5kMigpO1xuICAgICAgICAgICAgZm4oKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHVuYmluZDEgPSBvbihkb2N1bWVudCwgJ0RPTUNvbnRlbnRMb2FkZWQnLCBoYW5kbGUpO1xuICAgICAgICB2YXIgdW5iaW5kMiA9IG9uKHdpbmRvdywgJ2xvYWQnLCBoYW5kbGUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluZGV4KGVsZW1lbnQsIHJlZikge1xuICAgICAgICByZXR1cm4gcmVmXG4gICAgICAgICAgICA/IHRvTm9kZXMoZWxlbWVudCkuaW5kZXhPZih0b05vZGUocmVmKSlcbiAgICAgICAgICAgIDogdG9Ob2RlcygoZWxlbWVudCA9IHRvTm9kZShlbGVtZW50KSkgJiYgZWxlbWVudC5wYXJlbnROb2RlLmNoaWxkcmVuKS5pbmRleE9mKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEluZGV4KGksIGVsZW1lbnRzLCBjdXJyZW50LCBmaW5pdGUpIHtcbiAgICAgICAgaWYgKCBjdXJyZW50ID09PSB2b2lkIDAgKSBjdXJyZW50ID0gMDtcbiAgICAgICAgaWYgKCBmaW5pdGUgPT09IHZvaWQgMCApIGZpbml0ZSA9IGZhbHNlO1xuXG5cbiAgICAgICAgZWxlbWVudHMgPSB0b05vZGVzKGVsZW1lbnRzKTtcblxuICAgICAgICB2YXIgbGVuZ3RoID0gZWxlbWVudHMubGVuZ3RoO1xuXG4gICAgICAgIGkgPSBpc051bWVyaWMoaSlcbiAgICAgICAgICAgID8gdG9OdW1iZXIoaSlcbiAgICAgICAgICAgIDogaSA9PT0gJ25leHQnXG4gICAgICAgICAgICAgICAgPyBjdXJyZW50ICsgMVxuICAgICAgICAgICAgICAgIDogaSA9PT0gJ3ByZXZpb3VzJ1xuICAgICAgICAgICAgICAgICAgICA/IGN1cnJlbnQgLSAxXG4gICAgICAgICAgICAgICAgICAgIDogaW5kZXgoZWxlbWVudHMsIGkpO1xuXG4gICAgICAgIGlmIChmaW5pdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBjbGFtcChpLCAwLCBsZW5ndGggLSAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGkgJT0gbGVuZ3RoO1xuXG4gICAgICAgIHJldHVybiBpIDwgMCA/IGkgKyBsZW5ndGggOiBpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVtcHR5KGVsZW1lbnQpIHtcbiAgICAgICAgZWxlbWVudCA9IHRvTm9kZShlbGVtZW50KTtcbiAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSAnJztcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaHRtbChwYXJlbnQsIGh0bWwpIHtcbiAgICAgICAgcGFyZW50ID0gdG9Ob2RlKHBhcmVudCk7XG4gICAgICAgIHJldHVybiBpc1VuZGVmaW5lZChodG1sKVxuICAgICAgICAgICAgPyBwYXJlbnQuaW5uZXJIVE1MXG4gICAgICAgICAgICA6IGFwcGVuZChwYXJlbnQuaGFzQ2hpbGROb2RlcygpID8gZW1wdHkocGFyZW50KSA6IHBhcmVudCwgaHRtbCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJlcGVuZChwYXJlbnQsIGVsZW1lbnQpIHtcblxuICAgICAgICBwYXJlbnQgPSB0b05vZGUocGFyZW50KTtcblxuICAgICAgICBpZiAoIXBhcmVudC5oYXNDaGlsZE5vZGVzKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBhcHBlbmQocGFyZW50LCBlbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBpbnNlcnROb2RlcyhlbGVtZW50LCBmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gcGFyZW50Lmluc2VydEJlZm9yZShlbGVtZW50LCBwYXJlbnQuZmlyc3RDaGlsZCk7IH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXBwZW5kKHBhcmVudCwgZWxlbWVudCkge1xuICAgICAgICBwYXJlbnQgPSB0b05vZGUocGFyZW50KTtcbiAgICAgICAgcmV0dXJuIGluc2VydE5vZGVzKGVsZW1lbnQsIGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJlZm9yZShyZWYsIGVsZW1lbnQpIHtcbiAgICAgICAgcmVmID0gdG9Ob2RlKHJlZik7XG4gICAgICAgIHJldHVybiBpbnNlcnROb2RlcyhlbGVtZW50LCBmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gcmVmLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIHJlZik7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFmdGVyKHJlZiwgZWxlbWVudCkge1xuICAgICAgICByZWYgPSB0b05vZGUocmVmKTtcbiAgICAgICAgcmV0dXJuIGluc2VydE5vZGVzKGVsZW1lbnQsIGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiByZWYubmV4dFNpYmxpbmdcbiAgICAgICAgICAgID8gYmVmb3JlKHJlZi5uZXh0U2libGluZywgZWxlbWVudClcbiAgICAgICAgICAgIDogYXBwZW5kKHJlZi5wYXJlbnROb2RlLCBlbGVtZW50KTsgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluc2VydE5vZGVzKGVsZW1lbnQsIGZuKSB7XG4gICAgICAgIGVsZW1lbnQgPSBpc1N0cmluZyhlbGVtZW50KSA/IGZyYWdtZW50KGVsZW1lbnQpIDogZWxlbWVudDtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnRcbiAgICAgICAgICAgID8gJ2xlbmd0aCcgaW4gZWxlbWVudFxuICAgICAgICAgICAgICAgID8gdG9Ob2RlcyhlbGVtZW50KS5tYXAoZm4pXG4gICAgICAgICAgICAgICAgOiBmbihlbGVtZW50KVxuICAgICAgICAgICAgOiBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZShlbGVtZW50KSB7XG4gICAgICAgIHRvTm9kZXMoZWxlbWVudCkubWFwKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LnBhcmVudE5vZGUgJiYgZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW1lbnQpOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3cmFwQWxsKGVsZW1lbnQsIHN0cnVjdHVyZSkge1xuXG4gICAgICAgIHN0cnVjdHVyZSA9IHRvTm9kZShiZWZvcmUoZWxlbWVudCwgc3RydWN0dXJlKSk7XG5cbiAgICAgICAgd2hpbGUgKHN0cnVjdHVyZS5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUuZmlyc3RDaGlsZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGFwcGVuZChzdHJ1Y3R1cmUsIGVsZW1lbnQpO1xuXG4gICAgICAgIHJldHVybiBzdHJ1Y3R1cmU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd3JhcElubmVyKGVsZW1lbnQsIHN0cnVjdHVyZSkge1xuICAgICAgICByZXR1cm4gdG9Ob2Rlcyh0b05vZGVzKGVsZW1lbnQpLm1hcChmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNDaGlsZE5vZGVzID8gd3JhcEFsbCh0b05vZGVzKGVsZW1lbnQuY2hpbGROb2RlcyksIHN0cnVjdHVyZSkgOiBhcHBlbmQoZWxlbWVudCwgc3RydWN0dXJlKTsgfVxuICAgICAgICApKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1bndyYXAoZWxlbWVudCkge1xuICAgICAgICB0b05vZGVzKGVsZW1lbnQpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LnBhcmVudE5vZGU7IH0pXG4gICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgsIHNlbGYpIHsgcmV0dXJuIHNlbGYuaW5kZXhPZih2YWx1ZSkgPT09IGluZGV4OyB9KVxuICAgICAgICAgICAgLmZvckVhY2goZnVuY3Rpb24gKHBhcmVudCkge1xuICAgICAgICAgICAgICAgIGJlZm9yZShwYXJlbnQsIHBhcmVudC5jaGlsZE5vZGVzKTtcbiAgICAgICAgICAgICAgICByZW1vdmUocGFyZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBmcmFnbWVudFJlID0gL15cXHMqPChcXHcrfCEpW14+XSo+LztcbiAgICB2YXIgc2luZ2xlVGFnUmUgPSAvXjwoXFx3KylcXHMqXFwvPz4oPzo8XFwvXFwxPik/JC87XG5cbiAgICBmdW5jdGlvbiBmcmFnbWVudChodG1sKSB7XG5cbiAgICAgICAgdmFyIG1hdGNoZXMgPSBzaW5nbGVUYWdSZS5leGVjKGh0bWwpO1xuICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobWF0Y2hlc1sxXSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGlmIChmcmFnbWVudFJlLnRlc3QoaHRtbCkpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsIGh0bWwudHJpbSgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci50ZXh0Q29udGVudCA9IGh0bWw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGFpbmVyLmNoaWxkTm9kZXMubGVuZ3RoID4gMSA/IHRvTm9kZXMoY29udGFpbmVyLmNoaWxkTm9kZXMpIDogY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcHBseShub2RlLCBmbikge1xuXG4gICAgICAgIGlmICghbm9kZSB8fCBub2RlLm5vZGVUeXBlICE9PSAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmbihub2RlKTtcbiAgICAgICAgbm9kZSA9IG5vZGUuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgIHdoaWxlIChub2RlKSB7XG4gICAgICAgICAgICBhcHBseShub2RlLCBmbik7XG4gICAgICAgICAgICBub2RlID0gbm9kZS5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRDbGFzcyhlbGVtZW50KSB7XG4gICAgICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGggLSAxO1xuICAgICAgICB3aGlsZSAoIGxlbi0tID4gMCApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gKyAxIF07XG5cbiAgICAgICAgYXBwbHkkMShlbGVtZW50LCBhcmdzLCAnYWRkJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVtb3ZlQ2xhc3MoZWxlbWVudCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoIC0gMTtcbiAgICAgICAgd2hpbGUgKCBsZW4tLSA+IDAgKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuICsgMSBdO1xuXG4gICAgICAgIGFwcGx5JDEoZWxlbWVudCwgYXJncywgJ3JlbW92ZScpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZUNsYXNzZXMoZWxlbWVudCwgY2xzKSB7XG4gICAgICAgIGZpbHRlckF0dHIoZWxlbWVudCwgJ2NsYXNzJywgbmV3IFJlZ0V4cCgoXCIoXnxcXFxccylcIiArIGNscyArIFwiKD8hXFxcXFMpXCIpLCAnZycpLCAnJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVwbGFjZUNsYXNzKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgICAgIHdoaWxlICggbGVuLS0gPiAwICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiArIDEgXTtcblxuICAgICAgICBhcmdzWzBdICYmIHJlbW92ZUNsYXNzKGVsZW1lbnQsIGFyZ3NbMF0pO1xuICAgICAgICBhcmdzWzFdICYmIGFkZENsYXNzKGVsZW1lbnQsIGFyZ3NbMV0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhc0NsYXNzKGVsZW1lbnQsIGNscykge1xuICAgICAgICByZXR1cm4gdG9Ob2RlcyhlbGVtZW50KS5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhjbHMpOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b2dnbGVDbGFzcyhlbGVtZW50KSB7XG4gICAgICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGggLSAxO1xuICAgICAgICB3aGlsZSAoIGxlbi0tID4gMCApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gKyAxIF07XG5cblxuICAgICAgICBpZiAoIWFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBhcmdzID0gZ2V0QXJncyQxKGFyZ3MpO1xuXG4gICAgICAgIHZhciBmb3JjZSA9ICFpc1N0cmluZyhhcmdzW2FyZ3MubGVuZ3RoIC0gMV0pID8gYXJncy5wb3AoKSA6IFtdOyAvLyBpbiBpT1MgOS4zIGZvcmNlID09PSB1bmRlZmluZWQgZXZhbHVhdGVzIHRvIGZhbHNlXG5cbiAgICAgICAgYXJncyA9IGFyZ3MuZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgICAgIHRvTm9kZXMoZWxlbWVudCkuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICB2YXIgY2xhc3NMaXN0ID0gcmVmLmNsYXNzTGlzdDtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgc3VwcG9ydHMuRm9yY2VcbiAgICAgICAgICAgICAgICAgICAgPyBjbGFzc0xpc3QudG9nZ2xlLmFwcGx5KGNsYXNzTGlzdCwgW2FyZ3NbaV1dLmNvbmNhdChmb3JjZSkpXG4gICAgICAgICAgICAgICAgICAgIDogKGNsYXNzTGlzdFsoIWlzVW5kZWZpbmVkKGZvcmNlKSA/IGZvcmNlIDogIWNsYXNzTGlzdC5jb250YWlucyhhcmdzW2ldKSkgPyAnYWRkJyA6ICdyZW1vdmUnXShhcmdzW2ldKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXBwbHkkMShlbGVtZW50LCBhcmdzLCBmbikge1xuICAgICAgICBhcmdzID0gZ2V0QXJncyQxKGFyZ3MpLmZpbHRlcihCb29sZWFuKTtcblxuICAgICAgICBhcmdzLmxlbmd0aCAmJiB0b05vZGVzKGVsZW1lbnQpLmZvckVhY2goZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgdmFyIGNsYXNzTGlzdCA9IHJlZi5jbGFzc0xpc3Q7XG5cbiAgICAgICAgICAgIHN1cHBvcnRzLk11bHRpcGxlXG4gICAgICAgICAgICAgICAgPyBjbGFzc0xpc3RbZm5dLmFwcGx5KGNsYXNzTGlzdCwgYXJncylcbiAgICAgICAgICAgICAgICA6IGFyZ3MuZm9yRWFjaChmdW5jdGlvbiAoY2xzKSB7IHJldHVybiBjbGFzc0xpc3RbZm5dKGNscyk7IH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRBcmdzJDEoYXJncykge1xuICAgICAgICByZXR1cm4gYXJncy5yZWR1Y2UoZnVuY3Rpb24gKGFyZ3MsIGFyZykgeyByZXR1cm4gYXJncy5jb25jYXQuY2FsbChhcmdzLCBpc1N0cmluZyhhcmcpICYmIGluY2x1ZGVzKGFyZywgJyAnKSA/IGFyZy50cmltKCkuc3BsaXQoJyAnKSA6IGFyZyk7IH1cbiAgICAgICAgICAgICwgW10pO1xuICAgIH1cblxuICAgIHZhciBzdXBwb3J0cyA9IHt9O1xuXG4gICAgLy8gSUUgMTFcbiAgICAoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgIHZhciBsaXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnXycpLmNsYXNzTGlzdDtcbiAgICAgICAgaWYgKGxpc3QpIHtcbiAgICAgICAgICAgIGxpc3QuYWRkKCdhJywgJ2InKTtcbiAgICAgICAgICAgIGxpc3QudG9nZ2xlKCdjJywgZmFsc2UpO1xuICAgICAgICAgICAgc3VwcG9ydHMuTXVsdGlwbGUgPSBsaXN0LmNvbnRhaW5zKCdiJyk7XG4gICAgICAgICAgICBzdXBwb3J0cy5Gb3JjZSA9ICFsaXN0LmNvbnRhaW5zKCdjJyk7XG4gICAgICAgIH1cbiAgICAgICAgbGlzdCA9IG51bGw7XG5cbiAgICB9KSgpO1xuXG4gICAgdmFyIGNzc051bWJlciA9IHtcbiAgICAgICAgJ2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQnOiB0cnVlLFxuICAgICAgICAnY29sdW1uLWNvdW50JzogdHJ1ZSxcbiAgICAgICAgJ2ZpbGwtb3BhY2l0eSc6IHRydWUsXG4gICAgICAgICdmbGV4LWdyb3cnOiB0cnVlLFxuICAgICAgICAnZmxleC1zaHJpbmsnOiB0cnVlLFxuICAgICAgICAnZm9udC13ZWlnaHQnOiB0cnVlLFxuICAgICAgICAnbGluZS1oZWlnaHQnOiB0cnVlLFxuICAgICAgICAnb3BhY2l0eSc6IHRydWUsXG4gICAgICAgICdvcmRlcic6IHRydWUsXG4gICAgICAgICdvcnBoYW5zJzogdHJ1ZSxcbiAgICAgICAgJ3dpZG93cyc6IHRydWUsXG4gICAgICAgICd6LWluZGV4JzogdHJ1ZSxcbiAgICAgICAgJ3pvb20nOiB0cnVlXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGNzcyhlbGVtZW50LCBwcm9wZXJ0eSwgdmFsdWUpIHtcblxuICAgICAgICByZXR1cm4gdG9Ob2RlcyhlbGVtZW50KS5tYXAoZnVuY3Rpb24gKGVsZW1lbnQpIHtcblxuICAgICAgICAgICAgaWYgKGlzU3RyaW5nKHByb3BlcnR5KSkge1xuXG4gICAgICAgICAgICAgICAgcHJvcGVydHkgPSBwcm9wTmFtZShwcm9wZXJ0eSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRTdHlsZShlbGVtZW50LCBwcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdmFsdWUgJiYgdmFsdWUgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShwcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZVtwcm9wZXJ0eV0gPSBpc051bWVyaWModmFsdWUpICYmICFjc3NOdW1iZXJbcHJvcGVydHldID8gKHZhbHVlICsgXCJweFwiKSA6IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0FycmF5KHByb3BlcnR5KSkge1xuXG4gICAgICAgICAgICAgICAgdmFyIHN0eWxlcyA9IGdldFN0eWxlcyhlbGVtZW50KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wZXJ0eS5yZWR1Y2UoZnVuY3Rpb24gKHByb3BzLCBwcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wc1twcm9wZXJ0eV0gPSBzdHlsZXNbcHJvcE5hbWUocHJvcGVydHkpXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzO1xuICAgICAgICAgICAgICAgIH0sIHt9KTtcblxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc09iamVjdChwcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgICAgICBlYWNoKHByb3BlcnR5LCBmdW5jdGlvbiAodmFsdWUsIHByb3BlcnR5KSB7IHJldHVybiBjc3MoZWxlbWVudCwgcHJvcGVydHksIHZhbHVlKTsgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50O1xuXG4gICAgICAgIH0pWzBdO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U3R5bGVzKGVsZW1lbnQsIHBzZXVkb0VsdCkge1xuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgcHNldWRvRWx0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTdHlsZShlbGVtZW50LCBwcm9wZXJ0eSwgcHNldWRvRWx0KSB7XG4gICAgICAgIHJldHVybiBnZXRTdHlsZXMoZWxlbWVudCwgcHNldWRvRWx0KVtwcm9wZXJ0eV07XG4gICAgfVxuXG4gICAgdmFyIHZhcnMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGdldENzc1ZhcihuYW1lKSB7XG5cbiAgICAgICAgaWYgKCEobmFtZSBpbiB2YXJzKSkge1xuXG4gICAgICAgICAgICAvKiB1c2FnZSBpbiBjc3M6IC52YXItbmFtZTpiZWZvcmUgeyBjb250ZW50OlwieHl6XCIgfSAqL1xuXG4gICAgICAgICAgICB2YXIgZWxlbWVudCA9IGFwcGVuZChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTtcblxuICAgICAgICAgICAgYWRkQ2xhc3MoZWxlbWVudCwgKFwidmFyLVwiICsgbmFtZSkpO1xuXG4gICAgICAgICAgICB0cnkge1xuXG4gICAgICAgICAgICAgICAgdmFyc1tuYW1lXSA9IGdldFN0eWxlKGVsZW1lbnQsICdjb250ZW50JywgJzpiZWZvcmUnKS5yZXBsYWNlKC9eW1wiJ10oLiopW1wiJ10kLywgJyQxJyk7XG4gICAgICAgICAgICAgICAgdmFyc1tuYW1lXSA9IEpTT04ucGFyc2UodmFyc1tuYW1lXSk7XG5cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG5cbiAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5yZW1vdmVDaGlsZChlbGVtZW50KTtcblxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhcnNbbmFtZV07XG5cbiAgICB9XG5cbiAgICB2YXIgY3NzUHJvcHMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIHByb3BOYW1lKG5hbWUpIHtcblxuICAgICAgICB2YXIgcmV0ID0gY3NzUHJvcHNbbmFtZV07XG4gICAgICAgIGlmICghcmV0KSB7XG4gICAgICAgICAgICByZXQgPSBjc3NQcm9wc1tuYW1lXSA9IHZlbmRvclByb3BOYW1lKG5hbWUpIHx8IG5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG5cbiAgICB2YXIgY3NzUHJlZml4ZXMgPSBbJ3dlYmtpdCcsICdtb3onLCAnbXMnXTtcbiAgICB2YXIgcmVmJDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdfJyk7XG4gICAgdmFyIHN0eWxlID0gcmVmJDEuc3R5bGU7XG5cbiAgICBmdW5jdGlvbiB2ZW5kb3JQcm9wTmFtZShuYW1lKSB7XG5cbiAgICAgICAgbmFtZSA9IGh5cGhlbmF0ZShuYW1lKTtcblxuICAgICAgICBpZiAobmFtZSBpbiBzdHlsZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaSA9IGNzc1ByZWZpeGVzLmxlbmd0aCwgcHJlZml4ZWROYW1lO1xuXG4gICAgICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgICAgIHByZWZpeGVkTmFtZSA9IFwiLVwiICsgKGNzc1ByZWZpeGVzW2ldKSArIFwiLVwiICsgbmFtZTtcbiAgICAgICAgICAgIGlmIChwcmVmaXhlZE5hbWUgaW4gc3R5bGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJlZml4ZWROYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJhbnNpdGlvbihlbGVtZW50LCBwcm9wcywgZHVyYXRpb24sIHRpbWluZykge1xuICAgICAgICBpZiAoIGR1cmF0aW9uID09PSB2b2lkIDAgKSBkdXJhdGlvbiA9IDQwMDtcbiAgICAgICAgaWYgKCB0aW1pbmcgPT09IHZvaWQgMCApIHRpbWluZyA9ICdsaW5lYXInO1xuXG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UkMS5hbGwodG9Ob2RlcyhlbGVtZW50KS5tYXAoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBwcm9wcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBjc3MoZWxlbWVudCwgbmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyhlbGVtZW50LCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgdGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRyaWdnZXIoZWxlbWVudCwgJ3RyYW5zaXRpb25lbmQnKTsgfSwgZHVyYXRpb24pO1xuXG4gICAgICAgICAgICAgICAgb25jZShlbGVtZW50LCAndHJhbnNpdGlvbmVuZCB0cmFuc2l0aW9uY2FuY2VsZWQnLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gcmVmLnR5cGU7XG5cbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3MoZWxlbWVudCwgJ3VrLXRyYW5zaXRpb24nKTtcbiAgICAgICAgICAgICAgICAgICAgY3NzKGVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uLXByb3BlcnR5JzogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbi1kdXJhdGlvbic6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJzogJydcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPT09ICd0cmFuc2l0aW9uY2FuY2VsZWQnID8gcmVqZWN0KCkgOiByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSwgZmFsc2UsIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgPT09IHRhcmdldDtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGFkZENsYXNzKGVsZW1lbnQsICd1ay10cmFuc2l0aW9uJyk7XG4gICAgICAgICAgICAgICAgY3NzKGVsZW1lbnQsIGFzc2lnbih7XG4gICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uLXByb3BlcnR5JzogT2JqZWN0LmtleXMocHJvcHMpLm1hcChwcm9wTmFtZSkuam9pbignLCcpLFxuICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbi1kdXJhdGlvbic6IChkdXJhdGlvbiArIFwibXNcIiksXG4gICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbic6IHRpbWluZ1xuICAgICAgICAgICAgICAgIH0sIHByb3BzKSk7XG5cbiAgICAgICAgICAgIH0pOyB9XG4gICAgICAgICkpO1xuXG4gICAgfVxuXG4gICAgdmFyIFRyYW5zaXRpb24gPSB7XG5cbiAgICAgICAgc3RhcnQ6IHRyYW5zaXRpb24sXG5cbiAgICAgICAgc3RvcDogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgdHJpZ2dlcihlbGVtZW50LCAndHJhbnNpdGlvbmVuZCcpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5yZXNvbHZlKCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2FuY2VsOiBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICB0cmlnZ2VyKGVsZW1lbnQsICd0cmFuc2l0aW9uY2FuY2VsZWQnKTtcbiAgICAgICAgfSxcblxuICAgICAgICBpblByb2dyZXNzOiBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gaGFzQ2xhc3MoZWxlbWVudCwgJ3VrLXRyYW5zaXRpb24nKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBhbmltYXRpb25QcmVmaXggPSAndWstYW5pbWF0aW9uLSc7XG4gICAgdmFyIGNsc0NhbmNlbEFuaW1hdGlvbiA9ICd1ay1jYW5jZWwtYW5pbWF0aW9uJztcblxuICAgIGZ1bmN0aW9uIGFuaW1hdGUoZWxlbWVudCwgYW5pbWF0aW9uLCBkdXJhdGlvbiwgb3JpZ2luLCBvdXQpIHtcbiAgICAgICAgdmFyIGFyZ3VtZW50cyQxID0gYXJndW1lbnRzO1xuICAgICAgICBpZiAoIGR1cmF0aW9uID09PSB2b2lkIDAgKSBkdXJhdGlvbiA9IDIwMDtcblxuXG4gICAgICAgIHJldHVybiBQcm9taXNlJDEuYWxsKHRvTm9kZXMoZWxlbWVudCkubWFwKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcblxuICAgICAgICAgICAgICAgIGlmIChoYXNDbGFzcyhlbGVtZW50LCBjbHNDYW5jZWxBbmltYXRpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7IHJldHVybiBQcm9taXNlJDEucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gYW5pbWF0ZS5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyQxKS50aGVuKHJlc29sdmUsIHJlamVjdCk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7IH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBjbHMgPSBhbmltYXRpb24gKyBcIiBcIiArIGFuaW1hdGlvblByZWZpeCArIChvdXQgPyAnbGVhdmUnIDogJ2VudGVyJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RhcnRzV2l0aChhbmltYXRpb24sIGFuaW1hdGlvblByZWZpeCkpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAob3JpZ2luKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHMgKz0gXCIgdWstdHJhbnNmb3JtLW9yaWdpbi1cIiArIG9yaWdpbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNscyArPSBcIiBcIiArIGFuaW1hdGlvblByZWZpeCArIFwicmV2ZXJzZVwiO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXNldCgpO1xuXG4gICAgICAgICAgICAgICAgb25jZShlbGVtZW50LCAnYW5pbWF0aW9uZW5kIGFuaW1hdGlvbmNhbmNlbCcsIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSByZWYudHlwZTtcblxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBoYXNSZXNldCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnYW5pbWF0aW9uY2FuY2VsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgUHJvbWlzZSQxLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNSZXNldCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaGFzUmVzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyhlbGVtZW50LCBjbHNDYW5jZWxBbmltYXRpb24pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlbW92ZUNsYXNzKGVsZW1lbnQsIGNsc0NhbmNlbEFuaW1hdGlvbik7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIH0sIGZhbHNlLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50ID09PSB0YXJnZXQ7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwgJ2FuaW1hdGlvbkR1cmF0aW9uJywgKGR1cmF0aW9uICsgXCJtc1wiKSk7XG4gICAgICAgICAgICAgICAgYWRkQ2xhc3MoZWxlbWVudCwgY2xzKTtcblxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgICAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwgJ2FuaW1hdGlvbkR1cmF0aW9uJywgJycpO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzc2VzKGVsZW1lbnQsIChhbmltYXRpb25QcmVmaXggKyBcIlxcXFxTKlwiKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9KTsgfVxuICAgICAgICApKTtcblxuICAgIH1cblxuICAgIHZhciBpblByb2dyZXNzID0gbmV3IFJlZ0V4cCgoYW5pbWF0aW9uUHJlZml4ICsgXCIoZW50ZXJ8bGVhdmUpXCIpKTtcbiAgICB2YXIgQW5pbWF0aW9uID0ge1xuXG4gICAgICAgIGluOiBmdW5jdGlvbihlbGVtZW50LCBhbmltYXRpb24sIGR1cmF0aW9uLCBvcmlnaW4pIHtcbiAgICAgICAgICAgIHJldHVybiBhbmltYXRlKGVsZW1lbnQsIGFuaW1hdGlvbiwgZHVyYXRpb24sIG9yaWdpbiwgZmFsc2UpO1xuICAgICAgICB9LFxuXG4gICAgICAgIG91dDogZnVuY3Rpb24oZWxlbWVudCwgYW5pbWF0aW9uLCBkdXJhdGlvbiwgb3JpZ2luKSB7XG4gICAgICAgICAgICByZXR1cm4gYW5pbWF0ZShlbGVtZW50LCBhbmltYXRpb24sIGR1cmF0aW9uLCBvcmlnaW4sIHRydWUpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGluUHJvZ3Jlc3M6IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBpblByb2dyZXNzLnRlc3QoYXR0cihlbGVtZW50LCAnY2xhc3MnKSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2FuY2VsOiBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICB0cmlnZ2VyKGVsZW1lbnQsICdhbmltYXRpb25jYW5jZWwnKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uICQoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuICFpc1N0cmluZyhzZWxlY3RvcilcbiAgICAgICAgICAgID8gdG9Ob2RlKHNlbGVjdG9yKVxuICAgICAgICAgICAgOiBpc0h0bWwoc2VsZWN0b3IpXG4gICAgICAgICAgICAgICAgPyB0b05vZGUoZnJhZ21lbnQoc2VsZWN0b3IpKVxuICAgICAgICAgICAgICAgIDogZmluZChzZWxlY3RvciwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gJCQoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuICFpc1N0cmluZyhzZWxlY3RvcilcbiAgICAgICAgICAgID8gdG9Ob2RlcyhzZWxlY3RvcilcbiAgICAgICAgICAgIDogaXNIdG1sKHNlbGVjdG9yKVxuICAgICAgICAgICAgICAgID8gdG9Ob2RlcyhmcmFnbWVudChzZWxlY3RvcikpXG4gICAgICAgICAgICAgICAgOiBmaW5kQWxsKHNlbGVjdG9yLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0h0bWwoc3RyKSB7XG4gICAgICAgIHJldHVybiBzdHJbMF0gPT09ICc8JyB8fCBzdHIubWF0Y2goL15cXHMqPC8pO1xuICAgIH1cblxuICAgIHZhciBkaXJzID0ge1xuICAgICAgICB3aWR0aDogWyd4JywgJ2xlZnQnLCAncmlnaHQnXSxcbiAgICAgICAgaGVpZ2h0OiBbJ3knLCAndG9wJywgJ2JvdHRvbSddXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHBvc2l0aW9uQXQoZWxlbWVudCwgdGFyZ2V0LCBlbEF0dGFjaCwgdGFyZ2V0QXR0YWNoLCBlbE9mZnNldCwgdGFyZ2V0T2Zmc2V0LCBmbGlwLCBib3VuZGFyeSkge1xuXG4gICAgICAgIGVsQXR0YWNoID0gZ2V0UG9zKGVsQXR0YWNoKTtcbiAgICAgICAgdGFyZ2V0QXR0YWNoID0gZ2V0UG9zKHRhcmdldEF0dGFjaCk7XG5cbiAgICAgICAgdmFyIGZsaXBwZWQgPSB7ZWxlbWVudDogZWxBdHRhY2gsIHRhcmdldDogdGFyZ2V0QXR0YWNofTtcblxuICAgICAgICBpZiAoIWVsZW1lbnQgfHwgIXRhcmdldCkge1xuICAgICAgICAgICAgcmV0dXJuIGZsaXBwZWQ7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZGltID0gZ2V0RGltZW5zaW9ucyhlbGVtZW50KTtcbiAgICAgICAgdmFyIHRhcmdldERpbSA9IGdldERpbWVuc2lvbnModGFyZ2V0KTtcbiAgICAgICAgdmFyIHBvc2l0aW9uID0gdGFyZ2V0RGltO1xuXG4gICAgICAgIG1vdmVUbyhwb3NpdGlvbiwgZWxBdHRhY2gsIGRpbSwgLTEpO1xuICAgICAgICBtb3ZlVG8ocG9zaXRpb24sIHRhcmdldEF0dGFjaCwgdGFyZ2V0RGltLCAxKTtcblxuICAgICAgICBlbE9mZnNldCA9IGdldE9mZnNldHMoZWxPZmZzZXQsIGRpbS53aWR0aCwgZGltLmhlaWdodCk7XG4gICAgICAgIHRhcmdldE9mZnNldCA9IGdldE9mZnNldHModGFyZ2V0T2Zmc2V0LCB0YXJnZXREaW0ud2lkdGgsIHRhcmdldERpbS5oZWlnaHQpO1xuXG4gICAgICAgIGVsT2Zmc2V0Wyd4J10gKz0gdGFyZ2V0T2Zmc2V0Wyd4J107XG4gICAgICAgIGVsT2Zmc2V0Wyd5J10gKz0gdGFyZ2V0T2Zmc2V0Wyd5J107XG5cbiAgICAgICAgcG9zaXRpb24ubGVmdCArPSBlbE9mZnNldFsneCddO1xuICAgICAgICBwb3NpdGlvbi50b3AgKz0gZWxPZmZzZXRbJ3knXTtcblxuICAgICAgICBib3VuZGFyeSA9IGdldERpbWVuc2lvbnMoYm91bmRhcnkgfHwgd2luZG93JDEoZWxlbWVudCkpO1xuXG4gICAgICAgIGlmIChmbGlwKSB7XG4gICAgICAgICAgICBlYWNoKGRpcnMsIGZ1bmN0aW9uIChyZWYsIHByb3ApIHtcbiAgICAgICAgICAgICAgICB2YXIgZGlyID0gcmVmWzBdO1xuICAgICAgICAgICAgICAgIHZhciBhbGlnbiA9IHJlZlsxXTtcbiAgICAgICAgICAgICAgICB2YXIgYWxpZ25GbGlwID0gcmVmWzJdO1xuXG5cbiAgICAgICAgICAgICAgICBpZiAoIShmbGlwID09PSB0cnVlIHx8IGluY2x1ZGVzKGZsaXAsIGRpcikpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgZWxlbU9mZnNldCA9IGVsQXR0YWNoW2Rpcl0gPT09IGFsaWduXG4gICAgICAgICAgICAgICAgICAgID8gLWRpbVtwcm9wXVxuICAgICAgICAgICAgICAgICAgICA6IGVsQXR0YWNoW2Rpcl0gPT09IGFsaWduRmxpcFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBkaW1bcHJvcF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogMDtcblxuICAgICAgICAgICAgICAgIHZhciB0YXJnZXRPZmZzZXQgPSB0YXJnZXRBdHRhY2hbZGlyXSA9PT0gYWxpZ25cbiAgICAgICAgICAgICAgICAgICAgPyB0YXJnZXREaW1bcHJvcF1cbiAgICAgICAgICAgICAgICAgICAgOiB0YXJnZXRBdHRhY2hbZGlyXSA9PT0gYWxpZ25GbGlwXG4gICAgICAgICAgICAgICAgICAgICAgICA/IC10YXJnZXREaW1bcHJvcF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogMDtcblxuICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvblthbGlnbl0gPCBib3VuZGFyeVthbGlnbl0gfHwgcG9zaXRpb25bYWxpZ25dICsgZGltW3Byb3BdID4gYm91bmRhcnlbYWxpZ25GbGlwXSkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBjZW50ZXJPZmZzZXQgPSBkaW1bcHJvcF0gLyAyO1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2VudGVyVGFyZ2V0T2Zmc2V0ID0gdGFyZ2V0QXR0YWNoW2Rpcl0gPT09ICdjZW50ZXInID8gLXRhcmdldERpbVtwcm9wXSAvIDIgOiAwO1xuXG4gICAgICAgICAgICAgICAgICAgIGVsQXR0YWNoW2Rpcl0gPT09ICdjZW50ZXInICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5KGNlbnRlck9mZnNldCwgY2VudGVyVGFyZ2V0T2Zmc2V0KVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgYXBwbHkoLWNlbnRlck9mZnNldCwgLWNlbnRlclRhcmdldE9mZnNldClcbiAgICAgICAgICAgICAgICAgICAgKSB8fCBhcHBseShlbGVtT2Zmc2V0LCB0YXJnZXRPZmZzZXQpO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gYXBwbHkoZWxlbU9mZnNldCwgdGFyZ2V0T2Zmc2V0KSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIG5ld1ZhbCA9IHBvc2l0aW9uW2FsaWduXSArIGVsZW1PZmZzZXQgKyB0YXJnZXRPZmZzZXQgLSBlbE9mZnNldFtkaXJdICogMjtcblxuICAgICAgICAgICAgICAgICAgICBpZiAobmV3VmFsID49IGJvdW5kYXJ5W2FsaWduXSAmJiBuZXdWYWwgKyBkaW1bcHJvcF0gPD0gYm91bmRhcnlbYWxpZ25GbGlwXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25bYWxpZ25dID0gbmV3VmFsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBbJ2VsZW1lbnQnLCAndGFyZ2V0J10uZm9yRWFjaChmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGlwcGVkW2VsXVtkaXJdID0gIWVsZW1PZmZzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBmbGlwcGVkW2VsXVtkaXJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZmxpcHBlZFtlbF1bZGlyXSA9PT0gZGlyc1twcm9wXVsxXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBkaXJzW3Byb3BdWzJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGRpcnNbcHJvcF1bMV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBvZmZzZXQoZWxlbWVudCwgcG9zaXRpb24pO1xuXG4gICAgICAgIHJldHVybiBmbGlwcGVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9mZnNldChlbGVtZW50LCBjb29yZGluYXRlcykge1xuXG4gICAgICAgIGVsZW1lbnQgPSB0b05vZGUoZWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGNvb3JkaW5hdGVzKSB7XG5cbiAgICAgICAgICAgIHZhciBjdXJyZW50T2Zmc2V0ID0gb2Zmc2V0KGVsZW1lbnQpO1xuICAgICAgICAgICAgdmFyIHBvcyA9IGNzcyhlbGVtZW50LCAncG9zaXRpb24nKTtcblxuICAgICAgICAgICAgWydsZWZ0JywgJ3RvcCddLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcCBpbiBjb29yZGluYXRlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBjc3MoZWxlbWVudCwgcHJvcCk7XG4gICAgICAgICAgICAgICAgICAgIGNzcyhlbGVtZW50LCBwcm9wLCBjb29yZGluYXRlc1twcm9wXSAtIGN1cnJlbnRPZmZzZXRbcHJvcF1cbiAgICAgICAgICAgICAgICAgICAgICAgICsgdG9GbG9hdChwb3MgPT09ICdhYnNvbHV0ZScgJiYgdmFsdWUgPT09ICdhdXRvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcG9zaXRpb24oZWxlbWVudClbcHJvcF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2V0RGltZW5zaW9ucyhlbGVtZW50KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXREaW1lbnNpb25zKGVsZW1lbnQpIHtcblxuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuXG4gICAgICAgIHZhciByZWYgPSB3aW5kb3ckMShlbGVtZW50KTtcbiAgICAgICAgdmFyIHRvcCA9IHJlZi5wYWdlWU9mZnNldDtcbiAgICAgICAgdmFyIGxlZnQgPSByZWYucGFnZVhPZmZzZXQ7XG5cbiAgICAgICAgaWYgKGlzV2luZG93KGVsZW1lbnQpKSB7XG5cbiAgICAgICAgICAgIHZhciBoZWlnaHQgPSBlbGVtZW50LmlubmVySGVpZ2h0O1xuICAgICAgICAgICAgdmFyIHdpZHRoID0gZWxlbWVudC5pbm5lcldpZHRoO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRvcDogdG9wLFxuICAgICAgICAgICAgICAgIGxlZnQ6IGxlZnQsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgICAgICAgIGJvdHRvbTogdG9wICsgaGVpZ2h0LFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBsZWZ0ICsgd2lkdGgsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHN0eWxlLCBoaWRkZW47XG5cbiAgICAgICAgaWYgKCFpc1Zpc2libGUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHN0eWxlID0gYXR0cihlbGVtZW50LCAnc3R5bGUnKTtcbiAgICAgICAgICAgIGhpZGRlbiA9IGF0dHIoZWxlbWVudCwgJ2hpZGRlbicpO1xuXG4gICAgICAgICAgICBhdHRyKGVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICBzdHlsZTogKChzdHlsZSB8fCAnJykgKyBcIjtkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnQ7XCIpLFxuICAgICAgICAgICAgICAgIGhpZGRlbjogbnVsbFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChzdHlsZSkpIHtcbiAgICAgICAgICAgIGF0dHIoZWxlbWVudCwge3N0eWxlOiBzdHlsZSwgaGlkZGVuOiBoaWRkZW59KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0LFxuICAgICAgICAgICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgICAgICAgICB0b3A6IHJlY3QudG9wICsgdG9wLFxuICAgICAgICAgICAgbGVmdDogcmVjdC5sZWZ0ICsgbGVmdCxcbiAgICAgICAgICAgIGJvdHRvbTogcmVjdC5ib3R0b20gKyB0b3AsXG4gICAgICAgICAgICByaWdodDogcmVjdC5yaWdodCArIGxlZnQsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcG9zaXRpb24oZWxlbWVudCkge1xuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuXG4gICAgICAgIHZhciBwYXJlbnQgPSBvZmZzZXRQYXJlbnQoZWxlbWVudCk7XG4gICAgICAgIHZhciBwYXJlbnRPZmZzZXQgPSBwYXJlbnQgPT09IGRvY0VsKGVsZW1lbnQpID8ge3RvcDogMCwgbGVmdDogMH0gOiBvZmZzZXQocGFyZW50KTtcbiAgICAgICAgdmFyIHJlZiA9IFsndG9wJywgJ2xlZnQnXS5yZWR1Y2UoZnVuY3Rpb24gKHByb3BzLCBwcm9wKSB7XG4gICAgICAgICAgICB2YXIgcHJvcE5hbWUkJDEgPSB1Y2ZpcnN0KHByb3ApO1xuICAgICAgICAgICAgcHJvcHNbcHJvcF0gLT0gcGFyZW50T2Zmc2V0W3Byb3BdXG4gICAgICAgICAgICAgICAgKyAodG9GbG9hdChjc3MoZWxlbWVudCwgKFwibWFyZ2luXCIgKyBwcm9wTmFtZSQkMSkpKSB8fCAwKVxuICAgICAgICAgICAgICAgICsgKHRvRmxvYXQoY3NzKHBhcmVudCwgKFwiYm9yZGVyXCIgKyBwcm9wTmFtZSQkMSArIFwiV2lkdGhcIikpKSB8fCAwKTtcbiAgICAgICAgICAgIHJldHVybiBwcm9wcztcbiAgICAgICAgfSwgb2Zmc2V0KGVsZW1lbnQpKTtcbiAgICAgICAgdmFyIHRvcCA9IHJlZi50b3A7XG4gICAgICAgIHZhciBsZWZ0ID0gcmVmLmxlZnQ7XG5cbiAgICAgICAgcmV0dXJuIHt0b3A6IHRvcCwgbGVmdDogbGVmdH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gb2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcblxuICAgICAgICB2YXIgcGFyZW50ID0gdG9Ob2RlKGVsZW1lbnQpLm9mZnNldFBhcmVudDtcblxuICAgICAgICB3aGlsZSAocGFyZW50ICYmIGNzcyhwYXJlbnQsICdwb3NpdGlvbicpID09PSAnc3RhdGljJykge1xuICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50Lm9mZnNldFBhcmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJlbnQgfHwgZG9jRWwoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgdmFyIGhlaWdodCA9IGRpbWVuc2lvbignaGVpZ2h0Jyk7XG4gICAgdmFyIHdpZHRoID0gZGltZW5zaW9uKCd3aWR0aCcpO1xuXG4gICAgZnVuY3Rpb24gZGltZW5zaW9uKHByb3ApIHtcbiAgICAgICAgdmFyIHByb3BOYW1lJCQxID0gdWNmaXJzdChwcm9wKTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50LCB2YWx1ZSkge1xuXG4gICAgICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuXG4gICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNXaW5kb3coZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRbKFwiaW5uZXJcIiArIHByb3BOYW1lJCQxKV07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGlzRG9jdW1lbnQoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRvYyA9IGVsZW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoZG9jWyhcIm9mZnNldFwiICsgcHJvcE5hbWUkJDEpXSwgZG9jWyhcInNjcm9sbFwiICsgcHJvcE5hbWUkJDEpXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFsdWUgPSBjc3MoZWxlbWVudCwgcHJvcCk7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSA9PT0gJ2F1dG8nID8gZWxlbWVudFsoXCJvZmZzZXRcIiArIHByb3BOYW1lJCQxKV0gOiB0b0Zsb2F0KHZhbHVlKSB8fCAwO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlIC0gYm94TW9kZWxBZGp1c3QocHJvcCwgZWxlbWVudCk7XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwgcHJvcCwgIXZhbHVlICYmIHZhbHVlICE9PSAwXG4gICAgICAgICAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgICAgICAgICAgOiArdmFsdWUgKyBib3hNb2RlbEFkanVzdChwcm9wLCBlbGVtZW50KSArICdweCdcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBib3hNb2RlbEFkanVzdChwcm9wLCBlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBjc3MoZWxlbWVudCwgJ2JveFNpemluZycpID09PSAnYm9yZGVyLWJveCdcbiAgICAgICAgICAgID8gZGlyc1twcm9wXS5zbGljZSgxKS5tYXAodWNmaXJzdCkucmVkdWNlKGZ1bmN0aW9uICh2YWx1ZSwgcHJvcCkgeyByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgICAgICArIHRvRmxvYXQoY3NzKGVsZW1lbnQsIChcInBhZGRpbmdcIiArIHByb3ApKSlcbiAgICAgICAgICAgICAgICArIHRvRmxvYXQoY3NzKGVsZW1lbnQsIChcImJvcmRlclwiICsgcHJvcCArIFwiV2lkdGhcIikpKTsgfVxuICAgICAgICAgICAgICAgICwgMClcbiAgICAgICAgICAgIDogMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb3ZlVG8ocG9zaXRpb24sIGF0dGFjaCwgZGltLCBmYWN0b3IpIHtcbiAgICAgICAgZWFjaChkaXJzLCBmdW5jdGlvbiAocmVmLCBwcm9wKSB7XG4gICAgICAgICAgICB2YXIgZGlyID0gcmVmWzBdO1xuICAgICAgICAgICAgdmFyIGFsaWduID0gcmVmWzFdO1xuICAgICAgICAgICAgdmFyIGFsaWduRmxpcCA9IHJlZlsyXTtcblxuICAgICAgICAgICAgaWYgKGF0dGFjaFtkaXJdID09PSBhbGlnbkZsaXApIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvblthbGlnbl0gKz0gZGltW3Byb3BdICogZmFjdG9yO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChhdHRhY2hbZGlyXSA9PT0gJ2NlbnRlcicpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvblthbGlnbl0gKz0gZGltW3Byb3BdICogZmFjdG9yIC8gMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UG9zKHBvcykge1xuXG4gICAgICAgIHZhciB4ID0gL2xlZnR8Y2VudGVyfHJpZ2h0LztcbiAgICAgICAgdmFyIHkgPSAvdG9wfGNlbnRlcnxib3R0b20vO1xuXG4gICAgICAgIHBvcyA9IChwb3MgfHwgJycpLnNwbGl0KCcgJyk7XG5cbiAgICAgICAgaWYgKHBvcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHBvcyA9IHgudGVzdChwb3NbMF0pXG4gICAgICAgICAgICAgICAgPyBwb3MuY29uY2F0KFsnY2VudGVyJ10pXG4gICAgICAgICAgICAgICAgOiB5LnRlc3QocG9zWzBdKVxuICAgICAgICAgICAgICAgICAgICA/IFsnY2VudGVyJ10uY29uY2F0KHBvcylcbiAgICAgICAgICAgICAgICAgICAgOiBbJ2NlbnRlcicsICdjZW50ZXInXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB4LnRlc3QocG9zWzBdKSA/IHBvc1swXSA6ICdjZW50ZXInLFxuICAgICAgICAgICAgeTogeS50ZXN0KHBvc1sxXSkgPyBwb3NbMV0gOiAnY2VudGVyJ1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldE9mZnNldHMob2Zmc2V0cywgd2lkdGgsIGhlaWdodCkge1xuXG4gICAgICAgIHZhciByZWYgPSAob2Zmc2V0cyB8fCAnJykuc3BsaXQoJyAnKTtcbiAgICAgICAgdmFyIHggPSByZWZbMF07XG4gICAgICAgIHZhciB5ID0gcmVmWzFdO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB4ID8gdG9GbG9hdCh4KSAqIChlbmRzV2l0aCh4LCAnJScpID8gd2lkdGggLyAxMDAgOiAxKSA6IDAsXG4gICAgICAgICAgICB5OiB5ID8gdG9GbG9hdCh5KSAqIChlbmRzV2l0aCh5LCAnJScpID8gaGVpZ2h0IC8gMTAwIDogMSkgOiAwXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZmxpcFBvc2l0aW9uKHBvcykge1xuICAgICAgICBzd2l0Y2ggKHBvcykge1xuICAgICAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyaWdodCc7XG4gICAgICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdsZWZ0JztcbiAgICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdib3R0b20nO1xuICAgICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RvcCc7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBwb3M7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0luVmlldyhlbGVtZW50LCB0b3BPZmZzZXQsIGxlZnRPZmZzZXQsIHJlbGF0aXZlVG9WaWV3cG9ydCkge1xuICAgICAgICBpZiAoIHRvcE9mZnNldCA9PT0gdm9pZCAwICkgdG9wT2Zmc2V0ID0gMDtcbiAgICAgICAgaWYgKCBsZWZ0T2Zmc2V0ID09PSB2b2lkIDAgKSBsZWZ0T2Zmc2V0ID0gMDtcblxuXG4gICAgICAgIGlmICghaXNWaXNpYmxlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuICAgICAgICB2YXIgd2luID0gd2luZG93JDEoZWxlbWVudCk7XG5cbiAgICAgICAgaWYgKHJlbGF0aXZlVG9WaWV3cG9ydCkge1xuXG4gICAgICAgICAgICByZXR1cm4gaW50ZXJzZWN0UmVjdChlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCB7XG4gICAgICAgICAgICAgICAgdG9wOiAtdG9wT2Zmc2V0LFxuICAgICAgICAgICAgICAgIGxlZnQ6IC1sZWZ0T2Zmc2V0LFxuICAgICAgICAgICAgICAgIGJvdHRvbTogdG9wT2Zmc2V0ICsgaGVpZ2h0KHdpbiksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IGxlZnRPZmZzZXQgKyB3aWR0aCh3aW4pXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICB2YXIgcmVmID0gb2Zmc2V0UG9zaXRpb24oZWxlbWVudCk7XG4gICAgICAgICAgICB2YXIgZWxUb3AgPSByZWZbMF07XG4gICAgICAgICAgICB2YXIgZWxMZWZ0ID0gcmVmWzFdO1xuICAgICAgICAgICAgdmFyIHRvcCA9IHdpbi5wYWdlWU9mZnNldDtcbiAgICAgICAgICAgIHZhciBsZWZ0ID0gd2luLnBhZ2VYT2Zmc2V0O1xuXG4gICAgICAgICAgICByZXR1cm4gaW50ZXJzZWN0UmVjdChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogZWxUb3AsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IGVsTGVmdCxcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiBlbFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICByaWdodDogZWxUb3AgKyBlbGVtZW50Lm9mZnNldFdpZHRoXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogdG9wIC0gdG9wT2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiBsZWZ0IC0gbGVmdE9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiB0b3AgKyB0b3BPZmZzZXQgKyBoZWlnaHQod2luKSxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IGxlZnQgKyBsZWZ0T2Zmc2V0ICsgd2lkdGgod2luKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNjcm9sbGVkT3ZlcihlbGVtZW50LCBoZWlnaHRPZmZzZXQpIHtcbiAgICAgICAgaWYgKCBoZWlnaHRPZmZzZXQgPT09IHZvaWQgMCApIGhlaWdodE9mZnNldCA9IDA7XG5cblxuICAgICAgICBpZiAoIWlzVmlzaWJsZShlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuXG4gICAgICAgIHZhciB3aW4gPSB3aW5kb3ckMShlbGVtZW50KTtcbiAgICAgICAgdmFyIGRvYyA9IGRvY3VtZW50JDEoZWxlbWVudCk7XG4gICAgICAgIHZhciBlbEhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgaGVpZ2h0T2Zmc2V0O1xuICAgICAgICB2YXIgcmVmID0gb2Zmc2V0UG9zaXRpb24oZWxlbWVudCk7XG4gICAgICAgIHZhciB0b3AgPSByZWZbMF07XG4gICAgICAgIHZhciB2cCA9IGhlaWdodCh3aW4pO1xuICAgICAgICB2YXIgdmggPSB2cCArIE1hdGgubWluKDAsIHRvcCAtIHZwKTtcbiAgICAgICAgdmFyIGRpZmYgPSBNYXRoLm1heCgwLCB2cCAtIChoZWlnaHQoZG9jKSArIGhlaWdodE9mZnNldCAtICh0b3AgKyBlbEhlaWdodCkpKTtcblxuICAgICAgICByZXR1cm4gY2xhbXAoKCh2aCArIHdpbi5wYWdlWU9mZnNldCAtIHRvcCkgLyAoKHZoICsgKGVsSGVpZ2h0IC0gKGRpZmYgPCB2cCA/IGRpZmYgOiAwKSkpIC8gMTAwKSkgLyAxMDApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9mZnNldFBvc2l0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIG9mZnNldCA9IFswLCAwXTtcblxuICAgICAgICBkbyB7XG5cbiAgICAgICAgICAgIG9mZnNldFswXSArPSBlbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgICAgICAgIG9mZnNldFsxXSArPSBlbGVtZW50Lm9mZnNldExlZnQ7XG5cbiAgICAgICAgICAgIGlmIChjc3MoZWxlbWVudCwgJ3Bvc2l0aW9uJykgPT09ICdmaXhlZCcpIHtcbiAgICAgICAgICAgICAgICB2YXIgd2luID0gd2luZG93JDEoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgb2Zmc2V0WzBdICs9IHdpbi5wYWdlWU9mZnNldDtcbiAgICAgICAgICAgICAgICBvZmZzZXRbMV0gKz0gd2luLnBhZ2VYT2Zmc2V0O1xuICAgICAgICAgICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSB3aGlsZSAoKGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudCkpO1xuXG4gICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd2luZG93JDEoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gaXNXaW5kb3coZWxlbWVudCkgPyBlbGVtZW50IDogZG9jdW1lbnQkMShlbGVtZW50KS5kZWZhdWx0VmlldztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkb2N1bWVudCQxKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZShlbGVtZW50KS5vd25lckRvY3VtZW50O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRvY0VsKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50JDEoZWxlbWVudCkuZG9jdW1lbnRFbGVtZW50O1xuICAgIH1cblxuICAgIC8qIGdsb2JhbCBEb2N1bWVudFRvdWNoICovXG5cbiAgICB2YXIgaXNSdGwgPSBhdHRyKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ2RpcicpID09PSAncnRsJztcblxuICAgIHZhciBoYXNUb3VjaEV2ZW50cyA9ICdvbnRvdWNoc3RhcnQnIGluIHdpbmRvdztcbiAgICB2YXIgaGFzUG9pbnRlckV2ZW50cyA9IHdpbmRvdy5Qb2ludGVyRXZlbnQ7XG4gICAgdmFyIGhhc1RvdWNoID0gaGFzVG91Y2hFdmVudHNcbiAgICAgICAgfHwgd2luZG93LkRvY3VtZW50VG91Y2ggJiYgZG9jdW1lbnQgaW5zdGFuY2VvZiBEb2N1bWVudFRvdWNoXG4gICAgICAgIHx8IG5hdmlnYXRvci5tYXhUb3VjaFBvaW50czsgLy8gSUUgPj0xMVxuXG4gICAgdmFyIHBvaW50ZXJEb3duID0gIWhhc1RvdWNoID8gJ21vdXNlZG93bicgOiAoXCJtb3VzZWRvd24gXCIgKyAoaGFzVG91Y2hFdmVudHMgPyAndG91Y2hzdGFydCcgOiAncG9pbnRlcmRvd24nKSk7XG4gICAgdmFyIHBvaW50ZXJNb3ZlID0gIWhhc1RvdWNoID8gJ21vdXNlbW92ZScgOiAoXCJtb3VzZW1vdmUgXCIgKyAoaGFzVG91Y2hFdmVudHMgPyAndG91Y2htb3ZlJyA6ICdwb2ludGVybW92ZScpKTtcbiAgICB2YXIgcG9pbnRlclVwID0gIWhhc1RvdWNoID8gJ21vdXNldXAnIDogKFwibW91c2V1cCBcIiArIChoYXNUb3VjaEV2ZW50cyA/ICd0b3VjaGVuZCcgOiAncG9pbnRlcnVwJykpO1xuICAgIHZhciBwb2ludGVyRW50ZXIgPSBoYXNUb3VjaCAmJiBoYXNQb2ludGVyRXZlbnRzID8gJ3BvaW50ZXJlbnRlcicgOiAnbW91c2VlbnRlcic7XG4gICAgdmFyIHBvaW50ZXJMZWF2ZSA9IGhhc1RvdWNoICYmIGhhc1BvaW50ZXJFdmVudHMgPyAncG9pbnRlcmxlYXZlJyA6ICdtb3VzZWxlYXZlJztcblxuICAgIC8qXG4gICAgICAgIEJhc2VkIG9uOlxuICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMTYgV2lsc29uIFBhZ2Ugd2lsc29ucGFnZUBtZS5jb21cbiAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3dpbHNvbnBhZ2UvZmFzdGRvbVxuICAgICovXG5cbiAgICB2YXIgZmFzdGRvbSA9IHtcblxuICAgICAgICByZWFkczogW10sXG4gICAgICAgIHdyaXRlczogW10sXG5cbiAgICAgICAgcmVhZDogZnVuY3Rpb24odGFzaykge1xuICAgICAgICAgICAgdGhpcy5yZWFkcy5wdXNoKHRhc2spO1xuICAgICAgICAgICAgc2NoZWR1bGVGbHVzaCgpO1xuICAgICAgICAgICAgcmV0dXJuIHRhc2s7XG4gICAgICAgIH0sXG5cbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHRhc2spIHtcbiAgICAgICAgICAgIHRoaXMud3JpdGVzLnB1c2godGFzayk7XG4gICAgICAgICAgICBzY2hlZHVsZUZsdXNoKCk7XG4gICAgICAgICAgICByZXR1cm4gdGFzaztcbiAgICAgICAgfSxcblxuICAgICAgICBjbGVhcjogZnVuY3Rpb24odGFzaykge1xuICAgICAgICAgICAgcmV0dXJuIHJlbW92ZSQxKHRoaXMucmVhZHMsIHRhc2spIHx8IHJlbW92ZSQxKHRoaXMud3JpdGVzLCB0YXNrKTtcbiAgICAgICAgfSxcblxuICAgICAgICBmbHVzaDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIHJ1blRhc2tzKHRoaXMucmVhZHMpO1xuICAgICAgICAgICAgcnVuVGFza3ModGhpcy53cml0ZXMuc3BsaWNlKDAsIHRoaXMud3JpdGVzLmxlbmd0aCkpO1xuXG4gICAgICAgICAgICB0aGlzLnNjaGVkdWxlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5yZWFkcy5sZW5ndGggfHwgdGhpcy53cml0ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgc2NoZWR1bGVGbHVzaCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBzY2hlZHVsZUZsdXNoKCkge1xuICAgICAgICBpZiAoIWZhc3Rkb20uc2NoZWR1bGVkKSB7XG4gICAgICAgICAgICBmYXN0ZG9tLnNjaGVkdWxlZCA9IHRydWU7XG4gICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZmFzdGRvbS5mbHVzaC5iaW5kKGZhc3Rkb20pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJ1blRhc2tzKHRhc2tzKSB7XG4gICAgICAgIHZhciB0YXNrO1xuICAgICAgICB3aGlsZSAoKHRhc2sgPSB0YXNrcy5zaGlmdCgpKSkge1xuICAgICAgICAgICAgdGFzaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVtb3ZlJDEoYXJyYXksIGl0ZW0pIHtcbiAgICAgICAgdmFyIGluZGV4ID0gYXJyYXkuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgcmV0dXJuICEhfmluZGV4ICYmICEhYXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBNb3VzZVRyYWNrZXIoKSB7fVxuXG4gICAgTW91c2VUcmFja2VyLnByb3RvdHlwZSA9IHtcblxuICAgICAgICBwb3NpdGlvbnM6IFtdLFxuICAgICAgICBwb3NpdGlvbjogbnVsbCxcblxuICAgICAgICBpbml0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gW107XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0gbnVsbDtcblxuICAgICAgICAgICAgdmFyIHRpY2tpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudW5iaW5kID0gb24oZG9jdW1lbnQsICdtb3VzZW1vdmUnLCBmdW5jdGlvbiAoZSkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRpY2tpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciB0aW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMkMS5wb3NpdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsZW5ndGggPSByZWYubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChsZW5ndGggJiYgKHRpbWUgLSB0aGlzJDEucG9zaXRpb25zW2xlbmd0aCAtIDFdLnRpbWUgPiAxMDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEucG9zaXRpb25zLnNwbGljZSgwLCBsZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnBvc2l0aW9ucy5wdXNoKHt0aW1lOiB0aW1lLCB4OiBlLnBhZ2VYLCB5OiBlLnBhZ2VZfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5wb3NpdGlvbnMubGVuZ3RoID4gNSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnBvc2l0aW9ucy5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGlja2luZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDUpO1xuXG4gICAgICAgICAgICAgICAgdGlja2luZyA9IHRydWU7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpZiAodGhpcy51bmJpbmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVuYmluZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIG1vdmVzVG86IGZ1bmN0aW9uKHRhcmdldCkge1xuXG4gICAgICAgICAgICBpZiAodGhpcy5wb3NpdGlvbnMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHAgPSBvZmZzZXQodGFyZ2V0KTtcbiAgICAgICAgICAgIHZhciBwb3NpdGlvbiQkMSA9IHRoaXMucG9zaXRpb25zW3RoaXMucG9zaXRpb25zLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMucG9zaXRpb25zO1xuICAgICAgICAgICAgdmFyIHByZXZQb3MgPSByZWZbMF07XG5cbiAgICAgICAgICAgIGlmIChwLmxlZnQgPD0gcG9zaXRpb24kJDEueCAmJiBwb3NpdGlvbiQkMS54IDw9IHAucmlnaHQgJiYgcC50b3AgPD0gcG9zaXRpb24kJDEueSAmJiBwb3NpdGlvbiQkMS55IDw9IHAuYm90dG9tKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgcG9pbnRzID0gW1xuICAgICAgICAgICAgICAgIFt7eDogcC5sZWZ0LCB5OiBwLnRvcH0sIHt4OiBwLnJpZ2h0LCB5OiBwLmJvdHRvbX1dLFxuICAgICAgICAgICAgICAgIFt7eDogcC5yaWdodCwgeTogcC50b3B9LCB7eDogcC5sZWZ0LCB5OiBwLmJvdHRvbX1dXG4gICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICBpZiAocC5yaWdodCA8PSBwb3NpdGlvbiQkMS54KSA7IGVsc2UgaWYgKHAubGVmdCA+PSBwb3NpdGlvbiQkMS54KSB7XG4gICAgICAgICAgICAgICAgcG9pbnRzWzBdLnJldmVyc2UoKTtcbiAgICAgICAgICAgICAgICBwb2ludHNbMV0ucmV2ZXJzZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwLmJvdHRvbSA8PSBwb3NpdGlvbiQkMS55KSB7XG4gICAgICAgICAgICAgICAgcG9pbnRzWzBdLnJldmVyc2UoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocC50b3AgPj0gcG9zaXRpb24kJDEueSkge1xuICAgICAgICAgICAgICAgIHBvaW50c1sxXS5yZXZlcnNlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiAhIXBvaW50cy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgcG9pbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHNsb3BlKHByZXZQb3MsIHBvaW50WzBdKSA8IHNsb3BlKHBvc2l0aW9uJCQxLCBwb2ludFswXSkgJiYgc2xvcGUocHJldlBvcywgcG9pbnRbMV0pID4gc2xvcGUocG9zaXRpb24kJDEsIHBvaW50WzFdKSk7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHNsb3BlKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIChiLnkgLSBhLnkpIC8gKGIueCAtIGEueCk7XG4gICAgfVxuXG4gICAgdmFyIHN0cmF0cyA9IHt9O1xuXG4gICAgLy8gY29uY2F0IHN0cmF0ZWd5XG4gICAgc3RyYXRzLmFyZ3MgPVxuICAgIHN0cmF0cy5ldmVudHMgPVxuICAgIHN0cmF0cy5pbml0ID1cbiAgICBzdHJhdHMuY3JlYXRlZCA9XG4gICAgc3RyYXRzLmJlZm9yZUNvbm5lY3QgPVxuICAgIHN0cmF0cy5jb25uZWN0ZWQgPVxuICAgIHN0cmF0cy5yZWFkeSA9XG4gICAgc3RyYXRzLmJlZm9yZURpc2Nvbm5lY3QgPVxuICAgIHN0cmF0cy5kaXNjb25uZWN0ZWQgPVxuICAgIHN0cmF0cy5kZXN0cm95ID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcblxuICAgICAgICBwYXJlbnRWYWwgPSBwYXJlbnRWYWwgJiYgIWlzQXJyYXkocGFyZW50VmFsKSA/IFtwYXJlbnRWYWxdIDogcGFyZW50VmFsO1xuXG4gICAgICAgIHJldHVybiBjaGlsZFZhbFxuICAgICAgICAgICAgPyBwYXJlbnRWYWxcbiAgICAgICAgICAgICAgICA/IHBhcmVudFZhbC5jb25jYXQoY2hpbGRWYWwpXG4gICAgICAgICAgICAgICAgOiBpc0FycmF5KGNoaWxkVmFsKVxuICAgICAgICAgICAgICAgICAgICA/IGNoaWxkVmFsXG4gICAgICAgICAgICAgICAgICAgIDogW2NoaWxkVmFsXVxuICAgICAgICAgICAgOiBwYXJlbnRWYWw7XG4gICAgfTtcblxuICAgIC8vIHVwZGF0ZSBzdHJhdGVneVxuICAgIHN0cmF0cy51cGRhdGUgPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuICAgICAgICByZXR1cm4gc3RyYXRzLmFyZ3MocGFyZW50VmFsLCBpc0Z1bmN0aW9uKGNoaWxkVmFsKSA/IHtyZWFkOiBjaGlsZFZhbH0gOiBjaGlsZFZhbCk7XG4gICAgfTtcblxuICAgIC8vIHByb3BlcnR5IHN0cmF0ZWd5XG4gICAgc3RyYXRzLnByb3BzID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcblxuICAgICAgICBpZiAoaXNBcnJheShjaGlsZFZhbCkpIHtcbiAgICAgICAgICAgIGNoaWxkVmFsID0gY2hpbGRWYWwucmVkdWNlKGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgICAgICAgICAgICAgdmFsdWVba2V5XSA9IFN0cmluZztcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9LCB7fSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3RyYXRzLm1ldGhvZHMocGFyZW50VmFsLCBjaGlsZFZhbCk7XG4gICAgfTtcblxuICAgIC8vIGV4dGVuZCBzdHJhdGVneVxuICAgIHN0cmF0cy5jb21wdXRlZCA9XG4gICAgc3RyYXRzLm1ldGhvZHMgPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuICAgICAgICByZXR1cm4gY2hpbGRWYWxcbiAgICAgICAgICAgID8gcGFyZW50VmFsXG4gICAgICAgICAgICAgICAgPyBhc3NpZ24oe30sIHBhcmVudFZhbCwgY2hpbGRWYWwpXG4gICAgICAgICAgICAgICAgOiBjaGlsZFZhbFxuICAgICAgICAgICAgOiBwYXJlbnRWYWw7XG4gICAgfTtcblxuICAgIC8vIGRhdGEgc3RyYXRlZ3lcbiAgICBzdHJhdHMuZGF0YSA9IGZ1bmN0aW9uIChwYXJlbnRWYWwsIGNoaWxkVmFsLCB2bSkge1xuXG4gICAgICAgIGlmICghdm0pIHtcblxuICAgICAgICAgICAgaWYgKCFjaGlsZFZhbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnRWYWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcGFyZW50VmFsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkVmFsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlRm5EYXRhKHBhcmVudFZhbCwgY2hpbGRWYWwsIHZtKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtZXJnZUZuRGF0YShwYXJlbnRWYWwsIGNoaWxkVmFsLCB2bSk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIG1lcmdlRm5EYXRhKHBhcmVudFZhbCwgY2hpbGRWYWwsIHZtKSB7XG4gICAgICAgIHJldHVybiBzdHJhdHMuY29tcHV0ZWQoXG4gICAgICAgICAgICBpc0Z1bmN0aW9uKHBhcmVudFZhbClcbiAgICAgICAgICAgICAgICA/IHBhcmVudFZhbC5jYWxsKHZtLCB2bSlcbiAgICAgICAgICAgICAgICA6IHBhcmVudFZhbCxcbiAgICAgICAgICAgIGlzRnVuY3Rpb24oY2hpbGRWYWwpXG4gICAgICAgICAgICAgICAgPyBjaGlsZFZhbC5jYWxsKHZtLCB2bSlcbiAgICAgICAgICAgICAgICA6IGNoaWxkVmFsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gZGVmYXVsdCBzdHJhdGVneVxuICAgIHZhciBkZWZhdWx0U3RyYXQgPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuICAgICAgICByZXR1cm4gaXNVbmRlZmluZWQoY2hpbGRWYWwpID8gcGFyZW50VmFsIDogY2hpbGRWYWw7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIG1lcmdlT3B0aW9ucyhwYXJlbnQsIGNoaWxkLCB2bSkge1xuXG4gICAgICAgIHZhciBvcHRpb25zID0ge307XG5cbiAgICAgICAgaWYgKGlzRnVuY3Rpb24oY2hpbGQpKSB7XG4gICAgICAgICAgICBjaGlsZCA9IGNoaWxkLm9wdGlvbnM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hpbGQuZXh0ZW5kcykge1xuICAgICAgICAgICAgcGFyZW50ID0gbWVyZ2VPcHRpb25zKHBhcmVudCwgY2hpbGQuZXh0ZW5kcywgdm0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoaWxkLm1peGlucykge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjaGlsZC5taXhpbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcGFyZW50ID0gbWVyZ2VPcHRpb25zKHBhcmVudCwgY2hpbGQubWl4aW5zW2ldLCB2bSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBrZXkgaW4gcGFyZW50KSB7XG4gICAgICAgICAgICBtZXJnZUtleShrZXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIga2V5JDEgaW4gY2hpbGQpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duKHBhcmVudCwga2V5JDEpKSB7XG4gICAgICAgICAgICAgICAgbWVyZ2VLZXkoa2V5JDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gbWVyZ2VLZXkoa2V5KSB7XG4gICAgICAgICAgICBvcHRpb25zW2tleV0gPSAoc3RyYXRzW2tleV0gfHwgZGVmYXVsdFN0cmF0KShwYXJlbnRba2V5XSwgY2hpbGRba2V5XSwgdm0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VPcHRpb25zKG9wdGlvbnMsIGFyZ3MpIHtcbiAgICAgICAgdmFyIG9iajtcblxuICAgICAgICBpZiAoIGFyZ3MgPT09IHZvaWQgMCApIGFyZ3MgPSBbXTtcblxuICAgICAgICB0cnkge1xuXG4gICAgICAgICAgICByZXR1cm4gIW9wdGlvbnNcbiAgICAgICAgICAgICAgICA/IHt9XG4gICAgICAgICAgICAgICAgOiBzdGFydHNXaXRoKG9wdGlvbnMsICd7JylcbiAgICAgICAgICAgICAgICAgICAgPyBKU09OLnBhcnNlKG9wdGlvbnMpXG4gICAgICAgICAgICAgICAgICAgIDogYXJncy5sZW5ndGggJiYgIWluY2x1ZGVzKG9wdGlvbnMsICc6JylcbiAgICAgICAgICAgICAgICAgICAgICAgID8gKCggb2JqID0ge30sIG9ialthcmdzWzBdXSA9IG9wdGlvbnMsIG9iaiApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBvcHRpb25zLnNwbGl0KCc7JykucmVkdWNlKGZ1bmN0aW9uIChvcHRpb25zLCBvcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gb3B0aW9uLnNwbGl0KC86KC4qKS8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrZXkgPSByZWZbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gcmVmWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkgJiYgIWlzVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zW2tleS50cmltKCldID0gdmFsdWUudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHt9KTtcblxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHZhciBpZCA9IDA7XG5cbiAgICB2YXIgUGxheWVyID0gZnVuY3Rpb24oZWwpIHtcbiAgICAgICAgdGhpcy5pZCA9ICsraWQ7XG4gICAgICAgIHRoaXMuZWwgPSB0b05vZGUoZWwpO1xuICAgIH07XG5cbiAgICBQbGF5ZXIucHJvdG90eXBlLmlzVmlkZW8gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzWW91dHViZSgpIHx8IHRoaXMuaXNWaW1lbygpIHx8IHRoaXMuaXNIVE1MNSgpO1xuICAgIH07XG5cbiAgICBQbGF5ZXIucHJvdG90eXBlLmlzSFRNTDUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLnRhZ05hbWUgPT09ICdWSURFTyc7XG4gICAgfTtcblxuICAgIFBsYXllci5wcm90b3R5cGUuaXNJRnJhbWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLnRhZ05hbWUgPT09ICdJRlJBTUUnO1xuICAgIH07XG5cbiAgICBQbGF5ZXIucHJvdG90eXBlLmlzWW91dHViZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNJRnJhbWUoKSAmJiAhIXRoaXMuZWwuc3JjLm1hdGNoKC9cXC9cXC8uKj95b3V0dWJlKC1ub2Nvb2tpZSk/XFwuW2Etel0rXFwvKHdhdGNoXFw/dj1bXiZcXHNdK3xlbWJlZCl8eW91dHVcXC5iZVxcLy4qLyk7XG4gICAgfTtcblxuICAgIFBsYXllci5wcm90b3R5cGUuaXNWaW1lbyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNJRnJhbWUoKSAmJiAhIXRoaXMuZWwuc3JjLm1hdGNoKC92aW1lb1xcLmNvbVxcL3ZpZGVvXFwvLiovKTtcbiAgICB9O1xuXG4gICAgUGxheWVyLnByb3RvdHlwZS5lbmFibGVBcGkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgIGlmICh0aGlzLnJlYWR5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkeTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB5b3V0dWJlID0gdGhpcy5pc1lvdXR1YmUoKTtcbiAgICAgICAgdmFyIHZpbWVvID0gdGhpcy5pc1ZpbWVvKCk7XG5cbiAgICAgICAgdmFyIHBvbGxlcjtcblxuICAgICAgICBpZiAoeW91dHViZSB8fCB2aW1lbykge1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkeSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUpIHtcblxuICAgICAgICAgICAgICAgIG9uY2UodGhpcyQxLmVsLCAnbG9hZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHlvdXR1YmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsaXN0ZW5lciA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHBvc3QodGhpcyQxLmVsLCB7ZXZlbnQ6ICdsaXN0ZW5pbmcnLCBpZDogdGhpcyQxLmlkfSk7IH07XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2xsZXIgPSBzZXRJbnRlcnZhbChsaXN0ZW5lciwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGxpc3RlbihmdW5jdGlvbiAoZGF0YSQkMSkgeyByZXR1cm4geW91dHViZSAmJiBkYXRhJCQxLmlkID09PSB0aGlzJDEuaWQgJiYgZGF0YSQkMS5ldmVudCA9PT0gJ29uUmVhZHknIHx8IHZpbWVvICYmIE51bWJlcihkYXRhJCQxLnBsYXllcl9pZCkgPT09IHRoaXMkMS5pZDsgfSlcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9sbGVyICYmIGNsZWFySW50ZXJ2YWwocG9sbGVyKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBhdHRyKHRoaXMkMS5lbCwgJ3NyYycsIChcIlwiICsgKHRoaXMkMS5lbC5zcmMpICsgKGluY2x1ZGVzKHRoaXMkMS5lbC5zcmMsICc/JykgPyAnJicgOiAnPycpICsgKHlvdXR1YmUgPyAnZW5hYmxlanNhcGk9MScgOiAoXCJhcGk9MSZwbGF5ZXJfaWQ9XCIgKyAodGhpcyQxLmlkKSkpKSk7XG5cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZSQxLnJlc29sdmUoKTtcblxuICAgIH07XG5cbiAgICBQbGF5ZXIucHJvdG90eXBlLnBsYXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgIGlmICghdGhpcy5pc1ZpZGVvKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzSUZyYW1lKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlQXBpKCkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBwb3N0KHRoaXMkMS5lbCwge2Z1bmM6ICdwbGF5VmlkZW8nLCBtZXRob2Q6ICdwbGF5J30pOyB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzSFRNTDUoKSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB2YXIgcHJvbWlzZSA9IHRoaXMuZWwucGxheSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5jYXRjaChub29wKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIFBsYXllci5wcm90b3R5cGUucGF1c2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgIGlmICghdGhpcy5pc1ZpZGVvKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzSUZyYW1lKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlQXBpKCkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBwb3N0KHRoaXMkMS5lbCwge2Z1bmM6ICdwYXVzZVZpZGVvJywgbWV0aG9kOiAncGF1c2UnfSk7IH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNIVE1MNSgpKSB7XG4gICAgICAgICAgICB0aGlzLmVsLnBhdXNlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgUGxheWVyLnByb3RvdHlwZS5tdXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICBpZiAoIXRoaXMuaXNWaWRlbygpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0lGcmFtZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZUFwaSgpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gcG9zdCh0aGlzJDEuZWwsIHtmdW5jOiAnbXV0ZScsIG1ldGhvZDogJ3NldFZvbHVtZScsIHZhbHVlOiAwfSk7IH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNIVE1MNSgpKSB7XG4gICAgICAgICAgICB0aGlzLmVsLm11dGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGF0dHIodGhpcy5lbCwgJ211dGVkJywgJycpO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcG9zdChlbCwgY21kKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBlbC5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KGFzc2lnbih7ZXZlbnQ6ICdjb21tYW5kJ30sIGNtZCkpLCAnKicpO1xuICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RlbihjYikge1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG5cbiAgICAgICAgICAgIG9uY2Uod2luZG93LCAnbWVzc2FnZScsIGZ1bmN0aW9uIChfLCBkYXRhJCQxKSB7IHJldHVybiByZXNvbHZlKGRhdGEkJDEpOyB9LCBmYWxzZSwgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBkYXRhJCQxID0gcmVmLmRhdGE7XG5cblxuICAgICAgICAgICAgICAgIGlmICghZGF0YSQkMSB8fCAhaXNTdHJpbmcoZGF0YSQkMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEkJDEgPSBKU09OLnBhcnNlKGRhdGEkJDEpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhJCQxICYmIGNiKGRhdGEkJDEpO1xuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIC8qXG4gICAgICAgIEJhc2VkIG9uOlxuICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNiBUaG9tYXMgRnVjaHNcbiAgICAgICAgaHR0cDovL3plcHRvanMuY29tL1xuICAgICovXG5cbiAgICB2YXIgdG91Y2ggPSB7fSwgY2xpY2tUaW1lb3V0LCBzd2lwZVRpbWVvdXQsIHRhcFRpbWVvdXQsIGNsaWNrZWQ7XG5cbiAgICBmdW5jdGlvbiBzd2lwZURpcmVjdGlvbihyZWYpIHtcbiAgICAgICAgdmFyIHgxID0gcmVmLngxO1xuICAgICAgICB2YXIgeDIgPSByZWYueDI7XG4gICAgICAgIHZhciB5MSA9IHJlZi55MTtcbiAgICAgICAgdmFyIHkyID0gcmVmLnkyO1xuXG4gICAgICAgIHJldHVybiBNYXRoLmFicyh4MSAtIHgyKSA+PSBNYXRoLmFicyh5MSAtIHkyKSA/ICh4MSAtIHgyID4gMCA/ICdMZWZ0JyA6ICdSaWdodCcpIDogKHkxIC0geTIgPiAwID8gJ1VwJyA6ICdEb3duJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FuY2VsQWxsKCkge1xuICAgICAgICBjbGlja1RpbWVvdXQgJiYgY2xlYXJUaW1lb3V0KGNsaWNrVGltZW91dCk7XG4gICAgICAgIHN3aXBlVGltZW91dCAmJiBjbGVhclRpbWVvdXQoc3dpcGVUaW1lb3V0KTtcbiAgICAgICAgdGFwVGltZW91dCAmJiBjbGVhclRpbWVvdXQodGFwVGltZW91dCk7XG4gICAgICAgIGNsaWNrVGltZW91dCA9IHN3aXBlVGltZW91dCA9IHRhcFRpbWVvdXQgPSBudWxsO1xuICAgICAgICB0b3VjaCA9IHt9O1xuICAgIH1cblxuICAgIHJlYWR5KGZ1bmN0aW9uICgpIHtcblxuICAgICAgICBvbihkb2N1bWVudCwgJ2NsaWNrJywgZnVuY3Rpb24gKCkgeyByZXR1cm4gY2xpY2tlZCA9IHRydWU7IH0sIHRydWUpO1xuXG4gICAgICAgIG9uKGRvY3VtZW50LCBwb2ludGVyRG93biwgZnVuY3Rpb24gKGUpIHtcblxuICAgICAgICAgICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0O1xuICAgICAgICAgICAgdmFyIHJlZiA9IGdldFBvcyQxKGUpO1xuICAgICAgICAgICAgdmFyIHggPSByZWYueDtcbiAgICAgICAgICAgIHZhciB5ID0gcmVmLnk7XG4gICAgICAgICAgICB2YXIgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIHZhciB0eXBlID0gZ2V0VHlwZShlLnR5cGUpO1xuXG4gICAgICAgICAgICBpZiAodG91Y2gudHlwZSAmJiB0b3VjaC50eXBlICE9PSB0eXBlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0b3VjaC5lbCA9ICd0YWdOYW1lJyBpbiB0YXJnZXQgPyB0YXJnZXQgOiB0YXJnZXQucGFyZW50Tm9kZTtcblxuICAgICAgICAgICAgY2xpY2tUaW1lb3V0ICYmIGNsZWFyVGltZW91dChjbGlja1RpbWVvdXQpO1xuXG4gICAgICAgICAgICB0b3VjaC54MSA9IHg7XG4gICAgICAgICAgICB0b3VjaC55MSA9IHk7XG5cbiAgICAgICAgICAgIGlmICh0b3VjaC5sYXN0ICYmIG5vdyAtIHRvdWNoLmxhc3QgPD0gMjUwKSB7XG4gICAgICAgICAgICAgICAgdG91Y2ggPSB7fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdG91Y2gudHlwZSA9IHR5cGU7XG4gICAgICAgICAgICB0b3VjaC5sYXN0ID0gbm93O1xuXG4gICAgICAgICAgICBjbGlja2VkID0gZS5idXR0b24gPiAwO1xuXG4gICAgICAgIH0pO1xuXG4gICAgICAgIG9uKGRvY3VtZW50LCBwb2ludGVyTW92ZSwgZnVuY3Rpb24gKGUpIHtcblxuICAgICAgICAgICAgaWYgKGUuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHJlZiA9IGdldFBvcyQxKGUpO1xuICAgICAgICAgICAgdmFyIHggPSByZWYueDtcbiAgICAgICAgICAgIHZhciB5ID0gcmVmLnk7XG5cbiAgICAgICAgICAgIHRvdWNoLngyID0geDtcbiAgICAgICAgICAgIHRvdWNoLnkyID0geTtcblxuICAgICAgICB9KTtcblxuICAgICAgICBvbihkb2N1bWVudCwgcG9pbnRlclVwLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICB2YXIgdHlwZSA9IHJlZi50eXBlO1xuICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cblxuICAgICAgICAgICAgaWYgKHRvdWNoLnR5cGUgIT09IGdldFR5cGUodHlwZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHN3aXBlXG4gICAgICAgICAgICBpZiAodG91Y2gueDIgJiYgTWF0aC5hYnModG91Y2gueDEgLSB0b3VjaC54MikgPiAzMCB8fCB0b3VjaC55MiAmJiBNYXRoLmFicyh0b3VjaC55MSAtIHRvdWNoLnkyKSA+IDMwKSB7XG5cbiAgICAgICAgICAgICAgICBzd2lwZVRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvdWNoLmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRvdWNoLmVsLCAnc3dpcGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodG91Y2guZWwsIChcInN3aXBlXCIgKyAoc3dpcGVEaXJlY3Rpb24odG91Y2gpKSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRvdWNoID0ge307XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIG5vcm1hbCB0YXBcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2xhc3QnIGluIHRvdWNoKSB7XG5cbiAgICAgICAgICAgICAgICB0YXBUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiB0cmlnZ2VyKHRvdWNoLmVsLCAndGFwJyk7IH0pO1xuXG4gICAgICAgICAgICAgICAgLy8gdHJpZ2dlciBzaW5nbGUgY2xpY2sgYWZ0ZXIgMzUwbXMgb2YgaW5hY3Rpdml0eVxuICAgICAgICAgICAgICAgIGlmICh0b3VjaC5lbCAmJiB0eXBlICE9PSAnbW91c2V1cCcgJiYgd2l0aGluKHRhcmdldCwgdG91Y2guZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsaWNrVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2tUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b3VjaC5lbCAmJiAhY2xpY2tlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodG91Y2guZWwsICdjbGljaycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2ggPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMzUwKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdG91Y2ggPSB7fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9KTtcblxuICAgICAgICBvbihkb2N1bWVudCwgJ3RvdWNoY2FuY2VsJywgY2FuY2VsQWxsKTtcbiAgICAgICAgb24od2luZG93LCAnc2Nyb2xsJywgY2FuY2VsQWxsKTtcblxuICAgIH0pO1xuXG4gICAgdmFyIHRvdWNoaW5nID0gZmFsc2U7XG4gICAgb24oZG9jdW1lbnQsICd0b3VjaHN0YXJ0JywgZnVuY3Rpb24gKCkgeyByZXR1cm4gdG91Y2hpbmcgPSB0cnVlOyB9LCB0cnVlKTtcbiAgICBvbihkb2N1bWVudCwgJ2NsaWNrJywgZnVuY3Rpb24gKCkge3RvdWNoaW5nID0gZmFsc2U7fSk7XG4gICAgb24oZG9jdW1lbnQsICd0b3VjaGNhbmNlbCcsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRvdWNoaW5nID0gZmFsc2U7IH0sIHRydWUpO1xuXG4gICAgZnVuY3Rpb24gaXNUb3VjaChlKSB7XG4gICAgICAgIHJldHVybiB0b3VjaGluZyB8fCBlLnBvaW50ZXJUeXBlID09PSAndG91Y2gnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFBvcyQxKGUpIHtcbiAgICAgICAgdmFyIHRvdWNoZXMgPSBlLnRvdWNoZXM7XG4gICAgICAgIHZhciBjaGFuZ2VkVG91Y2hlcyA9IGUuY2hhbmdlZFRvdWNoZXM7XG4gICAgICAgIHZhciByZWYgPSB0b3VjaGVzICYmIHRvdWNoZXNbMF0gfHwgY2hhbmdlZFRvdWNoZXMgJiYgY2hhbmdlZFRvdWNoZXNbMF0gfHwgZTtcbiAgICAgICAgdmFyIHggPSByZWYucGFnZVg7XG4gICAgICAgIHZhciB5ID0gcmVmLnBhZ2VZO1xuXG4gICAgICAgIHJldHVybiB7eDogeCwgeTogeX07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0VHlwZSh0eXBlKSB7XG4gICAgICAgIHJldHVybiB0eXBlLnNsaWNlKDAsIDUpO1xuICAgIH1cblxuXG5cbiAgICB2YXIgdXRpbCA9IC8qI19fUFVSRV9fKi9PYmplY3QuZnJlZXplKHtcbiAgICAgICAgYWpheDogYWpheCxcbiAgICAgICAgZ2V0SW1hZ2U6IGdldEltYWdlLFxuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2l0aW9uLFxuICAgICAgICBUcmFuc2l0aW9uOiBUcmFuc2l0aW9uLFxuICAgICAgICBhbmltYXRlOiBhbmltYXRlLFxuICAgICAgICBBbmltYXRpb246IEFuaW1hdGlvbixcbiAgICAgICAgYXR0cjogYXR0cixcbiAgICAgICAgaGFzQXR0cjogaGFzQXR0cixcbiAgICAgICAgcmVtb3ZlQXR0cjogcmVtb3ZlQXR0cixcbiAgICAgICAgZmlsdGVyQXR0cjogZmlsdGVyQXR0cixcbiAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgYWRkQ2xhc3M6IGFkZENsYXNzLFxuICAgICAgICByZW1vdmVDbGFzczogcmVtb3ZlQ2xhc3MsXG4gICAgICAgIHJlbW92ZUNsYXNzZXM6IHJlbW92ZUNsYXNzZXMsXG4gICAgICAgIHJlcGxhY2VDbGFzczogcmVwbGFjZUNsYXNzLFxuICAgICAgICBoYXNDbGFzczogaGFzQ2xhc3MsXG4gICAgICAgIHRvZ2dsZUNsYXNzOiB0b2dnbGVDbGFzcyxcbiAgICAgICAgJDogJCxcbiAgICAgICAgJCQ6ICQkLFxuICAgICAgICBwb3NpdGlvbkF0OiBwb3NpdGlvbkF0LFxuICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgcG9zaXRpb246IHBvc2l0aW9uLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBmbGlwUG9zaXRpb246IGZsaXBQb3NpdGlvbixcbiAgICAgICAgaXNJblZpZXc6IGlzSW5WaWV3LFxuICAgICAgICBzY3JvbGxlZE92ZXI6IHNjcm9sbGVkT3ZlcixcbiAgICAgICAgaXNSZWFkeTogaXNSZWFkeSxcbiAgICAgICAgcmVhZHk6IHJlYWR5LFxuICAgICAgICBpbmRleDogaW5kZXgsXG4gICAgICAgIGdldEluZGV4OiBnZXRJbmRleCxcbiAgICAgICAgZW1wdHk6IGVtcHR5LFxuICAgICAgICBodG1sOiBodG1sLFxuICAgICAgICBwcmVwZW5kOiBwcmVwZW5kLFxuICAgICAgICBhcHBlbmQ6IGFwcGVuZCxcbiAgICAgICAgYmVmb3JlOiBiZWZvcmUsXG4gICAgICAgIGFmdGVyOiBhZnRlcixcbiAgICAgICAgcmVtb3ZlOiByZW1vdmUsXG4gICAgICAgIHdyYXBBbGw6IHdyYXBBbGwsXG4gICAgICAgIHdyYXBJbm5lcjogd3JhcElubmVyLFxuICAgICAgICB1bndyYXA6IHVud3JhcCxcbiAgICAgICAgZnJhZ21lbnQ6IGZyYWdtZW50LFxuICAgICAgICBhcHBseTogYXBwbHksXG4gICAgICAgIGlzUnRsOiBpc1J0bCxcbiAgICAgICAgaGFzVG91Y2g6IGhhc1RvdWNoLFxuICAgICAgICBwb2ludGVyRG93bjogcG9pbnRlckRvd24sXG4gICAgICAgIHBvaW50ZXJNb3ZlOiBwb2ludGVyTW92ZSxcbiAgICAgICAgcG9pbnRlclVwOiBwb2ludGVyVXAsXG4gICAgICAgIHBvaW50ZXJFbnRlcjogcG9pbnRlckVudGVyLFxuICAgICAgICBwb2ludGVyTGVhdmU6IHBvaW50ZXJMZWF2ZSxcbiAgICAgICAgb246IG9uLFxuICAgICAgICBvZmY6IG9mZixcbiAgICAgICAgb25jZTogb25jZSxcbiAgICAgICAgdHJpZ2dlcjogdHJpZ2dlcixcbiAgICAgICAgY3JlYXRlRXZlbnQ6IGNyZWF0ZUV2ZW50LFxuICAgICAgICB0b0V2ZW50VGFyZ2V0czogdG9FdmVudFRhcmdldHMsXG4gICAgICAgIHByZXZlbnRDbGljazogcHJldmVudENsaWNrLFxuICAgICAgICBmYXN0ZG9tOiBmYXN0ZG9tLFxuICAgICAgICBpc1ZvaWRFbGVtZW50OiBpc1ZvaWRFbGVtZW50LFxuICAgICAgICBpc1Zpc2libGU6IGlzVmlzaWJsZSxcbiAgICAgICAgc2VsSW5wdXQ6IHNlbElucHV0LFxuICAgICAgICBpc0lucHV0OiBpc0lucHV0LFxuICAgICAgICBmaWx0ZXI6IGZpbHRlcixcbiAgICAgICAgd2l0aGluOiB3aXRoaW4sXG4gICAgICAgIGJpbmQ6IGJpbmQsXG4gICAgICAgIGhhc093bjogaGFzT3duLFxuICAgICAgICBoeXBoZW5hdGU6IGh5cGhlbmF0ZSxcbiAgICAgICAgY2FtZWxpemU6IGNhbWVsaXplLFxuICAgICAgICB1Y2ZpcnN0OiB1Y2ZpcnN0LFxuICAgICAgICBzdGFydHNXaXRoOiBzdGFydHNXaXRoLFxuICAgICAgICBlbmRzV2l0aDogZW5kc1dpdGgsXG4gICAgICAgIGluY2x1ZGVzOiBpbmNsdWRlcyxcbiAgICAgICAgaXNBcnJheTogaXNBcnJheSxcbiAgICAgICAgaXNGdW5jdGlvbjogaXNGdW5jdGlvbixcbiAgICAgICAgaXNPYmplY3Q6IGlzT2JqZWN0LFxuICAgICAgICBpc1BsYWluT2JqZWN0OiBpc1BsYWluT2JqZWN0LFxuICAgICAgICBpc1dpbmRvdzogaXNXaW5kb3csXG4gICAgICAgIGlzRG9jdW1lbnQ6IGlzRG9jdW1lbnQsXG4gICAgICAgIGlzSlF1ZXJ5OiBpc0pRdWVyeSxcbiAgICAgICAgaXNOb2RlOiBpc05vZGUsXG4gICAgICAgIGlzTm9kZUNvbGxlY3Rpb246IGlzTm9kZUNvbGxlY3Rpb24sXG4gICAgICAgIGlzQm9vbGVhbjogaXNCb29sZWFuLFxuICAgICAgICBpc1N0cmluZzogaXNTdHJpbmcsXG4gICAgICAgIGlzTnVtYmVyOiBpc051bWJlcixcbiAgICAgICAgaXNOdW1lcmljOiBpc051bWVyaWMsXG4gICAgICAgIGlzVW5kZWZpbmVkOiBpc1VuZGVmaW5lZCxcbiAgICAgICAgdG9Cb29sZWFuOiB0b0Jvb2xlYW4sXG4gICAgICAgIHRvTnVtYmVyOiB0b051bWJlcixcbiAgICAgICAgdG9GbG9hdDogdG9GbG9hdCxcbiAgICAgICAgdG9Ob2RlOiB0b05vZGUsXG4gICAgICAgIHRvTm9kZXM6IHRvTm9kZXMsXG4gICAgICAgIHRvTGlzdDogdG9MaXN0LFxuICAgICAgICB0b01zOiB0b01zLFxuICAgICAgICBzd2FwOiBzd2FwLFxuICAgICAgICBhc3NpZ246IGFzc2lnbixcbiAgICAgICAgZWFjaDogZWFjaCxcbiAgICAgICAgc29ydEJ5OiBzb3J0QnksXG4gICAgICAgIGNsYW1wOiBjbGFtcCxcbiAgICAgICAgbm9vcDogbm9vcCxcbiAgICAgICAgaW50ZXJzZWN0UmVjdDogaW50ZXJzZWN0UmVjdCxcbiAgICAgICAgcG9pbnRJblJlY3Q6IHBvaW50SW5SZWN0LFxuICAgICAgICBEaW1lbnNpb25zOiBEaW1lbnNpb25zLFxuICAgICAgICBNb3VzZVRyYWNrZXI6IE1vdXNlVHJhY2tlcixcbiAgICAgICAgbWVyZ2VPcHRpb25zOiBtZXJnZU9wdGlvbnMsXG4gICAgICAgIHBhcnNlT3B0aW9uczogcGFyc2VPcHRpb25zLFxuICAgICAgICBQbGF5ZXI6IFBsYXllcixcbiAgICAgICAgUHJvbWlzZTogUHJvbWlzZSQxLFxuICAgICAgICBEZWZlcnJlZDogRGVmZXJyZWQsXG4gICAgICAgIHF1ZXJ5OiBxdWVyeSxcbiAgICAgICAgcXVlcnlBbGw6IHF1ZXJ5QWxsLFxuICAgICAgICBmaW5kOiBmaW5kLFxuICAgICAgICBmaW5kQWxsOiBmaW5kQWxsLFxuICAgICAgICBtYXRjaGVzOiBtYXRjaGVzLFxuICAgICAgICBjbG9zZXN0OiBjbG9zZXN0LFxuICAgICAgICBwYXJlbnRzOiBwYXJlbnRzLFxuICAgICAgICBlc2NhcGU6IGVzY2FwZSxcbiAgICAgICAgY3NzOiBjc3MsXG4gICAgICAgIGdldFN0eWxlczogZ2V0U3R5bGVzLFxuICAgICAgICBnZXRTdHlsZTogZ2V0U3R5bGUsXG4gICAgICAgIGdldENzc1ZhcjogZ2V0Q3NzVmFyLFxuICAgICAgICBwcm9wTmFtZTogcHJvcE5hbWUsXG4gICAgICAgIGlzVG91Y2g6IGlzVG91Y2gsXG4gICAgICAgIGdldFBvczogZ2V0UG9zJDFcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGNvbXBvbmVudEFQSSAoVUlraXQpIHtcblxuICAgICAgICB2YXIgREFUQSA9IFVJa2l0LmRhdGE7XG5cbiAgICAgICAgdmFyIGNvbXBvbmVudHMgPSB7fTtcblxuICAgICAgICBVSWtpdC5jb21wb25lbnQgPSBmdW5jdGlvbiAobmFtZSwgb3B0aW9ucykge1xuXG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMpIHtcblxuICAgICAgICAgICAgICAgIGlmIChpc1BsYWluT2JqZWN0KGNvbXBvbmVudHNbbmFtZV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHNbbmFtZV0gPSBVSWtpdC5leHRlbmQoY29tcG9uZW50c1tuYW1lXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudHNbbmFtZV07XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgVUlraXRbbmFtZV0gPSBmdW5jdGlvbiAoZWxlbWVudCwgZGF0YSQkMSkge1xuICAgICAgICAgICAgICAgIHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCwgYXJnc0FycmF5ID0gQXJyYXkoaSk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSBhcmdzQXJyYXlbaV0gPSBhcmd1bWVudHNbaV07XG5cblxuICAgICAgICAgICAgICAgIHZhciBjb21wb25lbnQgPSBVSWtpdC5jb21wb25lbnQobmFtZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNQbGFpbk9iamVjdChlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGNvbXBvbmVudCh7ZGF0YTogZWxlbWVudH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnQub3B0aW9ucy5mdW5jdGlvbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgY29tcG9uZW50KHtkYXRhOiBbXS5jb25jYXQoIGFyZ3NBcnJheSApfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgJiYgZWxlbWVudC5ub2RlVHlwZSA/IGluaXQoZWxlbWVudCkgOiAkJChlbGVtZW50KS5tYXAoaW5pdClbMF07XG5cbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBpbml0KGVsZW1lbnQpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgaW5zdGFuY2UgPSBVSWtpdC5nZXRDb21wb25lbnQoZWxlbWVudCwgbmFtZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGEkJDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLiRkZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGNvbXBvbmVudCh7ZWw6IGVsZW1lbnQsIGRhdGE6IGRhdGEkJDF9KTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdmFyIG9wdCA9IGlzUGxhaW5PYmplY3Qob3B0aW9ucykgPyBhc3NpZ24oe30sIG9wdGlvbnMpIDogb3B0aW9ucy5vcHRpb25zO1xuXG4gICAgICAgICAgICBvcHQubmFtZSA9IG5hbWU7XG5cbiAgICAgICAgICAgIGlmIChvcHQuaW5zdGFsbCkge1xuICAgICAgICAgICAgICAgIG9wdC5pbnN0YWxsKFVJa2l0LCBvcHQsIG5hbWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoVUlraXQuX2luaXRpYWxpemVkICYmICFvcHQuZnVuY3Rpb25hbCkge1xuICAgICAgICAgICAgICAgIHZhciBpZCA9IGh5cGhlbmF0ZShuYW1lKTtcbiAgICAgICAgICAgICAgICBmYXN0ZG9tLnJlYWQoZnVuY3Rpb24gKCkgeyByZXR1cm4gVUlraXRbbmFtZV0oKFwiW3VrLVwiICsgaWQgKyBcIl0sW2RhdGEtdWstXCIgKyBpZCArIFwiXVwiKSk7IH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY29tcG9uZW50c1tuYW1lXSA9IGlzUGxhaW5PYmplY3Qob3B0aW9ucykgPyBvcHQgOiBvcHRpb25zO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LmdldENvbXBvbmVudHMgPSBmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudCAmJiBlbGVtZW50W0RBVEFdIHx8IHt9OyB9O1xuICAgICAgICBVSWtpdC5nZXRDb21wb25lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCwgbmFtZSkgeyByZXR1cm4gVUlraXQuZ2V0Q29tcG9uZW50cyhlbGVtZW50KVtuYW1lXTsgfTtcblxuICAgICAgICBVSWtpdC5jb25uZWN0ID0gZnVuY3Rpb24gKG5vZGUpIHtcblxuICAgICAgICAgICAgaWYgKG5vZGVbREFUQV0pIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBuYW1lIGluIG5vZGVbREFUQV0pIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZVtEQVRBXVtuYW1lXS5fY2FsbENvbm5lY3RlZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgICAgIHZhciBuYW1lJDEgPSBnZXRDb21wb25lbnROYW1lKG5vZGUuYXR0cmlidXRlc1tpXS5uYW1lKTtcblxuICAgICAgICAgICAgICAgIGlmIChuYW1lJDEgJiYgbmFtZSQxIGluIGNvbXBvbmVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgVUlraXRbbmFtZSQxXShub2RlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LmRpc2Nvbm5lY3QgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBub2RlW0RBVEFdKSB7XG4gICAgICAgICAgICAgICAgbm9kZVtEQVRBXVtuYW1lXS5fY2FsbERpc2Nvbm5lY3RlZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Q29tcG9uZW50TmFtZShhdHRyaWJ1dGUpIHtcbiAgICAgICAgcmV0dXJuIHN0YXJ0c1dpdGgoYXR0cmlidXRlLCAndWstJykgfHwgc3RhcnRzV2l0aChhdHRyaWJ1dGUsICdkYXRhLXVrLScpXG4gICAgICAgICAgICA/IGNhbWVsaXplKGF0dHJpYnV0ZS5yZXBsYWNlKCdkYXRhLXVrLScsICcnKS5yZXBsYWNlKCd1ay0nLCAnJykpXG4gICAgICAgICAgICA6IGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJvb3QgKFVJa2l0KSB7XG5cbiAgICAgICAgdmFyIGNvbm5lY3QgPSBVSWtpdC5jb25uZWN0O1xuICAgICAgICB2YXIgZGlzY29ubmVjdCA9IFVJa2l0LmRpc2Nvbm5lY3Q7XG5cbiAgICAgICAgaWYgKCEoJ011dGF0aW9uT2JzZXJ2ZXInIGluIHdpbmRvdykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkb2N1bWVudC5ib2R5KSB7XG5cbiAgICAgICAgICAgIGluaXQoKTtcblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAobmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmJvZHkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgIGluaXQoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0pKS5vYnNlcnZlKGRvY3VtZW50LCB7Y2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlfSk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGluaXQoKSB7XG5cbiAgICAgICAgICAgIGFwcGx5JCQxKGRvY3VtZW50LmJvZHksIGNvbm5lY3QpO1xuXG4gICAgICAgICAgICBmYXN0ZG9tLmZsdXNoKCk7XG5cbiAgICAgICAgICAgIChuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiAobXV0YXRpb25zKSB7IHJldHVybiBtdXRhdGlvbnMuZm9yRWFjaChhcHBseU11dGF0aW9uKTsgfSkpLm9ic2VydmUoZG9jdW1lbnQsIHtcbiAgICAgICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHRydWVcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBVSWtpdC5faW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gYXBwbHlNdXRhdGlvbihtdXRhdGlvbikge1xuXG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gbXV0YXRpb24udGFyZ2V0O1xuICAgICAgICAgICAgdmFyIHR5cGUgPSBtdXRhdGlvbi50eXBlO1xuXG4gICAgICAgICAgICB2YXIgdXBkYXRlID0gdHlwZSAhPT0gJ2F0dHJpYnV0ZXMnXG4gICAgICAgICAgICAgICAgPyBhcHBseUNoaWxkTGlzdChtdXRhdGlvbilcbiAgICAgICAgICAgICAgICA6IGFwcGx5QXR0cmlidXRlKG11dGF0aW9uKTtcblxuICAgICAgICAgICAgdXBkYXRlICYmIFVJa2l0LnVwZGF0ZSh0YXJnZXQpO1xuXG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBhcHBseUF0dHJpYnV0ZShyZWYpIHtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuICAgICAgICAgICAgdmFyIGF0dHJpYnV0ZU5hbWUgPSByZWYuYXR0cmlidXRlTmFtZTtcblxuXG4gICAgICAgICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PT0gJ2hyZWYnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZShhdHRyaWJ1dGVOYW1lKTtcblxuICAgICAgICAgICAgaWYgKCFuYW1lIHx8ICEobmFtZSBpbiBVSWtpdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChoYXNBdHRyKHRhcmdldCwgYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgICAgICAgICBVSWtpdFtuYW1lXSh0YXJnZXQpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgY29tcG9uZW50ID0gVUlraXQuZ2V0Q29tcG9uZW50KHRhcmdldCwgbmFtZSk7XG5cbiAgICAgICAgICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnQuJGRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gYXBwbHlDaGlsZExpc3QocmVmKSB7XG4gICAgICAgICAgICB2YXIgYWRkZWROb2RlcyA9IHJlZi5hZGRlZE5vZGVzO1xuICAgICAgICAgICAgdmFyIHJlbW92ZWROb2RlcyA9IHJlZi5yZW1vdmVkTm9kZXM7XG5cblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhZGRlZE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYXBwbHkkJDEoYWRkZWROb2Rlc1tpXSwgY29ubmVjdCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IHJlbW92ZWROb2Rlcy5sZW5ndGg7IGkkMSsrKSB7XG4gICAgICAgICAgICAgICAgYXBwbHkkJDEocmVtb3ZlZE5vZGVzW2kkMV0sIGRpc2Nvbm5lY3QpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGFwcGx5JCQxKG5vZGUsIGZuKSB7XG5cbiAgICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlICE9PSAxIHx8IGhhc0F0dHIobm9kZSwgJ3VrLW5vLWJvb3QnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm4obm9kZSk7XG4gICAgICAgICAgICBub2RlID0gbm9kZS5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgICAgIHdoaWxlIChub2RlKSB7XG4gICAgICAgICAgICAgICAgdmFyIG5leHQgPSBub2RlLm5leHRFbGVtZW50U2libGluZztcbiAgICAgICAgICAgICAgICBhcHBseSQkMShub2RlLCBmbik7XG4gICAgICAgICAgICAgICAgbm9kZSA9IG5leHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdsb2JhbEFQSSAoVUlraXQpIHtcblxuICAgICAgICB2YXIgREFUQSA9IFVJa2l0LmRhdGE7XG5cbiAgICAgICAgVUlraXQudXNlID0gZnVuY3Rpb24gKHBsdWdpbikge1xuXG4gICAgICAgICAgICBpZiAocGx1Z2luLmluc3RhbGxlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGx1Z2luLmNhbGwobnVsbCwgdGhpcyk7XG4gICAgICAgICAgICBwbHVnaW4uaW5zdGFsbGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQubWl4aW4gPSBmdW5jdGlvbiAobWl4aW4sIGNvbXBvbmVudCkge1xuICAgICAgICAgICAgY29tcG9uZW50ID0gKGlzU3RyaW5nKGNvbXBvbmVudCkgPyBVSWtpdC5jb21wb25lbnQoY29tcG9uZW50KSA6IGNvbXBvbmVudCkgfHwgdGhpcztcbiAgICAgICAgICAgIG1peGluID0gbWVyZ2VPcHRpb25zKHt9LCBtaXhpbik7XG4gICAgICAgICAgICBtaXhpbi5taXhpbnMgPSBjb21wb25lbnQub3B0aW9ucy5taXhpbnM7XG4gICAgICAgICAgICBkZWxldGUgY29tcG9uZW50Lm9wdGlvbnMubWl4aW5zO1xuICAgICAgICAgICAgY29tcG9uZW50Lm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMobWl4aW4sIGNvbXBvbmVudC5vcHRpb25zKTtcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5leHRlbmQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuXG4gICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgICAgICAgdmFyIFN1cGVyID0gdGhpcztcbiAgICAgICAgICAgIHZhciBTdWIgPSBmdW5jdGlvbiBVSWtpdENvbXBvbmVudCAob3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2luaXQob3B0aW9ucyk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBTdWIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdXBlci5wcm90b3R5cGUpO1xuICAgICAgICAgICAgU3ViLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFN1YjtcbiAgICAgICAgICAgIFN1Yi5vcHRpb25zID0gbWVyZ2VPcHRpb25zKFN1cGVyLm9wdGlvbnMsIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICBTdWJbJ3N1cGVyJ10gPSBTdXBlcjtcbiAgICAgICAgICAgIFN1Yi5leHRlbmQgPSBTdXBlci5leHRlbmQ7XG5cbiAgICAgICAgICAgIHJldHVybiBTdWI7XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQudXBkYXRlID0gZnVuY3Rpb24gKGVsZW1lbnQsIGUpIHtcblxuICAgICAgICAgICAgZSA9IGNyZWF0ZUV2ZW50KGUgfHwgJ3VwZGF0ZScpO1xuICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQgPyB0b05vZGUoZWxlbWVudCkgOiBkb2N1bWVudC5ib2R5O1xuXG4gICAgICAgICAgICBwYXRoKGVsZW1lbnQpLm1hcChmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gdXBkYXRlKGVsZW1lbnRbREFUQV0sIGUpOyB9KTtcbiAgICAgICAgICAgIGFwcGx5KGVsZW1lbnQsIGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiB1cGRhdGUoZWxlbWVudFtEQVRBXSwgZSk7IH0pO1xuXG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGNvbnRhaW5lcjtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFVJa2l0LCAnY29udGFpbmVyJywge1xuXG4gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb250YWluZXIgfHwgZG9jdW1lbnQuYm9keTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNldDogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lciA9ICQoZWxlbWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSk7XG5cbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlKGRhdGEkJDEsIGUpIHtcblxuICAgICAgICAgICAgaWYgKCFkYXRhJCQxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKHZhciBuYW1lIGluIGRhdGEkJDEpIHtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YSQkMVtuYW1lXS5faXNSZWFkeSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhJCQxW25hbWVdLl9jYWxsVXBkYXRlKGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gcGF0aChlbGVtZW50KSB7XG4gICAgICAgICAgICB2YXIgcGF0aCA9IFtdO1xuXG4gICAgICAgICAgICB3aGlsZSAoZWxlbWVudCAmJiBlbGVtZW50ICE9PSBkb2N1bWVudC5ib2R5ICYmIGVsZW1lbnQucGFyZW50Tm9kZSkge1xuXG4gICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICBwYXRoLnVuc2hpZnQoZWxlbWVudCk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhvb2tzQVBJIChVSWtpdCkge1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5fY2FsbEhvb2sgPSBmdW5jdGlvbiAoaG9vaykge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgdmFyIGhhbmRsZXJzID0gdGhpcy4kb3B0aW9uc1tob29rXTtcblxuICAgICAgICAgICAgaWYgKGhhbmRsZXJzKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlcnMuZm9yRWFjaChmdW5jdGlvbiAoaGFuZGxlcikgeyByZXR1cm4gaGFuZGxlci5jYWxsKHRoaXMkMSk7IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5fY2FsbENvbm5lY3RlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9jb25uZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2RhdGEgPSB7fTtcbiAgICAgICAgICAgIHRoaXMuX2luaXRQcm9wcygpO1xuXG4gICAgICAgICAgICB0aGlzLl9jYWxsSG9vaygnYmVmb3JlQ29ubmVjdCcpO1xuICAgICAgICAgICAgdGhpcy5fY29ubmVjdGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5faW5pdEV2ZW50cygpO1xuICAgICAgICAgICAgdGhpcy5faW5pdE9ic2VydmVyKCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2NhbGxIb29rKCdjb25uZWN0ZWQnKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1JlYWR5KSB7XG4gICAgICAgICAgICAgICAgcmVhZHkoZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLl9jYWxsUmVhZHkoKTsgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2NhbGxVcGRhdGUoKTtcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2NhbGxEaXNjb25uZWN0ZWQgPSBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fY29ubmVjdGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9jYWxsSG9vaygnYmVmb3JlRGlzY29ubmVjdCcpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5fb2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fb2JzZXJ2ZXIgPSBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl91bmJpbmRFdmVudHMoKTtcbiAgICAgICAgICAgIHRoaXMuX2NhbGxIb29rKCdkaXNjb25uZWN0ZWQnKTtcblxuICAgICAgICAgICAgdGhpcy5fY29ubmVjdGVkID0gZmFsc2U7XG5cbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2NhbGxSZWFkeSA9IGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX2lzUmVhZHkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2lzUmVhZHkgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fY2FsbEhvb2soJ3JlYWR5Jyk7XG4gICAgICAgICAgICB0aGlzLl9yZXNldENvbXB1dGVkcygpO1xuICAgICAgICAgICAgdGhpcy5fY2FsbFVwZGF0ZSgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5fY2FsbFVwZGF0ZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICBlID0gY3JlYXRlRXZlbnQoZSB8fCAndXBkYXRlJyk7XG5cbiAgICAgICAgICAgIHZhciB0eXBlID0gZS50eXBlO1xuXG4gICAgICAgICAgICBpZiAoaW5jbHVkZXMoWyd1cGRhdGUnLCAnbG9hZCcsICdyZXNpemUnXSwgdHlwZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXNldENvbXB1dGVkcygpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgdXBkYXRlcyA9IHRoaXMuJG9wdGlvbnMudXBkYXRlO1xuICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuX2ZyYW1lcztcbiAgICAgICAgICAgIHZhciByZWFkcyA9IHJlZi5yZWFkcztcbiAgICAgICAgICAgIHZhciB3cml0ZXMgPSByZWYud3JpdGVzO1xuXG4gICAgICAgICAgICBpZiAoIXVwZGF0ZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHVwZGF0ZXMuZm9yRWFjaChmdW5jdGlvbiAocmVmLCBpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlYWQgPSByZWYucmVhZDtcbiAgICAgICAgICAgICAgICB2YXIgd3JpdGUgPSByZWYud3JpdGU7XG4gICAgICAgICAgICAgICAgdmFyIGV2ZW50cyA9IHJlZi5ldmVudHM7XG5cblxuICAgICAgICAgICAgICAgIGlmICh0eXBlICE9PSAndXBkYXRlJyAmJiAhaW5jbHVkZXMoZXZlbnRzLCB0eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHJlYWQgJiYgIWluY2x1ZGVzKGZhc3Rkb20ucmVhZHMsIHJlYWRzW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICByZWFkc1tpXSA9IGZhc3Rkb20ucmVhZChmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB0aGlzJDEuX2Nvbm5lY3RlZCAmJiByZWFkLmNhbGwodGhpcyQxLCB0aGlzJDEuX2RhdGEsIGUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSBmYWxzZSAmJiB3cml0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhc3Rkb20uY2xlYXIod3JpdGVzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgd3JpdGVzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ24odGhpcyQxLl9kYXRhLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlYWRzW2ldO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAod3JpdGUgJiYgIWluY2x1ZGVzKGZhc3Rkb20ud3JpdGVzLCB3cml0ZXNbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHdyaXRlc1tpXSA9IGZhc3Rkb20ud3JpdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLl9jb25uZWN0ZWQgJiYgd3JpdGUuY2FsbCh0aGlzJDEsIHRoaXMkMS5fZGF0YSwgZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgd3JpdGVzW2ldO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH07XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdGF0ZUFQSSAoVUlraXQpIHtcblxuICAgICAgICB2YXIgdWlkID0gMDtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuXG4gICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICAgICAgICAgIG9wdGlvbnMuZGF0YSA9IG5vcm1hbGl6ZURhdGEob3B0aW9ucywgdGhpcy5jb25zdHJ1Y3Rvci5vcHRpb25zKTtcblxuICAgICAgICAgICAgdGhpcy4kb3B0aW9ucyA9IG1lcmdlT3B0aW9ucyh0aGlzLmNvbnN0cnVjdG9yLm9wdGlvbnMsIG9wdGlvbnMsIHRoaXMpO1xuICAgICAgICAgICAgdGhpcy4kZWwgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy4kcHJvcHMgPSB7fTtcblxuICAgICAgICAgICAgdGhpcy5fZnJhbWVzID0ge3JlYWRzOiB7fSwgd3JpdGVzOiB7fX07XG4gICAgICAgICAgICB0aGlzLl9ldmVudHMgPSBbXTtcblxuICAgICAgICAgICAgdGhpcy5fdWlkID0gdWlkKys7XG4gICAgICAgICAgICB0aGlzLl9pbml0RGF0YSgpO1xuICAgICAgICAgICAgdGhpcy5faW5pdE1ldGhvZHMoKTtcbiAgICAgICAgICAgIHRoaXMuX2luaXRDb21wdXRlZHMoKTtcbiAgICAgICAgICAgIHRoaXMuX2NhbGxIb29rKCdjcmVhdGVkJyk7XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zLmVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kbW91bnQob3B0aW9ucy5lbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9pbml0RGF0YSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLiRvcHRpb25zO1xuICAgICAgICAgICAgdmFyIGRhdGEkJDEgPSByZWYuZGF0YTsgaWYgKCBkYXRhJCQxID09PSB2b2lkIDAgKSBkYXRhJCQxID0ge307XG5cbiAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBkYXRhJCQxKSB7XG4gICAgICAgICAgICAgICAgdGhpcyQxLiRwcm9wc1trZXldID0gdGhpcyQxW2tleV0gPSBkYXRhJCQxW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9pbml0TWV0aG9kcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLiRvcHRpb25zO1xuICAgICAgICAgICAgdmFyIG1ldGhvZHMgPSByZWYubWV0aG9kcztcblxuICAgICAgICAgICAgaWYgKG1ldGhvZHMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gbWV0aG9kcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDFba2V5XSA9IGJpbmQobWV0aG9kc1trZXldLCB0aGlzJDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2luaXRDb21wdXRlZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kb3B0aW9ucztcbiAgICAgICAgICAgIHZhciBjb21wdXRlZCA9IHJlZi5jb21wdXRlZDtcblxuICAgICAgICAgICAgdGhpcy5fcmVzZXRDb21wdXRlZHMoKTtcblxuICAgICAgICAgICAgaWYgKGNvbXB1dGVkKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGNvbXB1dGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyQ29tcHV0ZWQodGhpcyQxLCBrZXksIGNvbXB1dGVkW2tleV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX3Jlc2V0Q29tcHV0ZWRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5fY29tcHV0ZWRzID0ge307XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9pbml0UHJvcHMgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHZhciBrZXk7XG5cbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0Q29tcHV0ZWRzKCk7XG5cbiAgICAgICAgICAgIHByb3BzID0gcHJvcHMgfHwgZ2V0UHJvcHModGhpcy4kb3B0aW9ucywgdGhpcy4kbmFtZSk7XG5cbiAgICAgICAgICAgIGZvciAoa2V5IGluIHByb3BzKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChwcm9wc1trZXldKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEuJHByb3BzW2tleV0gPSBwcm9wc1trZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGV4Y2x1ZGUgPSBbdGhpcy4kb3B0aW9ucy5jb21wdXRlZCwgdGhpcy4kb3B0aW9ucy5tZXRob2RzXTtcbiAgICAgICAgICAgIGZvciAoa2V5IGluIHRoaXMkMS4kcHJvcHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5IGluIHByb3BzICYmIG5vdEluKGV4Y2x1ZGUsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxW2tleV0gPSB0aGlzJDEuJHByb3BzW2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5faW5pdEV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLiRvcHRpb25zO1xuICAgICAgICAgICAgdmFyIGV2ZW50cyA9IHJlZi5ldmVudHM7XG5cbiAgICAgICAgICAgIGlmIChldmVudHMpIHtcblxuICAgICAgICAgICAgICAgIGV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChldmVudCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghaGFzT3duKGV2ZW50LCAnaGFuZGxlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlckV2ZW50KHRoaXMkMSwgZXZlbnRba2V5XSwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRXZlbnQodGhpcyQxLCBldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5fdW5iaW5kRXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5fZXZlbnRzLmZvckVhY2goZnVuY3Rpb24gKHVuYmluZCkgeyByZXR1cm4gdW5iaW5kKCk7IH0pO1xuICAgICAgICAgICAgdGhpcy5fZXZlbnRzID0gW107XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9pbml0T2JzZXJ2ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kb3B0aW9ucztcbiAgICAgICAgICAgIHZhciBhdHRycyA9IHJlZi5hdHRycztcbiAgICAgICAgICAgIHZhciBwcm9wcyA9IHJlZi5wcm9wcztcbiAgICAgICAgICAgIHZhciBlbCA9IHJlZi5lbDtcbiAgICAgICAgICAgIGlmICh0aGlzLl9vYnNlcnZlciB8fCAhcHJvcHMgfHwgIWF0dHJzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhdHRycyA9IGlzQXJyYXkoYXR0cnMpID8gYXR0cnMgOiBPYmplY3Qua2V5cyhwcm9wcykubWFwKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIGh5cGhlbmF0ZShrZXkpOyB9KTtcblxuICAgICAgICAgICAgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgZGF0YSQkMSA9IGdldFByb3BzKHRoaXMkMS4kb3B0aW9ucywgdGhpcyQxLiRuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoYXR0cnMuc29tZShmdW5jdGlvbiAoa2V5KSB7IHJldHVybiAhaXNVbmRlZmluZWQoZGF0YSQkMVtrZXldKSAmJiBkYXRhJCQxW2tleV0gIT09IHRoaXMkMS4kcHJvcHNba2V5XTsgfSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLiRyZXNldCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUoZWwsIHthdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IGF0dHJzLmNvbmNhdChbdGhpcy4kbmFtZSwgKFwiZGF0YS1cIiArICh0aGlzLiRuYW1lKSldKX0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIGZ1bmN0aW9uIGdldFByb3BzKG9wdHMsIG5hbWUpIHtcblxuICAgICAgICAgICAgdmFyIGRhdGEkJDEgPSB7fTtcbiAgICAgICAgICAgIHZhciBhcmdzID0gb3B0cy5hcmdzOyBpZiAoIGFyZ3MgPT09IHZvaWQgMCApIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIHZhciBwcm9wcyA9IG9wdHMucHJvcHM7IGlmICggcHJvcHMgPT09IHZvaWQgMCApIHByb3BzID0ge307XG4gICAgICAgICAgICB2YXIgZWwgPSBvcHRzLmVsO1xuXG4gICAgICAgICAgICBpZiAoIXByb3BzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEkJDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBwcm9wcykge1xuICAgICAgICAgICAgICAgIHZhciBwcm9wID0gaHlwaGVuYXRlKGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKGhhc0F0dHIoZWwsIHByb3ApKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gY29lcmNlKHByb3BzW2tleV0sIGF0dHIoZWwsIHByb3ApKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcCA9PT0gJ3RhcmdldCcgJiYgKCF2YWx1ZSB8fCBzdGFydHNXaXRoKHZhbHVlLCAnXycpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBkYXRhJCQxW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBvcHRpb25zID0gcGFyc2VPcHRpb25zKGRhdGEoZWwsIG5hbWUpLCBhcmdzKTtcblxuICAgICAgICAgICAgZm9yICh2YXIga2V5JDEgaW4gb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHZhciBwcm9wJDEgPSBjYW1lbGl6ZShrZXkkMSk7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzW3Byb3AkMV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhJCQxW3Byb3AkMV0gPSBjb2VyY2UocHJvcHNbcHJvcCQxXSwgb3B0aW9uc1trZXkkMV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGRhdGEkJDE7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiByZWdpc3RlckNvbXB1dGVkKGNvbXBvbmVudCwga2V5LCBjYikge1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbXBvbmVudCwga2V5LCB7XG5cbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgX2NvbXB1dGVkcyA9IGNvbXBvbmVudC5fY29tcHV0ZWRzO1xuICAgICAgICAgICAgICAgICAgICB2YXIgJHByb3BzID0gY29tcG9uZW50LiRwcm9wcztcbiAgICAgICAgICAgICAgICAgICAgdmFyICRlbCA9IGNvbXBvbmVudC4kZWw7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNPd24oX2NvbXB1dGVkcywga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX2NvbXB1dGVkc1trZXldID0gY2IuY2FsbChjb21wb25lbnQsICRwcm9wcywgJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29tcHV0ZWRzW2tleV07XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Ll9jb21wdXRlZHNba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiByZWdpc3RlckV2ZW50KGNvbXBvbmVudCwgZXZlbnQsIGtleSkge1xuXG4gICAgICAgICAgICBpZiAoIWlzUGxhaW5PYmplY3QoZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQgPSAoe25hbWU6IGtleSwgaGFuZGxlcjogZXZlbnR9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIG5hbWUgPSBldmVudC5uYW1lO1xuICAgICAgICAgICAgdmFyIGVsID0gZXZlbnQuZWw7XG4gICAgICAgICAgICB2YXIgaGFuZGxlciA9IGV2ZW50LmhhbmRsZXI7XG4gICAgICAgICAgICB2YXIgY2FwdHVyZSA9IGV2ZW50LmNhcHR1cmU7XG4gICAgICAgICAgICB2YXIgZGVsZWdhdGUgPSBldmVudC5kZWxlZ2F0ZTtcbiAgICAgICAgICAgIHZhciBmaWx0ZXIkJDEgPSBldmVudC5maWx0ZXI7XG4gICAgICAgICAgICB2YXIgc2VsZiA9IGV2ZW50LnNlbGY7XG4gICAgICAgICAgICBlbCA9IGlzRnVuY3Rpb24oZWwpXG4gICAgICAgICAgICAgICAgPyBlbC5jYWxsKGNvbXBvbmVudClcbiAgICAgICAgICAgICAgICA6IGVsIHx8IGNvbXBvbmVudC4kZWw7XG5cbiAgICAgICAgICAgIGlmIChpc0FycmF5KGVsKSkge1xuICAgICAgICAgICAgICAgIGVsLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7IHJldHVybiByZWdpc3RlckV2ZW50KGNvbXBvbmVudCwgYXNzaWduKHt9LCBldmVudCwge2VsOiBlbH0pLCBrZXkpOyB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghZWwgfHwgZmlsdGVyJCQxICYmICFmaWx0ZXIkJDEuY2FsbChjb21wb25lbnQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBoYW5kbGVyID0gZGV0YWlsKGlzU3RyaW5nKGhhbmRsZXIpID8gY29tcG9uZW50W2hhbmRsZXJdIDogYmluZChoYW5kbGVyLCBjb21wb25lbnQpKTtcblxuICAgICAgICAgICAgaWYgKHNlbGYpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVyID0gc2VsZkZpbHRlcihoYW5kbGVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29tcG9uZW50Ll9ldmVudHMucHVzaChcbiAgICAgICAgICAgICAgICBvbihcbiAgICAgICAgICAgICAgICAgICAgZWwsXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICFkZWxlZ2F0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGlzU3RyaW5nKGRlbGVnYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZGVsZWdhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGRlbGVnYXRlLmNhbGwoY29tcG9uZW50KSxcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlcixcbiAgICAgICAgICAgICAgICAgICAgY2FwdHVyZVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHNlbGZGaWx0ZXIoaGFuZGxlcikge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNlbGZIYW5kbGVyKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQgPT09IGUuY3VycmVudFRhcmdldCB8fCBlLnRhcmdldCA9PT0gZS5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVyLmNhbGwobnVsbCwgZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG5vdEluKG9wdGlvbnMsIGtleSkge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuZXZlcnkoZnVuY3Rpb24gKGFycikgeyByZXR1cm4gIWFyciB8fCAhaGFzT3duKGFyciwga2V5KTsgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBkZXRhaWwobGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gaXNBcnJheShlLmRldGFpbCkgPyBsaXN0ZW5lci5hcHBseSh2b2lkIDAsIFtlXS5jb25jYXQoZS5kZXRhaWwpKSA6IGxpc3RlbmVyKGUpOyB9O1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gY29lcmNlKHR5cGUsIHZhbHVlKSB7XG5cbiAgICAgICAgICAgIGlmICh0eXBlID09PSBCb29sZWFuKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvQm9vbGVhbih2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IE51bWJlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b051bWJlcih2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdsaXN0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b0xpc3QodmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnbWVkaWEnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvTWVkaWEodmFsdWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdHlwZSA/IHR5cGUodmFsdWUpIDogdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiB0b01lZGlhKHZhbHVlKSB7XG5cbiAgICAgICAgICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWVbMF0gPT09ICdAJykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IFwibWVkaWEtXCIgKyAodmFsdWUuc3Vic3RyKDEpKTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB0b0Zsb2F0KGdldENzc1ZhcihuYW1lKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlICYmICFpc05hTih2YWx1ZSkgPyAoXCIobWluLXdpZHRoOiBcIiArIHZhbHVlICsgXCJweClcIikgOiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZURhdGEocmVmLCByZWYkMSkge1xuICAgICAgICAgICAgdmFyIGRhdGEkJDEgPSByZWYuZGF0YTtcbiAgICAgICAgICAgIHZhciBlbCA9IHJlZi5lbDtcbiAgICAgICAgICAgIHZhciBhcmdzID0gcmVmJDEuYXJncztcbiAgICAgICAgICAgIHZhciBwcm9wcyA9IHJlZiQxLnByb3BzOyBpZiAoIHByb3BzID09PSB2b2lkIDAgKSBwcm9wcyA9IHt9O1xuXG4gICAgICAgICAgICBkYXRhJCQxID0gaXNBcnJheShkYXRhJCQxKVxuICAgICAgICAgICAgICAgID8gYXJncyAmJiBhcmdzLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IGRhdGEkJDEuc2xpY2UoMCwgYXJncy5sZW5ndGgpLnJlZHVjZShmdW5jdGlvbiAoZGF0YSQkMSwgdmFsdWUsIGluZGV4JCQxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ24oZGF0YSQkMSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhJCQxW2FyZ3NbaW5kZXgkJDFdXSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEkJDE7XG4gICAgICAgICAgICAgICAgICAgIH0sIHt9KVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIDogZGF0YSQkMTtcblxuICAgICAgICAgICAgaWYgKGRhdGEkJDEpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZGF0YSQkMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQoZGF0YSQkMVtrZXldKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGRhdGEkJDFba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEkJDFba2V5XSA9IHByb3BzW2tleV0gPyBjb2VyY2UocHJvcHNba2V5XSwgZGF0YSQkMVtrZXldLCBlbCkgOiBkYXRhJCQxW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBkYXRhJCQxO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zdGFuY2VBUEkgKFVJa2l0KSB7XG5cbiAgICAgICAgdmFyIERBVEEgPSBVSWtpdC5kYXRhO1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS4kbW91bnQgPSBmdW5jdGlvbiAoZWwpIHtcblxuICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuJG9wdGlvbnM7XG4gICAgICAgICAgICB2YXIgbmFtZSA9IHJlZi5uYW1lO1xuXG4gICAgICAgICAgICBpZiAoIWVsW0RBVEFdKSB7XG4gICAgICAgICAgICAgICAgZWxbREFUQV0gPSB7fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGVsW0RBVEFdW25hbWVdKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBlbFtEQVRBXVtuYW1lXSA9IHRoaXM7XG5cbiAgICAgICAgICAgIHRoaXMuJGVsID0gdGhpcy4kb3B0aW9ucy5lbCA9IHRoaXMuJG9wdGlvbnMuZWwgfHwgZWw7XG5cbiAgICAgICAgICAgIHRoaXMuX2NhbGxIb29rKCdpbml0Jyk7XG5cbiAgICAgICAgICAgIGlmICh3aXRoaW4oZWwsIGRvY3VtZW50KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhbGxDb25uZWN0ZWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuJGVtaXQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdGhpcy5fY2FsbFVwZGF0ZShlKTtcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuJHJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5fY2FsbERpc2Nvbm5lY3RlZCgpO1xuICAgICAgICAgICAgdGhpcy5fY2FsbENvbm5lY3RlZCgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS4kZGVzdHJveSA9IGZ1bmN0aW9uIChyZW1vdmVFbCkge1xuICAgICAgICAgICAgaWYgKCByZW1vdmVFbCA9PT0gdm9pZCAwICkgcmVtb3ZlRWwgPSBmYWxzZTtcblxuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kb3B0aW9ucztcbiAgICAgICAgICAgIHZhciBlbCA9IHJlZi5lbDtcbiAgICAgICAgICAgIHZhciBuYW1lID0gcmVmLm5hbWU7XG5cbiAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhbGxEaXNjb25uZWN0ZWQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fY2FsbEhvb2soJ2Rlc3Ryb3knKTtcblxuICAgICAgICAgICAgaWYgKCFlbCB8fCAhZWxbREFUQV0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlbGV0ZSBlbFtEQVRBXVtuYW1lXTtcblxuICAgICAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhlbFtEQVRBXSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGVsW0RBVEFdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVtb3ZlRWwpIHtcbiAgICAgICAgICAgICAgICByZW1vdmUodGhpcy4kZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS4kY3JlYXRlID0gZnVuY3Rpb24gKGNvbXBvbmVudCwgZWxlbWVudCwgZGF0YSQkMSkge1xuICAgICAgICAgICAgcmV0dXJuIFVJa2l0W2NvbXBvbmVudF0oZWxlbWVudCwgZGF0YSQkMSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLiR1cGRhdGUgPSBVSWtpdC51cGRhdGU7XG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS4kZ2V0Q29tcG9uZW50ID0gVUlraXQuZ2V0Q29tcG9uZW50O1xuXG4gICAgICAgIHZhciBuYW1lcyA9IHt9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhVSWtpdC5wcm90b3R5cGUsIHtcblxuICAgICAgICAgICAgJGNvbnRhaW5lcjogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihVSWtpdCwgJ2NvbnRhaW5lcicpLFxuXG4gICAgICAgICAgICAkbmFtZToge1xuXG4gICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuJG9wdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gcmVmLm5hbWU7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFuYW1lc1tuYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNbbmFtZV0gPSBVSWtpdC5wcmVmaXggKyBoeXBoZW5hdGUobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZXNbbmFtZV07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICB2YXIgVUlraXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgICB0aGlzLl9pbml0KG9wdGlvbnMpO1xuICAgIH07XG5cbiAgICBVSWtpdC51dGlsID0gdXRpbDtcbiAgICBVSWtpdC5kYXRhID0gJ19fdWlraXRfXyc7XG4gICAgVUlraXQucHJlZml4ID0gJ3VrLSc7XG4gICAgVUlraXQub3B0aW9ucyA9IHt9O1xuXG4gICAgZ2xvYmFsQVBJKFVJa2l0KTtcbiAgICBob29rc0FQSShVSWtpdCk7XG4gICAgc3RhdGVBUEkoVUlraXQpO1xuICAgIGNvbXBvbmVudEFQSShVSWtpdCk7XG4gICAgaW5zdGFuY2VBUEkoVUlraXQpO1xuXG4gICAgdmFyIENsYXNzID0ge1xuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgdGhpcy4kbmFtZSk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgVG9nZ2xhYmxlID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBjbHM6IEJvb2xlYW4sXG4gICAgICAgICAgICBhbmltYXRpb246ICdsaXN0JyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiBOdW1iZXIsXG4gICAgICAgICAgICBvcmlnaW46IFN0cmluZyxcbiAgICAgICAgICAgIHRyYW5zaXRpb246IFN0cmluZyxcbiAgICAgICAgICAgIHF1ZXVlZDogQm9vbGVhblxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNsczogZmFsc2UsXG4gICAgICAgICAgICBhbmltYXRpb246IFtmYWxzZV0sXG4gICAgICAgICAgICBkdXJhdGlvbjogMjAwLFxuICAgICAgICAgICAgb3JpZ2luOiBmYWxzZSxcbiAgICAgICAgICAgIHRyYW5zaXRpb246ICdsaW5lYXInLFxuICAgICAgICAgICAgcXVldWVkOiBmYWxzZSxcblxuICAgICAgICAgICAgaW5pdFByb3BzOiB7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICcnLFxuICAgICAgICAgICAgICAgIGhlaWdodDogJycsXG4gICAgICAgICAgICAgICAgcGFkZGluZ1RvcDogJycsXG4gICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogJycsXG4gICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAnJyxcbiAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b206ICcnXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoaWRlUHJvcHM6IHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdUb3A6IDAsXG4gICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogMCxcbiAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6IDAsXG4gICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiAwXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBoYXNBbmltYXRpb246IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBhbmltYXRpb24gPSByZWYuYW5pbWF0aW9uO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICEhYW5pbWF0aW9uWzBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaGFzVHJhbnNpdGlvbjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFuaW1hdGlvbiA9IHJlZi5hbmltYXRpb247XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5oYXNBbmltYXRpb24gJiYgYW5pbWF0aW9uWzBdID09PSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICB0b2dnbGVFbGVtZW50OiBmdW5jdGlvbih0YXJnZXRzLCBzaG93LCBhbmltYXRlJCQxKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldHMgPSB0b05vZGVzKHRhcmdldHMpO1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBhbGwgPSBmdW5jdGlvbiAodGFyZ2V0cykgeyByZXR1cm4gUHJvbWlzZSQxLmFsbCh0YXJnZXRzLm1hcChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHRoaXMkMS5fdG9nZ2xlRWxlbWVudChlbCwgc2hvdywgYW5pbWF0ZSQkMSk7IH0pKTsgfTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRvZ2dsZWQgPSB0YXJnZXRzLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHRoaXMkMS5pc1RvZ2dsZWQoZWwpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHVudG9nZ2xlZCA9IHRhcmdldHMuZmlsdGVyKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gIWluY2x1ZGVzKHRvZ2dsZWQsIGVsKTsgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHA7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzJDEucXVldWVkIHx8ICFpc1VuZGVmaW5lZChhbmltYXRlJCQxKSB8fCAhaXNVbmRlZmluZWQoc2hvdykgfHwgIXRoaXMkMS5oYXNBbmltYXRpb24gfHwgdGFyZ2V0cy5sZW5ndGggPCAyKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBhbGwodW50b2dnbGVkLmNvbmNhdCh0b2dnbGVkKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5ib2R5O1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjcm9sbCA9IGJvZHkuc2Nyb2xsVG9wO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsID0gdG9nZ2xlZFswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpblByb2dyZXNzID0gQW5pbWF0aW9uLmluUHJvZ3Jlc3MoZWwpICYmIGhhc0NsYXNzKGVsLCAndWstYW5pbWF0aW9uLWxlYXZlJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgVHJhbnNpdGlvbi5pblByb2dyZXNzKGVsKSAmJiBlbC5zdHlsZS5oZWlnaHQgPT09ICcwcHgnO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBwID0gYWxsKHRvZ2dsZWQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gcC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBhbGwodW50b2dnbGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keS5zY3JvbGxUb3AgPSBzY3JvbGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBwLnRoZW4ocmVzb2x2ZSwgbm9vcCk7XG5cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRvZ2dsZU5vdzogZnVuY3Rpb24odGFyZ2V0cywgc2hvdykge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmV0dXJuIFByb21pc2UkMS5hbGwodG9Ob2Rlcyh0YXJnZXRzKS5tYXAoZnVuY3Rpb24gKGVsKSB7IHJldHVybiB0aGlzJDEuX3RvZ2dsZUVsZW1lbnQoZWwsIHNob3csIGZhbHNlKTsgfSkpLnRoZW4ocmVzb2x2ZSwgbm9vcCk7IH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaXNUb2dnbGVkOiBmdW5jdGlvbihlbCkge1xuICAgICAgICAgICAgICAgIHZhciBub2RlcyA9IHRvTm9kZXMoZWwgfHwgdGhpcy4kZWwpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsc1xuICAgICAgICAgICAgICAgICAgICA/IGhhc0NsYXNzKG5vZGVzLCB0aGlzLmNscy5zcGxpdCgnICcpWzBdKVxuICAgICAgICAgICAgICAgICAgICA6ICFoYXNBdHRyKG5vZGVzLCAnaGlkZGVuJyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB1cGRhdGVBcmlhOiBmdW5jdGlvbihlbCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNscyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgYXR0cihlbCwgJ2FyaWEtaGlkZGVuJywgIXRoaXMuaXNUb2dnbGVkKGVsKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3RvZ2dsZUVsZW1lbnQ6IGZ1bmN0aW9uKGVsLCBzaG93LCBhbmltYXRlJCQxKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHNob3cgPSBpc0Jvb2xlYW4oc2hvdylcbiAgICAgICAgICAgICAgICAgICAgPyBzaG93XG4gICAgICAgICAgICAgICAgICAgIDogQW5pbWF0aW9uLmluUHJvZ3Jlc3MoZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhhc0NsYXNzKGVsLCAndWstYW5pbWF0aW9uLWxlYXZlJylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogVHJhbnNpdGlvbi5pblByb2dyZXNzKGVsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZWwuc3R5bGUuaGVpZ2h0ID09PSAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIXRoaXMuaXNUb2dnbGVkKGVsKTtcblxuICAgICAgICAgICAgICAgIGlmICghdHJpZ2dlcihlbCwgKFwiYmVmb3JlXCIgKyAoc2hvdyA/ICdzaG93JyA6ICdoaWRlJykpLCBbdGhpc10pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIHByb21pc2UgPSAoYW5pbWF0ZSQkMSA9PT0gZmFsc2UgfHwgIXRoaXMuaGFzQW5pbWF0aW9uXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5fdG9nZ2xlSW1tZWRpYXRlXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5oYXNUcmFuc2l0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuX3RvZ2dsZUhlaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl90b2dnbGVBbmltYXRpb25cbiAgICAgICAgICAgICAgICApKGVsLCBzaG93KTtcblxuICAgICAgICAgICAgICAgIHRyaWdnZXIoZWwsIHNob3cgPyAnc2hvdycgOiAnaGlkZScsIFt0aGlzXSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcihlbCwgc2hvdyA/ICdzaG93bicgOiAnaGlkZGVuJywgW3RoaXMkMV0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEuJHVwZGF0ZShlbCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfdG9nZ2xlOiBmdW5jdGlvbihlbCwgdG9nZ2xlZCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKCFlbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGNoYW5nZWQ7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSBpbmNsdWRlcyh0aGlzLmNscywgJyAnKSB8fCBCb29sZWFuKHRvZ2dsZWQpICE9PSBoYXNDbGFzcyhlbCwgdGhpcy5jbHMpO1xuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkICYmIHRvZ2dsZUNsYXNzKGVsLCB0aGlzLmNscywgaW5jbHVkZXModGhpcy5jbHMsICcgJykgPyB1bmRlZmluZWQgOiB0b2dnbGVkKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gQm9vbGVhbih0b2dnbGVkKSA9PT0gaGFzQXR0cihlbCwgJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkICYmIGF0dHIoZWwsICdoaWRkZW4nLCAhdG9nZ2xlZCA/ICcnIDogbnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJCQoJ1thdXRvZm9jdXNdJywgZWwpLnNvbWUoZnVuY3Rpb24gKGVsKSB7IHJldHVybiBpc1Zpc2libGUoZWwpICYmIChlbC5mb2N1cygpIHx8IHRydWUpOyB9KTtcblxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQXJpYShlbCk7XG4gICAgICAgICAgICAgICAgY2hhbmdlZCAmJiB0aGlzLiR1cGRhdGUoZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3RvZ2dsZUltbWVkaWF0ZTogZnVuY3Rpb24oZWwsIHNob3cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90b2dnbGUoZWwsIHNob3cpO1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3RvZ2dsZUhlaWdodDogZnVuY3Rpb24oZWwsIHNob3cpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgdmFyIGluUHJvZ3Jlc3MgPSBUcmFuc2l0aW9uLmluUHJvZ3Jlc3MoZWwpO1xuICAgICAgICAgICAgICAgIHZhciBpbm5lciA9IGVsLmhhc0NoaWxkTm9kZXMgPyB0b0Zsb2F0KGNzcyhlbC5maXJzdEVsZW1lbnRDaGlsZCwgJ21hcmdpblRvcCcpKSArIHRvRmxvYXQoY3NzKGVsLmxhc3RFbGVtZW50Q2hpbGQsICdtYXJnaW5Cb3R0b20nKSkgOiAwO1xuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50SGVpZ2h0ID0gaXNWaXNpYmxlKGVsKSA/IGhlaWdodChlbCkgKyAoaW5Qcm9ncmVzcyA/IDAgOiBpbm5lcikgOiAwO1xuXG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwoZWwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzVG9nZ2xlZChlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdG9nZ2xlKGVsLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBoZWlnaHQoZWwsICcnKTtcblxuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBjaGlsZCBjb21wb25lbnRzIGZpcnN0XG4gICAgICAgICAgICAgICAgZmFzdGRvbS5mbHVzaCgpO1xuXG4gICAgICAgICAgICAgICAgdmFyIGVuZEhlaWdodCA9IGhlaWdodChlbCkgKyAoaW5Qcm9ncmVzcyA/IDAgOiBpbm5lcik7XG4gICAgICAgICAgICAgICAgaGVpZ2h0KGVsLCBjdXJyZW50SGVpZ2h0KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiAoc2hvd1xuICAgICAgICAgICAgICAgICAgICA/IFRyYW5zaXRpb24uc3RhcnQoZWwsIGFzc2lnbih7fSwgdGhpcy5pbml0UHJvcHMsIHtvdmVyZmxvdzogJ2hpZGRlbicsIGhlaWdodDogZW5kSGVpZ2h0fSksIE1hdGgucm91bmQodGhpcy5kdXJhdGlvbiAqICgxIC0gY3VycmVudEhlaWdodCAvIGVuZEhlaWdodCkpLCB0aGlzLnRyYW5zaXRpb24pXG4gICAgICAgICAgICAgICAgICAgIDogVHJhbnNpdGlvbi5zdGFydChlbCwgdGhpcy5oaWRlUHJvcHMsIE1hdGgucm91bmQodGhpcy5kdXJhdGlvbiAqIChjdXJyZW50SGVpZ2h0IC8gZW5kSGVpZ2h0KSksIHRoaXMudHJhbnNpdGlvbikudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzJDEuX3RvZ2dsZShlbCwgZmFsc2UpOyB9KVxuICAgICAgICAgICAgICAgICkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBjc3MoZWwsIHRoaXMkMS5pbml0UHJvcHMpOyB9KTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3RvZ2dsZUFuaW1hdGlvbjogZnVuY3Rpb24oZWwsIHNob3cpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgQW5pbWF0aW9uLmNhbmNlbChlbCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2hvdykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90b2dnbGUoZWwsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gQW5pbWF0aW9uLmluKGVsLCB0aGlzLmFuaW1hdGlvblswXSwgdGhpcy5kdXJhdGlvbiwgdGhpcy5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBBbmltYXRpb24ub3V0KGVsLCB0aGlzLmFuaW1hdGlvblsxXSB8fCB0aGlzLmFuaW1hdGlvblswXSwgdGhpcy5kdXJhdGlvbiwgdGhpcy5vcmlnaW4pLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLl90b2dnbGUoZWwsIGZhbHNlKTsgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBBY2NvcmRpb24gPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3MsIFRvZ2dsYWJsZV0sXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHRhcmdldHM6IFN0cmluZyxcbiAgICAgICAgICAgIGFjdGl2ZTogbnVsbCxcbiAgICAgICAgICAgIGNvbGxhcHNpYmxlOiBCb29sZWFuLFxuICAgICAgICAgICAgbXVsdGlwbGU6IEJvb2xlYW4sXG4gICAgICAgICAgICB0b2dnbGU6IFN0cmluZyxcbiAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyxcbiAgICAgICAgICAgIHRyYW5zaXRpb246IFN0cmluZ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHRhcmdldHM6ICc+IConLFxuICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIGFuaW1hdGlvbjogW3RydWVdLFxuICAgICAgICAgICAgY29sbGFwc2libGU6IHRydWUsXG4gICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICBjbHNPcGVuOiAndWstb3BlbicsXG4gICAgICAgICAgICB0b2dnbGU6ICc+IC51ay1hY2NvcmRpb24tdGl0bGUnLFxuICAgICAgICAgICAgY29udGVudDogJz4gLnVrLWFjY29yZGlvbi1jb250ZW50JyxcbiAgICAgICAgICAgIHRyYW5zaXRpb246ICdlYXNlJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGl0ZW1zOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXRzID0gcmVmLnRhcmdldHM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJCQodGFyZ2V0cywgJGVsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCh0aGlzLnRhcmdldHMpICsgXCIgXCIgKyAodGhpcy4kcHJvcHMudG9nZ2xlKSk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZShpbmRleCgkJCgoKHRoaXMudGFyZ2V0cykgKyBcIiBcIiArICh0aGlzLiRwcm9wcy50b2dnbGUpKSwgdGhpcy4kZWwpLCBlLmN1cnJlbnQpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBhY3RpdmUgPSB0aGlzLml0ZW1zW051bWJlcih0aGlzLmFjdGl2ZSldO1xuICAgICAgICAgICAgaWYgKGFjdGl2ZSAmJiAhaGFzQ2xhc3MoYWN0aXZlLCB0aGlzLmNsc09wZW4pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGUoYWN0aXZlLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHRoaXMkMS5fdG9nZ2xlSW1tZWRpYXRlKCQodGhpcyQxLmNvbnRlbnQsIGVsKSwgaGFzQ2xhc3MoZWwsIHRoaXMkMS5jbHNPcGVuKSk7IH0pO1xuXG4gICAgICAgICAgICB2YXIgYWN0aXZlID0gIXRoaXMuY29sbGFwc2libGUgJiYgIWhhc0NsYXNzKHRoaXMuaXRlbXMsIHRoaXMuY2xzT3BlbikgJiYgdGhpcy5pdGVtc1swXTtcbiAgICAgICAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZShhY3RpdmUsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHRvZ2dsZTogZnVuY3Rpb24oaXRlbSwgYW5pbWF0ZSQkMSkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgaW5kZXgkJDEgPSBnZXRJbmRleChpdGVtLCB0aGlzLml0ZW1zKTtcbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gZmlsdGVyKHRoaXMuaXRlbXMsIChcIi5cIiArICh0aGlzLmNsc09wZW4pKSk7XG5cbiAgICAgICAgICAgICAgICBpdGVtID0gdGhpcy5pdGVtc1tpbmRleCQkMV07XG5cbiAgICAgICAgICAgICAgICBpdGVtICYmIFtpdGVtXVxuICAgICAgICAgICAgICAgICAgICAuY29uY2F0KCF0aGlzLm11bHRpcGxlICYmICFpbmNsdWRlcyhhY3RpdmUsIGl0ZW0pICYmIGFjdGl2ZSB8fCBbXSlcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpc0l0ZW0gPSBlbCA9PT0gaXRlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ZSA9IGlzSXRlbSAmJiAhaGFzQ2xhc3MoZWwsIHRoaXMkMS5jbHNPcGVuKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGF0ZSAmJiBpc0l0ZW0gJiYgIXRoaXMkMS5jb2xsYXBzaWJsZSAmJiBhY3RpdmUubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoZWwsIHRoaXMkMS5jbHNPcGVuLCBzdGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50ID0gZWwuX3dyYXBwZXIgPyBlbC5fd3JhcHBlci5maXJzdEVsZW1lbnRDaGlsZCA6ICQodGhpcyQxLmNvbnRlbnQsIGVsKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbC5fd3JhcHBlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsLl93cmFwcGVyID0gd3JhcEFsbChjb250ZW50LCAnPGRpdj4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyKGVsLl93cmFwcGVyLCAnaGlkZGVuJywgc3RhdGUgPyAnJyA6IG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuX3RvZ2dsZUltbWVkaWF0ZShjb250ZW50LCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS50b2dnbGVFbGVtZW50KGVsLl93cmFwcGVyLCBzdGF0ZSwgYW5pbWF0ZSQkMSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0NsYXNzKGVsLCB0aGlzJDEuY2xzT3BlbikgPT09IHN0YXRlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLl90b2dnbGVJbW1lZGlhdGUoY29udGVudCwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWwuX3dyYXBwZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXAoY29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBBbGVydCA9IHtcblxuICAgICAgICBhdHRyczogdHJ1ZSxcblxuICAgICAgICBtaXhpbnM6IFtDbGFzcywgVG9nZ2xhYmxlXSxcblxuICAgICAgICBhcmdzOiAnYW5pbWF0aW9uJyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgY2xvc2U6IFN0cmluZ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogW3RydWVdLFxuICAgICAgICAgICAgc2VsQ2xvc2U6ICcudWstYWxlcnQtY2xvc2UnLFxuICAgICAgICAgICAgZHVyYXRpb246IDE1MCxcbiAgICAgICAgICAgIGhpZGVQcm9wczogYXNzaWduKHtvcGFjaXR5OiAwfSwgVG9nZ2xhYmxlLmRhdGEuaGlkZVByb3BzKVxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxDbG9zZTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVFbGVtZW50KHRoaXMuJGVsKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS4kZGVzdHJveSh0cnVlKTsgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIENvcmUgKFVJa2l0KSB7XG5cbiAgICAgICAgcmVhZHkoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICB2YXIgc2Nyb2xsID0gMDtcbiAgICAgICAgICAgIHZhciBzdGFydGVkID0gMDtcblxuICAgICAgICAgICAgb24od2luZG93LCAnbG9hZCByZXNpemUnLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gVUlraXQudXBkYXRlKG51bGwsIGUpOyB9KTtcbiAgICAgICAgICAgIG9uKHdpbmRvdywgJ3Njcm9sbCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgZS5kaXIgPSBzY3JvbGwgPD0gd2luZG93LnBhZ2VZT2Zmc2V0ID8gJ2Rvd24nIDogJ3VwJztcbiAgICAgICAgICAgICAgICBlLnBhZ2VZT2Zmc2V0ID0gc2Nyb2xsID0gd2luZG93LnBhZ2VZT2Zmc2V0O1xuICAgICAgICAgICAgICAgIFVJa2l0LnVwZGF0ZShudWxsLCBlKTtcbiAgICAgICAgICAgIH0sIHtjYXB0dXJlOiB0cnVlLCBwYXNzaXZlOiBmYWxzZX0pO1xuXG4gICAgICAgICAgICBvbihkb2N1bWVudCwgJ2FuaW1hdGlvbnN0YXJ0JywgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgaWYgKChjc3ModGFyZ2V0LCAnYW5pbWF0aW9uTmFtZScpIHx8ICcnKS5tYXRjaCgvXnVrLS4qKGxlZnR8cmlnaHQpLykpIHtcblxuICAgICAgICAgICAgICAgICAgICBzdGFydGVkKys7XG4gICAgICAgICAgICAgICAgICAgIGNzcyhkb2N1bWVudC5ib2R5LCAnb3ZlcmZsb3dYJywgJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghLS1zdGFydGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzKGRvY3VtZW50LmJvZHksICdvdmVyZmxvd1gnLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHRvTXMoY3NzKHRhcmdldCwgJ2FuaW1hdGlvbkR1cmF0aW9uJykpICsgMTAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCB0cnVlKTtcblxuICAgICAgICAgICAgaWYgKCFoYXNUb3VjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGNscyA9ICd1ay1ob3Zlcic7XG5cbiAgICAgICAgICAgIG9uKGRvY3VtZW50LCAndGFwJywgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCQoKFwiLlwiICsgY2xzKSkuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuICF3aXRoaW4odGFyZ2V0LCBlbCkgJiYgcmVtb3ZlQ2xhc3MoZWwsIGNscyk7IH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFVJa2l0LCAnaG92ZXJTZWxlY3RvcicsIHtcblxuICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgb24oZG9jdW1lbnQsICd0YXAnLCBzZWxlY3RvciwgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSByZWYuY3VycmVudDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkZENsYXNzKGN1cnJlbnQsIGNscyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIFVJa2l0LmhvdmVyU2VsZWN0b3IgPSAnLnVrLWFuaW1hdGlvbi10b2dnbGUsIC51ay10cmFuc2l0aW9uLXRvZ2dsZSwgW3VrLWhvdmVyXSc7XG5cbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICB2YXIgVmlkZW8gPSB7XG5cbiAgICAgICAgYXJnczogJ2F1dG9wbGF5JyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgYXV0b211dGU6IEJvb2xlYW4sXG4gICAgICAgICAgICBhdXRvcGxheTogQm9vbGVhbixcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBhdXRvbXV0ZTogZmFsc2UsXG4gICAgICAgICAgICBhdXRvcGxheTogdHJ1ZVxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGluVmlldzogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGF1dG9wbGF5ID0gcmVmLmF1dG9wbGF5O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGF1dG9wbGF5ID09PSAnaW52aWV3JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmluVmlldyAmJiAhaGFzQXR0cih0aGlzLiRlbCwgJ3ByZWxvYWQnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVsLnByZWxvYWQgPSAnbm9uZSc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICByZWFkeTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIHRoaXMucGxheWVyID0gbmV3IFBsYXllcih0aGlzLiRlbCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmF1dG9tdXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wbGF5ZXIubXV0ZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKF8sIHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IHJlZi50eXBlO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLnBsYXllciB8fCAodHlwZSA9PT0gJ3Njcm9sbCcgfHwgdHlwZSA9PT0gJ3Jlc2l6ZScpICYmICF0aGlzLmluVmlld1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogaXNWaXNpYmxlKHRoaXMuJGVsKSAmJiBjc3ModGhpcy4kZWwsICd2aXNpYmlsaXR5JykgIT09ICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluVmlldzogdGhpcy5pblZpZXcgJiYgaXNJblZpZXcodGhpcy4kZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB2aXNpYmxlID0gcmVmLnZpc2libGU7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpblZpZXcgPSByZWYuaW5WaWV3O1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF2aXNpYmxlIHx8IHRoaXMuaW5WaWV3ICYmICFpblZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGxheWVyLnBhdXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hdXRvcGxheSA9PT0gdHJ1ZSB8fCB0aGlzLmluVmlldyAmJiBpblZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGxheWVyLnBsYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZScsICdzY3JvbGwnXVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIHZhciBDb3ZlciA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzcywgVmlkZW9dLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICB3aWR0aDogTnVtYmVyLFxuICAgICAgICAgICAgaGVpZ2h0OiBOdW1iZXJcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBhdXRvbXV0ZTogdHJ1ZVxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgZWwgPSB0aGlzLiRlbDtcblxuICAgICAgICAgICAgICAgIGlmICghaXNWaXNpYmxlKGVsKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IGVsLnBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgdmFyIGhlaWdodCQkMSA9IHJlZi5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gcmVmLm9mZnNldFdpZHRoO1xuXG4gICAgICAgICAgICAgICAgY3NzKFxuICAgICAgICAgICAgICAgICAgICBjc3MoZWwsIHt3aWR0aDogJycsIGhlaWdodDogJyd9KSxcbiAgICAgICAgICAgICAgICAgICAgRGltZW5zaW9ucy5jb3ZlcihcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogdGhpcy53aWR0aCB8fCBlbC5jbGllbnRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0IHx8IGVsLmNsaWVudEhlaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGgkJDEgKyAod2lkdGgkJDEgJSAyID8gMSA6IDApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0JCQxICsgKGhlaWdodCQkMSAlIDIgPyAxIDogMClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IHtcblxuICAgICAgICAgICAgbG9hZGVkbWV0YWRhdGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFBvc2l0aW9uID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBwb3M6IFN0cmluZyxcbiAgICAgICAgICAgIG9mZnNldDogbnVsbCxcbiAgICAgICAgICAgIGZsaXA6IEJvb2xlYW4sXG4gICAgICAgICAgICBjbHNQb3M6IFN0cmluZ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHBvczogKFwiYm90dG9tLVwiICsgKCFpc1J0bCA/ICdsZWZ0JyA6ICdyaWdodCcpKSxcbiAgICAgICAgICAgIGZsaXA6IHRydWUsXG4gICAgICAgICAgICBvZmZzZXQ6IGZhbHNlLFxuICAgICAgICAgICAgY2xzUG9zOiAnJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIHBvczogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHBvcyA9IHJlZi5wb3M7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKHBvcyArICghaW5jbHVkZXMocG9zLCAnLScpID8gJy1jZW50ZXInIDogJycpKS5zcGxpdCgnLScpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZGlyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wb3NbMF07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBhbGlnbjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucG9zWzFdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBwb3NpdGlvbkF0OiBmdW5jdGlvbihlbGVtZW50LCB0YXJnZXQsIGJvdW5kYXJ5KSB7XG5cbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzc2VzKGVsZW1lbnQsICgodGhpcy5jbHNQb3MpICsgXCItKHRvcHxib3R0b218bGVmdHxyaWdodCkoLVthLXpdKyk/XCIpKTtcbiAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwge3RvcDogJycsIGxlZnQ6ICcnfSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgbm9kZTtcbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcztcbiAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0JCQxID0gcmVmLm9mZnNldDtcblxuICAgICAgICAgICAgICAgIG9mZnNldCQkMSA9IGlzTnVtZXJpYyhvZmZzZXQkJDEpXG4gICAgICAgICAgICAgICAgICAgID8gb2Zmc2V0JCQxXG4gICAgICAgICAgICAgICAgICAgIDogKG5vZGUgPSAkKG9mZnNldCQkMSkpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG9mZnNldChub2RlKVtheGlzID09PSAneCcgPyAnbGVmdCcgOiAndG9wJ10gLSBvZmZzZXQodGFyZ2V0KVtheGlzID09PSAneCcgPyAncmlnaHQnIDogJ2JvdHRvbSddXG4gICAgICAgICAgICAgICAgICAgICAgICA6IDA7XG5cbiAgICAgICAgICAgICAgICB2YXIgYXhpcyA9IHRoaXMuZ2V0QXhpcygpO1xuICAgICAgICAgICAgICAgIHZhciByZWYkMSA9IHBvc2l0aW9uQXQoXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgYXhpcyA9PT0gJ3gnID8gKChmbGlwUG9zaXRpb24odGhpcy5kaXIpKSArIFwiIFwiICsgKHRoaXMuYWxpZ24pKSA6ICgodGhpcy5hbGlnbikgKyBcIiBcIiArIChmbGlwUG9zaXRpb24odGhpcy5kaXIpKSksXG4gICAgICAgICAgICAgICAgICAgIGF4aXMgPT09ICd4JyA/ICgodGhpcy5kaXIpICsgXCIgXCIgKyAodGhpcy5hbGlnbikpIDogKCh0aGlzLmFsaWduKSArIFwiIFwiICsgKHRoaXMuZGlyKSksXG4gICAgICAgICAgICAgICAgICAgIGF4aXMgPT09ICd4JyA/IChcIlwiICsgKHRoaXMuZGlyID09PSAnbGVmdCcgPyAtb2Zmc2V0JCQxIDogb2Zmc2V0JCQxKSkgOiAoXCIgXCIgKyAodGhpcy5kaXIgPT09ICd0b3AnID8gLW9mZnNldCQkMSA6IG9mZnNldCQkMSkpLFxuICAgICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZsaXAsXG4gICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5XG4gICAgICAgICAgICAgICAgKS50YXJnZXQ7XG4gICAgICAgICAgICAgICAgdmFyIHggPSByZWYkMS54O1xuICAgICAgICAgICAgICAgIHZhciB5ID0gcmVmJDEueTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZGlyID0gYXhpcyA9PT0gJ3gnID8geCA6IHk7XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbiA9IGF4aXMgPT09ICd4JyA/IHkgOiB4O1xuXG4gICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoZWxlbWVudCwgKCh0aGlzLmNsc1BvcykgKyBcIi1cIiArICh0aGlzLmRpcikgKyBcIi1cIiArICh0aGlzLmFsaWduKSksIHRoaXMub2Zmc2V0ID09PSBmYWxzZSk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldEF4aXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRpciA9PT0gJ3RvcCcgfHwgdGhpcy5kaXIgPT09ICdib3R0b20nID8gJ3knIDogJ3gnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgYWN0aXZlO1xuXG4gICAgdmFyIERyb3AgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbUG9zaXRpb24sIFRvZ2dsYWJsZV0sXG5cbiAgICAgICAgYXJnczogJ3BvcycsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIG1vZGU6ICdsaXN0JyxcbiAgICAgICAgICAgIHRvZ2dsZTogQm9vbGVhbixcbiAgICAgICAgICAgIGJvdW5kYXJ5OiBCb29sZWFuLFxuICAgICAgICAgICAgYm91bmRhcnlBbGlnbjogQm9vbGVhbixcbiAgICAgICAgICAgIGRlbGF5U2hvdzogTnVtYmVyLFxuICAgICAgICAgICAgZGVsYXlIaWRlOiBOdW1iZXIsXG4gICAgICAgICAgICBjbHNEcm9wOiBTdHJpbmdcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBtb2RlOiBbJ2NsaWNrJywgJ2hvdmVyJ10sXG4gICAgICAgICAgICB0b2dnbGU6ICctIConLFxuICAgICAgICAgICAgYm91bmRhcnk6IHdpbmRvdyxcbiAgICAgICAgICAgIGJvdW5kYXJ5QWxpZ246IGZhbHNlLFxuICAgICAgICAgICAgZGVsYXlTaG93OiAwLFxuICAgICAgICAgICAgZGVsYXlIaWRlOiA4MDAsXG4gICAgICAgICAgICBjbHNEcm9wOiBmYWxzZSxcbiAgICAgICAgICAgIGhvdmVySWRsZTogMjAwLFxuICAgICAgICAgICAgYW5pbWF0aW9uOiBbJ3VrLWFuaW1hdGlvbi1mYWRlJ10sXG4gICAgICAgICAgICBjbHM6ICd1ay1vcGVuJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGJvdW5kYXJ5OiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBib3VuZGFyeSA9IHJlZi5ib3VuZGFyeTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBxdWVyeShib3VuZGFyeSwgJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNsc0Ryb3A6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBjbHNEcm9wID0gcmVmLmNsc0Ryb3A7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY2xzRHJvcCB8fCAoXCJ1ay1cIiArICh0aGlzLiRvcHRpb25zLm5hbWUpKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNsc1BvczogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xzRHJvcDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGluaXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy50cmFja2VyID0gbmV3IE1vdXNlVHJhY2tlcigpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0Ryb3ApO1xuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kcHJvcHM7XG4gICAgICAgICAgICB2YXIgdG9nZ2xlID0gcmVmLnRvZ2dsZTtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlID0gdG9nZ2xlICYmIHRoaXMuJGNyZWF0ZSgndG9nZ2xlJywgcXVlcnkodG9nZ2xlLCB0aGlzLiRlbCksIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHRoaXMuJGVsLFxuICAgICAgICAgICAgICAgIG1vZGU6IHRoaXMubW9kZVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlQXJpYSh0aGlzLiRlbCk7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFwiLlwiICsgKHRoaXMuY2xzRHJvcCkgKyBcIi1jbG9zZVwiKTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2FbaHJlZl49XCIjXCJdJztcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChlLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBpZCA9IGUudGFyZ2V0Lmhhc2g7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpZCB8fCAhd2l0aGluKGlkLCB0aGlzLiRlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVzY3JvbGwnLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAndG9nZ2xlJyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlLCB0b2dnbGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNUb2dnbGVkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3codG9nZ2xlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6IHBvaW50ZXJFbnRlcixcblxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmNsdWRlcyh0aGlzLm1vZGUsICdob3ZlcicpO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVG91Y2goZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChhY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIGFjdGl2ZSAhPT0gdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgJiYgYWN0aXZlLnRvZ2dsZVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgaW5jbHVkZXMoYWN0aXZlLnRvZ2dsZS5tb2RlLCAnaG92ZXInKVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgIXdpdGhpbihlLnRhcmdldCwgYWN0aXZlLnRvZ2dsZS4kZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiAhcG9pbnRJblJlY3Qoe3g6IGUucGFnZVgsIHk6IGUucGFnZVl9LCBvZmZzZXQoYWN0aXZlLiRlbCkpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlLmhpZGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3codGhpcy50b2dnbGUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ3RvZ2dsZXNob3cnLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSwgdG9nZ2xlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvZ2dsZSAmJiAhaW5jbHVkZXModG9nZ2xlLnRhcmdldCwgdGhpcy4kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyh0b2dnbGUgfHwgdGhpcy50b2dnbGUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogKFwidG9nZ2xlaGlkZSBcIiArIHBvaW50ZXJMZWF2ZSksXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlLCB0b2dnbGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNUb3VjaChlKSB8fCB0b2dnbGUgJiYgIWluY2x1ZGVzKHRvZ2dsZS50YXJnZXQsIHRoaXMuJGVsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRvZ2dsZSAmJiBpbmNsdWRlcyh0aGlzLnRvZ2dsZS5tb2RlLCAnaG92ZXInKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVzaG93JyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVycygpO1xuICAgICAgICAgICAgICAgICAgICBBbmltYXRpb24uY2FuY2VsKHRoaXMuJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ3Nob3cnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYWNrZXIuaW5pdCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50b2dnbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMudG9nZ2xlLiRlbCwgdGhpcy5jbHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cih0aGlzLnRvZ2dsZS4kZWwsICdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWdpc3RlckV2ZW50KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnYmVmb3JlaGlkZScsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lcnMoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdoaWRlJyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLiRlbCAhPT0gdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUgPSBhY3RpdmUgPT09IG51bGwgJiYgd2l0aGluKHRhcmdldCwgdGhpcy4kZWwpICYmIHRoaXMuaXNUb2dnbGVkKCkgPyB0aGlzIDogYWN0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlID0gdGhpcy5pc0FjdGl2ZSgpID8gbnVsbCA6IGFjdGl2ZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50b2dnbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMudG9nZ2xlLiRlbCwgdGhpcy5jbHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cih0aGlzLnRvZ2dsZS4kZWwsICdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZS4kZWwuYmx1cigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgJCQoJ2EsIGJ1dHRvbicsIHRoaXMudG9nZ2xlLiRlbCkuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGVsLmJsdXIoKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYWNrZXIuY2FuY2VsKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNUb2dnbGVkKCkgJiYgIUFuaW1hdGlvbi5pblByb2dyZXNzKHRoaXMuJGVsKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsncmVzaXplJ11cblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24odG9nZ2xlLCBkZWxheSkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGlmICggZGVsYXkgPT09IHZvaWQgMCApIGRlbGF5ID0gdHJ1ZTtcblxuXG4gICAgICAgICAgICAgICAgdmFyIHNob3cgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAhdGhpcyQxLmlzVG9nZ2xlZCgpICYmIHRoaXMkMS50b2dnbGVFbGVtZW50KHRoaXMkMS4kZWwsIHRydWUpOyB9O1xuICAgICAgICAgICAgICAgIHZhciB0cnlTaG93ID0gZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS50b2dnbGUgPSB0b2dnbGUgfHwgdGhpcyQxLnRvZ2dsZTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzJDEuY2xlYXJUaW1lcnMoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkZWxheSAmJiBhY3RpdmUgJiYgYWN0aXZlICE9PSB0aGlzJDEgJiYgYWN0aXZlLmlzRGVsYXlpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5zaG93VGltZXIgPSBzZXRUaW1lb3V0KHRoaXMkMS5zaG93LCAxMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcyQxLmlzUGFyZW50T2YoYWN0aXZlKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlLmhpZGVUaW1lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZS5oaWRlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aXZlICYmICF0aGlzJDEuaXNDaGlsZE9mKGFjdGl2ZSkgJiYgIXRoaXMkMS5pc1BhcmVudE9mKGFjdGl2ZSkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHByZXY7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoYWN0aXZlICYmIGFjdGl2ZSAhPT0gcHJldiAmJiAhdGhpcyQxLmlzQ2hpbGRPZihhY3RpdmUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldiA9IGFjdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWxheSAmJiB0aGlzJDEuZGVsYXlTaG93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuc2hvd1RpbWVyID0gc2V0VGltZW91dChzaG93LCB0aGlzJDEuZGVsYXlTaG93KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZSA9IHRoaXMkMTtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKHRvZ2dsZSAmJiB0aGlzLnRvZ2dsZSAmJiB0b2dnbGUuJGVsICE9PSB0aGlzLnRvZ2dsZS4kZWwpIHtcblxuICAgICAgICAgICAgICAgICAgICBvbmNlKHRoaXMuJGVsLCAnaGlkZScsIHRyeVNob3cpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5U2hvdygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhpZGU6IGZ1bmN0aW9uKGRlbGF5KSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgaWYgKCBkZWxheSA9PT0gdm9pZCAwICkgZGVsYXkgPSB0cnVlO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgaGlkZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS50b2dnbGVOb3codGhpcyQxLiRlbCwgZmFsc2UpOyB9O1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVycygpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5pc0RlbGF5aW5nID0gdGhpcy50cmFja2VyLm1vdmVzVG8odGhpcy4kZWwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRlbGF5ICYmIHRoaXMuaXNEZWxheWluZykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVUaW1lciA9IHNldFRpbWVvdXQodGhpcy5oaWRlLCB0aGlzLmhvdmVySWRsZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkZWxheSAmJiB0aGlzLmRlbGF5SGlkZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVUaW1lciA9IHNldFRpbWVvdXQoaGlkZSwgdGhpcy5kZWxheUhpZGUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBjbGVhclRpbWVyczogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2hvd1RpbWVyKTtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5oaWRlVGltZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1RpbWVyID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGVUaW1lciA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0RlbGF5aW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpc0FjdGl2ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjdGl2ZSA9PT0gdGhpcztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGlzQ2hpbGRPZjogZnVuY3Rpb24oZHJvcCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkcm9wICYmIGRyb3AgIT09IHRoaXMgJiYgd2l0aGluKHRoaXMuJGVsLCBkcm9wLiRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpc1BhcmVudE9mOiBmdW5jdGlvbihkcm9wKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRyb3AgJiYgZHJvcCAhPT0gdGhpcyAmJiB3aXRoaW4oZHJvcC4kZWwsIHRoaXMuJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBvc2l0aW9uOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzZXModGhpcy4kZWwsICgodGhpcy5jbHNEcm9wKSArIFwiLShzdGFja3xib3VuZGFyeSlcIikpO1xuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwge3RvcDogJycsIGxlZnQ6ICcnLCBkaXNwbGF5OiAnYmxvY2snfSk7XG4gICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy4kZWwsICgodGhpcy5jbHNEcm9wKSArIFwiLWJvdW5kYXJ5XCIpLCB0aGlzLmJvdW5kYXJ5QWxpZ24pO1xuXG4gICAgICAgICAgICAgICAgdmFyIGJvdW5kYXJ5ID0gb2Zmc2V0KHRoaXMuYm91bmRhcnkpO1xuICAgICAgICAgICAgICAgIHZhciBhbGlnblRvID0gdGhpcy5ib3VuZGFyeUFsaWduID8gYm91bmRhcnkgOiBvZmZzZXQodGhpcy50b2dnbGUuJGVsKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFsaWduID09PSAnanVzdGlmeScpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHByb3AgPSB0aGlzLmdldEF4aXMoKSA9PT0gJ3knID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHByb3AsIGFsaWduVG9bcHJvcF0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy4kZWwub2Zmc2V0V2lkdGggPiBNYXRoLm1heChib3VuZGFyeS5yaWdodCAtIGFsaWduVG8ubGVmdCwgYWxpZ25Uby5yaWdodCAtIGJvdW5kYXJ5LmxlZnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCAoKHRoaXMuY2xzRHJvcCkgKyBcIi1zdGFja1wiKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkF0KHRoaXMuJGVsLCB0aGlzLmJvdW5kYXJ5QWxpZ24gPyB0aGlzLmJvdW5kYXJ5IDogdGhpcy50b2dnbGUuJGVsLCB0aGlzLmJvdW5kYXJ5KTtcblxuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ2Rpc3BsYXknLCAnJyk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIHJlZ2lzdGVyZWQ7XG5cbiAgICBmdW5jdGlvbiByZWdpc3RlckV2ZW50KCkge1xuXG4gICAgICAgIGlmIChyZWdpc3RlcmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZWdpc3RlcmVkID0gdHJ1ZTtcbiAgICAgICAgb24oZG9jdW1lbnQsICdjbGljaycsIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuICAgICAgICAgICAgdmFyIGRlZmF1bHRQcmV2ZW50ZWQgPSByZWYuZGVmYXVsdFByZXZlbnRlZDtcblxuICAgICAgICAgICAgdmFyIHByZXY7XG5cbiAgICAgICAgICAgIGlmIChkZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB3aGlsZSAoYWN0aXZlICYmIGFjdGl2ZSAhPT0gcHJldiAmJiAhd2l0aGluKHRhcmdldCwgYWN0aXZlLiRlbCkgJiYgIShhY3RpdmUudG9nZ2xlICYmIHdpdGhpbih0YXJnZXQsIGFjdGl2ZS50b2dnbGUuJGVsKSkpIHtcbiAgICAgICAgICAgICAgICBwcmV2ID0gYWN0aXZlO1xuICAgICAgICAgICAgICAgIGFjdGl2ZS5oaWRlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIERyb3Bkb3duID0ge1xuXG4gICAgICAgIGV4dGVuZHM6IERyb3BcblxuICAgIH07XG5cbiAgICB2YXIgRm9ybUN1c3RvbSA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzc10sXG5cbiAgICAgICAgYXJnczogJ3RhcmdldCcsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHRhcmdldDogQm9vbGVhblxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHRhcmdldDogZmFsc2VcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBpbnB1dDogZnVuY3Rpb24oXywgJGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICQoc2VsSW5wdXQsICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzdGF0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXQubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdGFyZ2V0OiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldCAmJiAodGFyZ2V0ID09PSB0cnVlXG4gICAgICAgICAgICAgICAgICAgICYmIHRoaXMuaW5wdXQucGFyZW50Tm9kZSA9PT0gJGVsXG4gICAgICAgICAgICAgICAgICAgICYmIHRoaXMuaW5wdXQubmV4dEVsZW1lbnRTaWJsaW5nXG4gICAgICAgICAgICAgICAgICAgIHx8IHF1ZXJ5KHRhcmdldCwgJGVsKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcztcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuICAgICAgICAgICAgdmFyIGlucHV0ID0gcmVmLmlucHV0O1xuXG4gICAgICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIG9wdGlvbjtcbiAgICAgICAgICAgIHZhciBwcm9wID0gaXNJbnB1dCh0YXJnZXQpID8gJ3ZhbHVlJyA6ICd0ZXh0Q29udGVudCc7XG4gICAgICAgICAgICB2YXIgcHJldiA9IHRhcmdldFtwcm9wXTtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IGlucHV0LmZpbGVzICYmIGlucHV0LmZpbGVzWzBdXG4gICAgICAgICAgICAgICAgPyBpbnB1dC5maWxlc1swXS5uYW1lXG4gICAgICAgICAgICAgICAgOiBtYXRjaGVzKGlucHV0LCAnc2VsZWN0JykgJiYgKG9wdGlvbiA9ICQkKCdvcHRpb24nLCBpbnB1dCkuZmlsdGVyKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gZWwuc2VsZWN0ZWQ7IH0pWzBdKVxuICAgICAgICAgICAgICAgICAgICA/IG9wdGlvbi50ZXh0Q29udGVudFxuICAgICAgICAgICAgICAgICAgICA6IGlucHV0LnZhbHVlO1xuXG4gICAgICAgICAgICBpZiAocHJldiAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnZm9jdXNpbiBmb2N1c291dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUnLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IHNlbElucHV0LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gcmVmLnR5cGU7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjdXJyZW50ID0gcmVmLmN1cnJlbnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT09IHRoaXMuaW5wdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFwidWstXCIgKyAoaW5jbHVkZXModHlwZSwgJ2ZvY3VzJykgPyAnZm9jdXMnIDogJ2hvdmVyJykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzKFsnZm9jdXNpbicsICdtb3VzZWVudGVyJ10sIHR5cGUpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2hhbmdlJyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbWl0KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIC8vIERlcHJlY2F0ZWRcbiAgICB2YXIgR2lmID0ge1xuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICByZWFkOiBmdW5jdGlvbihkYXRhJCQxKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgaW52aWV3ID0gaXNJblZpZXcodGhpcy4kZWwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFpbnZpZXcgfHwgZGF0YSQkMS5pc0luVmlldyA9PT0gaW52aWV3KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBkYXRhJCQxLmlzSW5WaWV3ID0gaW52aWV3O1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVsLnNyYyA9IHRoaXMuJGVsLnNyYztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydzY3JvbGwnLCAnbG9hZCcsICdyZXNpemUnXVxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIE1hcmdpbiA9IHtcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgbWFyZ2luOiBTdHJpbmcsXG4gICAgICAgICAgICBmaXJzdENvbHVtbjogQm9vbGVhblxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIG1hcmdpbjogJ3VrLW1hcmdpbi1zbWFsbC10b3AnLFxuICAgICAgICAgICAgZmlyc3RDb2x1bW46ICd1ay1maXJzdC1jb2x1bW4nXG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKGRhdGEkJDEpIHtcblxuICAgICAgICAgICAgICAgIHZhciBpdGVtcyA9IHRoaXMuJGVsLmNoaWxkcmVuO1xuICAgICAgICAgICAgICAgIHZhciByb3dzID0gW1tdXTtcblxuICAgICAgICAgICAgICAgIGlmICghaXRlbXMubGVuZ3RoIHx8ICFpc1Zpc2libGUodGhpcy4kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhJCQxLnJvd3MgPSByb3dzO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGRhdGEkJDEucm93cyA9IGdldFJvd3MoaXRlbXMpO1xuICAgICAgICAgICAgICAgIGRhdGEkJDEuc3RhY2tzID0gIWRhdGEkJDEucm93cy5zb21lKGZ1bmN0aW9uIChyb3cpIHsgcmV0dXJuIHJvdy5sZW5ndGggPiAxOyB9KTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHZhciByb3dzID0gcmVmLnJvd3M7XG5cblxuICAgICAgICAgICAgICAgIHJvd3MuZm9yRWFjaChmdW5jdGlvbiAocm93LCBpKSB7IHJldHVybiByb3cuZm9yRWFjaChmdW5jdGlvbiAoZWwsIGopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCB0aGlzJDEubWFyZ2luLCBpICE9PSAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCB0aGlzJDEuZmlyc3RDb2x1bW4sIGogPT09IDApO1xuICAgICAgICAgICAgICAgICAgICB9KTsgfVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldFJvd3MoaXRlbXMpIHtcbiAgICAgICAgdmFyIHJvd3MgPSBbW11dO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgdmFyIGVsID0gaXRlbXNbaV07XG4gICAgICAgICAgICB2YXIgZGltID0gZ2V0T2Zmc2V0KGVsKTtcblxuICAgICAgICAgICAgaWYgKCFkaW0uaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAodmFyIGogPSByb3dzLmxlbmd0aCAtIDE7IGogPj0gMDsgai0tKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgcm93ID0gcm93c1tqXTtcblxuICAgICAgICAgICAgICAgIGlmICghcm93WzBdKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdy5wdXNoKGVsKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGxlZnREaW0gPSBnZXRPZmZzZXQocm93WzBdKTtcblxuICAgICAgICAgICAgICAgIGlmIChkaW0udG9wID49IGxlZnREaW0uYm90dG9tIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICByb3dzLnB1c2goW2VsXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChkaW0uYm90dG9tID4gbGVmdERpbS50b3ApIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZGltLmxlZnQgPCBsZWZ0RGltLmxlZnQgJiYgIWlzUnRsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3cudW5zaGlmdChlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJvdy5wdXNoKGVsKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGogPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcm93cy51bnNoaWZ0KFtlbF0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJvd3M7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRPZmZzZXQoZWxlbWVudCkge1xuXG4gICAgICAgIHZhciBvZmZzZXRUb3AgPSBlbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgICAgdmFyIG9mZnNldExlZnQgPSBlbGVtZW50Lm9mZnNldExlZnQ7XG4gICAgICAgIHZhciBvZmZzZXRIZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wOiBvZmZzZXRUb3AsXG4gICAgICAgICAgICBsZWZ0OiBvZmZzZXRMZWZ0LFxuICAgICAgICAgICAgaGVpZ2h0OiBvZmZzZXRIZWlnaHQsXG4gICAgICAgICAgICBib3R0b206IG9mZnNldFRvcCArIG9mZnNldEhlaWdodFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciBHcmlkID0ge1xuXG4gICAgICAgIGV4dGVuZHM6IE1hcmdpbixcblxuICAgICAgICBtaXhpbnM6IFtDbGFzc10sXG5cbiAgICAgICAgYXR0cnM6IHRydWUsXG5cbiAgICAgICAgbmFtZTogJ2dyaWQnLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBtYXNvbnJ5OiBCb29sZWFuLFxuICAgICAgICAgICAgcGFyYWxsYXg6IE51bWJlclxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIG1hcmdpbjogJ3VrLWdyaWQtbWFyZ2luJyxcbiAgICAgICAgICAgIGNsc1N0YWNrOiAndWstZ3JpZC1zdGFjaycsXG4gICAgICAgICAgICBtYXNvbnJ5OiBmYWxzZSxcbiAgICAgICAgICAgIHBhcmFsbGF4OiAwXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgcGFyYWxsYXg6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBwYXJhbGxheCA9IHJlZi5wYXJhbGxheDtcblxuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLmFicyhwYXJhbGxheCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy5tYXNvbnJ5ICYmIGFkZENsYXNzKHRoaXMuJGVsLCAndWstZmxleC10b3AgdWstZmxleC13cmFwLXRvcCcpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJvd3MgPSByZWYucm93cztcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hc29ucnkgfHwgdGhpcy5wYXJhbGxheCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93cyA9IHJvd3MubWFwKGZ1bmN0aW9uIChlbGVtZW50cykgeyByZXR1cm4gc29ydEJ5KGVsZW1lbnRzLCAnb2Zmc2V0TGVmdCcpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciB0cmFuc2xhdGVzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlbEhlaWdodCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hc29ucnkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhlaWdodCQkMSA9IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZXMgPSByb3dzLnJlZHVjZShmdW5jdGlvbiAodHJhbnNsYXRlcywgcm93LCBpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVzW2ldID0gcm93Lm1hcChmdW5jdGlvbiAoXywgaikgeyByZXR1cm4gaSA9PT0gMCA/IDAgOiB0b0Zsb2F0KHRyYW5zbGF0ZXNbaSAtIDFdW2pdKSArIChoZWlnaHQkJDEgLSB0b0Zsb2F0KHJvd3NbaSAtIDFdW2pdICYmIHJvd3NbaSAtIDFdW2pdLm9mZnNldEhlaWdodCkpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQkJDEgPSByb3cucmVkdWNlKGZ1bmN0aW9uIChoZWlnaHQkJDEsIGVsKSB7IHJldHVybiBNYXRoLm1heChoZWlnaHQkJDEsIGVsLm9mZnNldEhlaWdodCk7IH0sIDApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZXM7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFtdKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZWxIZWlnaHQgPSBtYXhDb2x1bW5IZWlnaHQocm93cykgKyBnZXRNYXJnaW5Ub3AodGhpcy4kZWwsIHRoaXMubWFyZ2luKSAqIChyb3dzLmxlbmd0aCAtIDEpO1xuXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3Jvd3M6IHJvd3MsIHRyYW5zbGF0ZXM6IHRyYW5zbGF0ZXMsIGhlaWdodDogZWxIZWlnaHR9O1xuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJvd3MgPSByZWYucm93cztcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0YWNrcyA9IHJlZi5zdGFja3M7XG4gICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWYuaGVpZ2h0O1xuXG5cbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzU3RhY2ssIHN0YWNrcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAncGFkZGluZ0JvdHRvbScsIHRoaXMucGFyYWxsYXggJiYgcm93cy5zb21lKGZ1bmN0aW9uIChyb3cpIHsgcmV0dXJuIHJvdy5sZW5ndGggPiAxOyB9KSA/IHRoaXMucGFyYWxsYXggOiAnJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0JCQxICYmIGNzcyh0aGlzLiRlbCwgJ21pbkhlaWdodCcsIGhlaWdodCQkMSk7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByb3dzID0gcmVmLnJvd3M7XG4gICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWYuaGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxlZDogdGhpcy5wYXJhbGxheCAmJiByb3dzLnNvbWUoZnVuY3Rpb24gKHJvdykgeyByZXR1cm4gcm93Lmxlbmd0aCA+IDE7IH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzY3JvbGxlZE92ZXIodGhpcy4kZWwsIGhlaWdodCQkMSA/IGhlaWdodCQkMSAtIGhlaWdodCh0aGlzLiRlbCkgOiAwKSAqIHRoaXMucGFyYWxsYXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJvd3MgPSByZWYucm93cztcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNjcm9sbGVkID0gcmVmLnNjcm9sbGVkO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdHJhbnNsYXRlcyA9IHJlZi50cmFuc2xhdGVzO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbGVkID09PSBmYWxzZSAmJiAhdHJhbnNsYXRlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcm93cy5mb3JFYWNoKGZ1bmN0aW9uIChyb3csIGkpIHsgcmV0dXJuIHJvdy5mb3JFYWNoKGZ1bmN0aW9uIChlbCwgaikgeyByZXR1cm4gY3NzKGVsLCAndHJhbnNmb3JtJywgIXNjcm9sbGVkICYmICF0cmFuc2xhdGVzID8gJycgOiAoXCJ0cmFuc2xhdGVZKFwiICsgKCh0cmFuc2xhdGVzICYmIC10cmFuc2xhdGVzW2ldW2pdKSArIChzY3JvbGxlZCA/IGogJSAyID8gc2Nyb2xsZWQgOiBzY3JvbGxlZCAvIDggOiAwKSkgKyBcInB4KVwiKSk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7IH1cbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBldmVudHM6IFsnc2Nyb2xsJywgJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBnZXRNYXJnaW5Ub3Aocm9vdCwgY2xzKSB7XG5cbiAgICAgICAgdmFyIG5vZGVzID0gdG9Ob2Rlcyhyb290LmNoaWxkcmVuKTtcbiAgICAgICAgdmFyIHJlZiA9IG5vZGVzLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGhhc0NsYXNzKGVsLCBjbHMpOyB9KTtcbiAgICAgICAgdmFyIG5vZGUgPSByZWZbMF07XG5cbiAgICAgICAgcmV0dXJuIHRvRmxvYXQobm9kZVxuICAgICAgICAgICAgPyBjc3Mobm9kZSwgJ21hcmdpblRvcCcpXG4gICAgICAgICAgICA6IGNzcyhub2Rlc1swXSwgJ3BhZGRpbmdMZWZ0JykpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1heENvbHVtbkhlaWdodChyb3dzKSB7XG4gICAgICAgIHJldHVybiBNYXRoLm1heC5hcHBseShNYXRoLCByb3dzLnJlZHVjZShmdW5jdGlvbiAoc3VtLCByb3cpIHtcbiAgICAgICAgICAgIHJvdy5mb3JFYWNoKGZ1bmN0aW9uIChlbCwgaSkgeyByZXR1cm4gc3VtW2ldID0gKHN1bVtpXSB8fCAwKSArIGVsLm9mZnNldEhlaWdodDsgfSk7XG4gICAgICAgICAgICByZXR1cm4gc3VtO1xuICAgICAgICB9LCBbXSkpO1xuICAgIH1cblxuICAgIHZhciBIZWlnaHRNYXRjaCA9IHtcblxuICAgICAgICBhcmdzOiAndGFyZ2V0JyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgdGFyZ2V0OiBTdHJpbmcsXG4gICAgICAgICAgICByb3c6IEJvb2xlYW5cbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0YXJnZXQ6ICc+IConLFxuICAgICAgICAgICAgcm93OiB0cnVlXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgZWxlbWVudHM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJCQodGFyZ2V0LCAkZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBjc3ModGhpcy5lbGVtZW50cywge1xuICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICBib3hTaXppbmc6ICcnXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICByb3dzOiAhdGhpcy5yb3dcbiAgICAgICAgICAgICAgICAgICAgICAgID8gW3RoaXMubWF0Y2godGhpcy5lbGVtZW50cyldXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGdldFJvd3ModGhpcy5lbGVtZW50cykubWFwKGZ1bmN0aW9uIChlbGVtZW50cykgeyByZXR1cm4gdGhpcyQxLm1hdGNoKGVsZW1lbnRzKTsgfSlcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciByb3dzID0gcmVmLnJvd3M7XG5cblxuICAgICAgICAgICAgICAgIHJvd3MuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWYuaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbWVudHMgPSByZWYuZWxlbWVudHM7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNzcyhlbGVtZW50cywge1xuICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6IGhlaWdodCQkMSxcbiAgICAgICAgICAgICAgICAgICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCdcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgbWF0Y2g6IGZ1bmN0aW9uKGVsZW1lbnRzKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudHMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGhlaWdodHMgPSBbXTtcbiAgICAgICAgICAgICAgICB2YXIgbWF4ID0gMDtcblxuICAgICAgICAgICAgICAgIGVsZW1lbnRzXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldChlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heCA9IE1hdGgubWF4KG1heCwgaGVpZ2h0JCQxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodHMucHVzaChoZWlnaHQkJDEpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGVsZW1lbnRzID0gZWxlbWVudHMuZmlsdGVyKGZ1bmN0aW9uIChlbCwgaSkgeyByZXR1cm4gaGVpZ2h0c1tpXSA8IG1heDsgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge2hlaWdodDogbWF4LCBlbGVtZW50czogZWxlbWVudHN9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIEhlaWdodFZpZXdwb3J0ID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBleHBhbmQ6IEJvb2xlYW4sXG4gICAgICAgICAgICBvZmZzZXRUb3A6IEJvb2xlYW4sXG4gICAgICAgICAgICBvZmZzZXRCb3R0b206IEJvb2xlYW4sXG4gICAgICAgICAgICBtaW5IZWlnaHQ6IE51bWJlclxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGV4cGFuZDogZmFsc2UsXG4gICAgICAgICAgICBvZmZzZXRUb3A6IGZhbHNlLFxuICAgICAgICAgICAgb2Zmc2V0Qm90dG9tOiBmYWxzZSxcbiAgICAgICAgICAgIG1pbkhlaWdodDogMFxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICdib3hTaXppbmcnLCAnYm9yZGVyLWJveCcpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHZpZXdwb3J0ID0gaGVpZ2h0KHdpbmRvdyk7XG4gICAgICAgICAgICAgICAgdmFyIG1pbkhlaWdodCwgb2Zmc2V0VG9wID0gMDtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmV4cGFuZCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwge2hlaWdodDogJycsIG1pbkhlaWdodDogJyd9KTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgZGlmZiA9IHZpZXdwb3J0IC0gb2Zmc2V0SGVpZ2h0KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGRpZmYgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQgPSBvZmZzZXRIZWlnaHQodGhpcy4kZWwpICsgZGlmZjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gb2Zmc2V0KHRoaXMuJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRvcCA9IHJlZi50b3A7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvcCA8IHZpZXdwb3J0IC8gMiAmJiB0aGlzLm9mZnNldFRvcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0VG9wICs9IHRvcDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9mZnNldEJvdHRvbSA9PT0gdHJ1ZSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRUb3AgKz0gb2Zmc2V0SGVpZ2h0KHRoaXMuJGVsLm5leHRFbGVtZW50U2libGluZyk7XG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc051bWVyaWModGhpcy5vZmZzZXRCb3R0b20pKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcCArPSAodmlld3BvcnQgLyAxMDApICogdGhpcy5vZmZzZXRCb3R0b207XG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm9mZnNldEJvdHRvbSAmJiBlbmRzV2l0aCh0aGlzLm9mZnNldEJvdHRvbSwgJ3B4JykpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0VG9wICs9IHRvRmxvYXQodGhpcy5vZmZzZXRCb3R0b20pO1xuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNTdHJpbmcodGhpcy5vZmZzZXRCb3R0b20pKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcCArPSBvZmZzZXRIZWlnaHQocXVlcnkodGhpcy5vZmZzZXRCb3R0b20sIHRoaXMuJGVsKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIG9uIG1vYmlsZSBkZXZpY2VzIChpT1MgYW5kIEFuZHJvaWQpIHdpbmRvdy5pbm5lckhlaWdodCAhPT0gMTAwdmhcbiAgICAgICAgICAgICAgICAgICAgbWluSGVpZ2h0ID0gb2Zmc2V0VG9wID8gKFwiY2FsYygxMDB2aCAtIFwiICsgb2Zmc2V0VG9wICsgXCJweClcIikgOiAnMTAwdmgnO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFtaW5IZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwge2hlaWdodDogJycsIG1pbkhlaWdodDogbWluSGVpZ2h0fSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSB0aGlzLiRlbC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWluSGVpZ2h0ICYmIHRoaXMubWluSGVpZ2h0ID4gZWxIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAnbWluSGVpZ2h0JywgdGhpcy5taW5IZWlnaHQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIElFIDExIGZpeCAobWluLWhlaWdodCBvbiBhIGZsZXggY29udGFpbmVyIHdvbid0IGFwcGx5IHRvIGl0cyBmbGV4IGl0ZW1zKVxuICAgICAgICAgICAgICAgIGlmICh2aWV3cG9ydCAtIG9mZnNldFRvcCA+PSBlbEhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICdoZWlnaHQnLCBtaW5IZWlnaHQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gb2Zmc2V0SGVpZ2h0KGVsKSB7XG4gICAgICAgIHJldHVybiBlbCAmJiBlbC5vZmZzZXRIZWlnaHQgfHwgMDtcbiAgICB9XG5cbiAgICB2YXIgc3ZncyA9IHt9O1xuXG4gICAgdmFyIFNWRyA9IHtcblxuICAgICAgICBhdHRyczogdHJ1ZSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgaWQ6IFN0cmluZyxcbiAgICAgICAgICAgIGljb246IFN0cmluZyxcbiAgICAgICAgICAgIHNyYzogU3RyaW5nLFxuICAgICAgICAgICAgc3R5bGU6IFN0cmluZyxcbiAgICAgICAgICAgIHdpZHRoOiBOdW1iZXIsXG4gICAgICAgICAgICBoZWlnaHQ6IE51bWJlcixcbiAgICAgICAgICAgIHJhdGlvOiBOdW1iZXIsXG4gICAgICAgICAgICAnY2xhc3MnOiBTdHJpbmdcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICByYXRpbzogMSxcbiAgICAgICAgICAgIGlkOiBmYWxzZSxcbiAgICAgICAgICAgIGV4Y2x1ZGU6IFsncmF0aW8nLCAnc3JjJywgJ2ljb24nXSxcbiAgICAgICAgICAgICdjbGFzcyc6ICcnXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgdmFyIGFzc2lnbiQkMTtcblxuXG4gICAgICAgICAgICB0aGlzLmNsYXNzICs9ICcgdWstc3ZnJztcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmljb24gJiYgaW5jbHVkZXModGhpcy5zcmMsICcjJykpIHtcblxuICAgICAgICAgICAgICAgIHZhciBwYXJ0cyA9IHRoaXMuc3JjLnNwbGl0KCcjJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAoYXNzaWduJCQxID0gcGFydHMsIHRoaXMuc3JjID0gYXNzaWduJCQxWzBdLCB0aGlzLmljb24gPSBhc3NpZ24kJDFbMV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zdmcgPSB0aGlzLmdldFN2ZygpLnRoZW4oZnVuY3Rpb24gKHN2Zykge1xuXG4gICAgICAgICAgICAgICAgdmFyIGVsO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzU3RyaW5nKHN2ZykpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLmljb24gJiYgaW5jbHVkZXMoc3ZnLCAnPHN5bWJvbCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdmcgPSBwYXJzZVN5bWJvbHMoc3ZnLCB0aGlzJDEuaWNvbikgfHwgc3ZnO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZWwgPSAkKHN2Zy5zdWJzdHIoc3ZnLmluZGV4T2YoJzxzdmcnKSkpO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWwgPSBzdmcuY2xvbmVOb2RlKHRydWUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5yZWplY3QoJ1NWRyBub3QgZm91bmQuJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGRpbWVuc2lvbnMgPSBhdHRyKGVsLCAndmlld0JveCcpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRpbWVuc2lvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgZGltZW5zaW9ucyA9IGRpbWVuc2lvbnMuc3BsaXQoJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLndpZHRoID0gdGhpcyQxLiRwcm9wcy53aWR0aCB8fCBkaW1lbnNpb25zWzJdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEuaGVpZ2h0ID0gdGhpcyQxLiRwcm9wcy5oZWlnaHQgfHwgZGltZW5zaW9uc1szXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzJDEud2lkdGggKj0gdGhpcyQxLnJhdGlvO1xuICAgICAgICAgICAgICAgIHRoaXMkMS5oZWlnaHQgKj0gdGhpcyQxLnJhdGlvO1xuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiB0aGlzJDEuJG9wdGlvbnMucHJvcHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMVtwcm9wXSAmJiAhaW5jbHVkZXModGhpcyQxLmV4Y2x1ZGUsIHByb3ApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyKGVsLCBwcm9wLCB0aGlzJDFbcHJvcF0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzJDEuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQXR0cihlbCwgJ2lkJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMkMS53aWR0aCAmJiAhdGhpcyQxLmhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVBdHRyKGVsLCAnaGVpZ2h0Jyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5oZWlnaHQgJiYgIXRoaXMkMS53aWR0aCkge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVBdHRyKGVsLCAnd2lkdGgnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgcm9vdCA9IHRoaXMkMS4kZWw7XG4gICAgICAgICAgICAgICAgaWYgKGlzVm9pZEVsZW1lbnQocm9vdCkgfHwgcm9vdC50YWdOYW1lID09PSAnQ0FOVkFTJykge1xuXG4gICAgICAgICAgICAgICAgICAgIGF0dHIocm9vdCwge2hpZGRlbjogdHJ1ZSwgaWQ6IG51bGx9KTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IHJvb3QubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV4dCAmJiBlbC5pc0VxdWFsTm9kZShuZXh0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWwgPSBuZXh0O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIocm9vdCwgZWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBsYXN0ID0gcm9vdC5sYXN0RWxlbWVudENoaWxkO1xuICAgICAgICAgICAgICAgICAgICBpZiAobGFzdCAmJiBlbC5pc0VxdWFsTm9kZShsYXN0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWwgPSBsYXN0O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHJvb3QsIGVsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcyQxLnN2Z0VsID0gZWw7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZWw7XG5cbiAgICAgICAgICAgIH0sIG5vb3ApO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIGlmIChpc1ZvaWRFbGVtZW50KHRoaXMuJGVsKSkge1xuICAgICAgICAgICAgICAgIGF0dHIodGhpcy4kZWwsIHtoaWRkZW46IG51bGwsIGlkOiB0aGlzLmlkIHx8IG51bGx9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuc3ZnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdmcudGhlbihmdW5jdGlvbiAoc3ZnKSB7IHJldHVybiAoIXRoaXMkMS5fY29ubmVjdGVkIHx8IHN2ZyAhPT0gdGhpcyQxLnN2Z0VsKSAmJiByZW1vdmUoc3ZnKTsgfSwgbm9vcCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc3ZnID0gdGhpcy5zdmdFbCA9IG51bGw7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIGdldFN2ZzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zcmMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5yZWplY3QoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc3Znc1t0aGlzLnNyY10pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN2Z3NbdGhpcy5zcmNdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHN2Z3NbdGhpcy5zcmNdID0gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0c1dpdGgodGhpcyQxLnNyYywgJ2RhdGE6JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZGVjb2RlVVJJQ29tcG9uZW50KHRoaXMkMS5zcmMuc3BsaXQoJywnKVsxXSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBhamF4KHRoaXMkMS5zcmMpLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHhocikgeyByZXR1cm4gcmVzb2x2ZSh4aHIucmVzcG9uc2UpOyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlamVjdCgnU1ZHIG5vdCBmb3VuZC4nKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBzdmdzW3RoaXMuc3JjXTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgc3ltYm9sUmUgPSAvPHN5bWJvbCguKj9pZD0oWydcIl0pKC4qPylcXDJbXl0qPzxcXC8pc3ltYm9sPi9nO1xuICAgIHZhciBzeW1ib2xzID0ge307XG5cbiAgICBmdW5jdGlvbiBwYXJzZVN5bWJvbHMoc3ZnLCBpY29uKSB7XG5cbiAgICAgICAgaWYgKCFzeW1ib2xzW3N2Z10pIHtcblxuICAgICAgICAgICAgc3ltYm9sc1tzdmddID0ge307XG5cbiAgICAgICAgICAgIHZhciBtYXRjaDtcbiAgICAgICAgICAgIHdoaWxlICgobWF0Y2ggPSBzeW1ib2xSZS5leGVjKHN2ZykpKSB7XG4gICAgICAgICAgICAgICAgc3ltYm9sc1tzdmddW21hdGNoWzNdXSA9IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiXCIgKyAobWF0Y2hbMV0pICsgXCJzdmc+XCI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN5bWJvbFJlLmxhc3RJbmRleCA9IDA7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzeW1ib2xzW3N2Z11baWNvbl07XG4gICAgfVxuXG4gICAgdmFyIGNsb3NlSWNvbiA9IFwiPHN2ZyB3aWR0aD1cXFwiMTRcXFwiIGhlaWdodD1cXFwiMTRcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNCAxNFxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4xXFxcIiB4MT1cXFwiMVxcXCIgeTE9XFxcIjFcXFwiIHgyPVxcXCIxM1xcXCIgeTI9XFxcIjEzXFxcIi8+PGxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuMVxcXCIgeDE9XFxcIjEzXFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjFcXFwiIHkyPVxcXCIxM1xcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIGNsb3NlTGFyZ2UgPSBcIjxzdmcgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjIwXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuNFxcXCIgeDE9XFxcIjFcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiMTlcXFwiIHkyPVxcXCIxOVxcXCIvPjxsaW5lIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjRcXFwiIHgxPVxcXCIxOVxcXCIgeTE9XFxcIjFcXFwiIHgyPVxcXCIxXFxcIiB5Mj1cXFwiMTlcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBtYXJrZXIgPSBcIjxzdmcgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjIwXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHJlY3QgeD1cXFwiOVxcXCIgeT1cXFwiNFxcXCIgd2lkdGg9XFxcIjFcXFwiIGhlaWdodD1cXFwiMTFcXFwiLz48cmVjdCB4PVxcXCI0XFxcIiB5PVxcXCI5XFxcIiB3aWR0aD1cXFwiMTFcXFwiIGhlaWdodD1cXFwiMVxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIG5hdmJhclRvZ2dsZUljb24gPSBcIjxzdmcgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjIwXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHJlY3QgeT1cXFwiOVxcXCIgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjJcXFwiLz48cmVjdCB5PVxcXCIzXFxcIiB3aWR0aD1cXFwiMjBcXFwiIGhlaWdodD1cXFwiMlxcXCIvPjxyZWN0IHk9XFxcIjE1XFxcIiB3aWR0aD1cXFwiMjBcXFwiIGhlaWdodD1cXFwiMlxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIG92ZXJsYXlJY29uID0gXCI8c3ZnIHdpZHRoPVxcXCI0MFxcXCIgaGVpZ2h0PVxcXCI0MFxcXCIgdmlld0JveD1cXFwiMCAwIDQwIDQwXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxyZWN0IHg9XFxcIjE5XFxcIiB5PVxcXCIwXFxcIiB3aWR0aD1cXFwiMVxcXCIgaGVpZ2h0PVxcXCI0MFxcXCIvPjxyZWN0IHg9XFxcIjBcXFwiIHk9XFxcIjE5XFxcIiB3aWR0aD1cXFwiNDBcXFwiIGhlaWdodD1cXFwiMVxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHBhZ2luYXRpb25OZXh0ID0gXCI8c3ZnIHdpZHRoPVxcXCI3XFxcIiBoZWlnaHQ9XFxcIjEyXFxcIiB2aWV3Qm94PVxcXCIwIDAgNyAxMlxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cG9seWxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuMlxcXCIgcG9pbnRzPVxcXCIxIDEgNiA2IDEgMTFcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBwYWdpbmF0aW9uUHJldmlvdXMgPSBcIjxzdmcgd2lkdGg9XFxcIjdcXFwiIGhlaWdodD1cXFwiMTJcXFwiIHZpZXdCb3g9XFxcIjAgMCA3IDEyXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwb2x5bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4yXFxcIiBwb2ludHM9XFxcIjYgMSAxIDYgNiAxMVxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHNlYXJjaEljb24gPSBcIjxzdmcgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjIwXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGNpcmNsZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4xXFxcIiBjeD1cXFwiOVxcXCIgY3k9XFxcIjlcXFwiIHI9XFxcIjdcXFwiLz48cGF0aCBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4xXFxcIiBkPVxcXCJNMTQsMTQgTDE4LDE4IEwxNCwxNCBaXFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgc2VhcmNoTGFyZ2UgPSBcIjxzdmcgd2lkdGg9XFxcIjQwXFxcIiBoZWlnaHQ9XFxcIjQwXFxcIiB2aWV3Qm94PVxcXCIwIDAgNDAgNDBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGNpcmNsZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS44XFxcIiBjeD1cXFwiMTcuNVxcXCIgY3k9XFxcIjE3LjVcXFwiIHI9XFxcIjE2LjVcXFwiLz48bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS44XFxcIiB4MT1cXFwiMzhcXFwiIHkxPVxcXCIzOVxcXCIgeDI9XFxcIjI5XFxcIiB5Mj1cXFwiMzBcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBzZWFyY2hOYXZiYXIgPSBcIjxzdmcgd2lkdGg9XFxcIjI0XFxcIiBoZWlnaHQ9XFxcIjI0XFxcIiB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGNpcmNsZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4xXFxcIiBjeD1cXFwiMTAuNVxcXCIgY3k9XFxcIjEwLjVcXFwiIHI9XFxcIjkuNVxcXCIvPjxsaW5lIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjFcXFwiIHgxPVxcXCIyM1xcXCIgeTE9XFxcIjIzXFxcIiB4Mj1cXFwiMTdcXFwiIHkyPVxcXCIxN1xcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHNsaWRlbmF2TmV4dCA9IFwiPHN2ZyB3aWR0aD1cXFwiMTRweFxcXCIgaGVpZ2h0PVxcXCIyNHB4XFxcIiB2aWV3Qm94PVxcXCIwIDAgMTQgMjRcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBvbHlsaW5lIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjRcXFwiIHBvaW50cz1cXFwiMS4yMjUsMjMgMTIuNzc1LDEyIDEuMjI1LDEgXFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgc2xpZGVuYXZOZXh0TGFyZ2UgPSBcIjxzdmcgd2lkdGg9XFxcIjI1cHhcXFwiIGhlaWdodD1cXFwiNDBweFxcXCIgdmlld0JveD1cXFwiMCAwIDI1IDQwXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwb2x5bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMlxcXCIgcG9pbnRzPVxcXCI0LjAwMiwzOC41NDcgMjIuNTI3LDIwLjAyNCA0LDEuNSBcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBzbGlkZW5hdlByZXZpb3VzID0gXCI8c3ZnIHdpZHRoPVxcXCIxNHB4XFxcIiBoZWlnaHQ9XFxcIjI0cHhcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNCAyNFxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cG9seWxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuNFxcXCIgcG9pbnRzPVxcXCIxMi43NzUsMSAxLjIyNSwxMiAxMi43NzUsMjMgXFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgc2xpZGVuYXZQcmV2aW91c0xhcmdlID0gXCI8c3ZnIHdpZHRoPVxcXCIyNXB4XFxcIiBoZWlnaHQ9XFxcIjQwcHhcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNSA0MFxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cG9seWxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjJcXFwiIHBvaW50cz1cXFwiMjAuNTI3LDEuNSAyLDIwLjAyNCAyMC41MjUsMzguNTQ3IFxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHNwaW5uZXIgPSBcIjxzdmcgd2lkdGg9XFxcIjMwXFxcIiBoZWlnaHQ9XFxcIjMwXFxcIiB2aWV3Qm94PVxcXCIwIDAgMzAgMzBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGNpcmNsZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIGN4PVxcXCIxNVxcXCIgY3k9XFxcIjE1XFxcIiByPVxcXCIxNFxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHRvdG9wID0gXCI8c3ZnIHdpZHRoPVxcXCIxOFxcXCIgaGVpZ2h0PVxcXCIxMFxcXCIgdmlld0JveD1cXFwiMCAwIDE4IDEwXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwb2x5bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4yXFxcIiBwb2ludHM9XFxcIjEgOSA5IDEgMTcgOSBcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBwYXJzZWQgPSB7fTtcbiAgICB2YXIgaWNvbnMgPSB7XG4gICAgICAgIHNwaW5uZXI6IHNwaW5uZXIsXG4gICAgICAgIHRvdG9wOiB0b3RvcCxcbiAgICAgICAgbWFya2VyOiBtYXJrZXIsXG4gICAgICAgICdjbG9zZS1pY29uJzogY2xvc2VJY29uLFxuICAgICAgICAnY2xvc2UtbGFyZ2UnOiBjbG9zZUxhcmdlLFxuICAgICAgICAnbmF2YmFyLXRvZ2dsZS1pY29uJzogbmF2YmFyVG9nZ2xlSWNvbixcbiAgICAgICAgJ292ZXJsYXktaWNvbic6IG92ZXJsYXlJY29uLFxuICAgICAgICAncGFnaW5hdGlvbi1uZXh0JzogcGFnaW5hdGlvbk5leHQsXG4gICAgICAgICdwYWdpbmF0aW9uLXByZXZpb3VzJzogcGFnaW5hdGlvblByZXZpb3VzLFxuICAgICAgICAnc2VhcmNoLWljb24nOiBzZWFyY2hJY29uLFxuICAgICAgICAnc2VhcmNoLWxhcmdlJzogc2VhcmNoTGFyZ2UsXG4gICAgICAgICdzZWFyY2gtbmF2YmFyJzogc2VhcmNoTmF2YmFyLFxuICAgICAgICAnc2xpZGVuYXYtbmV4dCc6IHNsaWRlbmF2TmV4dCxcbiAgICAgICAgJ3NsaWRlbmF2LW5leHQtbGFyZ2UnOiBzbGlkZW5hdk5leHRMYXJnZSxcbiAgICAgICAgJ3NsaWRlbmF2LXByZXZpb3VzJzogc2xpZGVuYXZQcmV2aW91cyxcbiAgICAgICAgJ3NsaWRlbmF2LXByZXZpb3VzLWxhcmdlJzogc2xpZGVuYXZQcmV2aW91c0xhcmdlXG4gICAgfTtcblxuICAgIHZhciBJY29uID0ge1xuXG4gICAgICAgIGluc3RhbGw6IGluc3RhbGwsXG5cbiAgICAgICAgYXR0cnM6IFsnaWNvbicsICdyYXRpbyddLFxuXG4gICAgICAgIG1peGluczogW0NsYXNzLCBTVkddLFxuXG4gICAgICAgIGFyZ3M6ICdpY29uJyxcblxuICAgICAgICBwcm9wczogWydpY29uJ10sXG5cbiAgICAgICAgZGF0YToge2V4Y2x1ZGU6IFsnaWQnLCAnc3R5bGUnLCAnY2xhc3MnLCAnc3JjJywgJ2ljb24nLCAncmF0aW8nXX0sXG5cbiAgICAgICAgaXNJY29uOiB0cnVlLFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgJ3VrLWljb24nKTtcbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIGdldFN2ZzogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgaWNvbiA9IGdldEljb24oYXBwbHlSdGwodGhpcy5pY29uKSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5yZWplY3QoJ0ljb24gbm90IGZvdW5kLicpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVzb2x2ZShpY29uKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIEljb25Db21wb25lbnQgPSB7XG5cbiAgICAgICAgZXh0ZW5kczogSWNvbixcblxuICAgICAgICBkYXRhOiBmdW5jdGlvbiAodm0pIHsgcmV0dXJuICh7XG4gICAgICAgICAgICBpY29uOiBoeXBoZW5hdGUodm0uY29uc3RydWN0b3Iub3B0aW9ucy5uYW1lKVxuICAgICAgICB9KTsgfVxuXG4gICAgfTtcblxuICAgIHZhciBTbGlkZW5hdiA9IHtcblxuICAgICAgICBleHRlbmRzOiBJY29uQ29tcG9uZW50LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgJ3VrLXNsaWRlbmF2Jyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgaWNvbjogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgaWNvbiA9IHJlZi5pY29uO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhc0NsYXNzKCRlbCwgJ3VrLXNsaWRlbmF2LWxhcmdlJylcbiAgICAgICAgICAgICAgICAgICAgPyAoaWNvbiArIFwiLWxhcmdlXCIpXG4gICAgICAgICAgICAgICAgICAgIDogaWNvbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFNlYXJjaCA9IHtcblxuICAgICAgICBleHRlbmRzOiBJY29uQ29tcG9uZW50LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGljb246IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGljb24gPSByZWYuaWNvbjtcblxuICAgICAgICAgICAgICAgIHJldHVybiBoYXNDbGFzcygkZWwsICd1ay1zZWFyY2gtaWNvbicpICYmIHBhcmVudHMoJGVsLCAnLnVrLXNlYXJjaC1sYXJnZScpLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/ICdzZWFyY2gtbGFyZ2UnXG4gICAgICAgICAgICAgICAgICAgIDogcGFyZW50cygkZWwsICcudWstc2VhcmNoLW5hdmJhcicpLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnc2VhcmNoLW5hdmJhcidcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaWNvbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIENsb3NlID0ge1xuXG4gICAgICAgIGV4dGVuZHM6IEljb25Db21wb25lbnQsXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgaWNvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcImNsb3NlLVwiICsgKGhhc0NsYXNzKHRoaXMuJGVsLCAndWstY2xvc2UtbGFyZ2UnKSA/ICdsYXJnZScgOiAnaWNvbicpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFNwaW5uZXIgPSB7XG5cbiAgICAgICAgZXh0ZW5kczogSWNvbkNvbXBvbmVudCxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgIHRoaXMuc3ZnLnRoZW4oZnVuY3Rpb24gKHN2ZykgeyByZXR1cm4gdGhpcyQxLnJhdGlvICE9PSAxICYmIGNzcygkKCdjaXJjbGUnLCBzdmcpLCAnc3Ryb2tlV2lkdGgnLCAxIC8gdGhpcyQxLnJhdGlvKTsgfSwgbm9vcCk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsKFVJa2l0KSB7XG4gICAgICAgIFVJa2l0Lmljb24uYWRkID0gZnVuY3Rpb24gKG5hbWUsIHN2Zykge1xuICAgICAgICAgICAgdmFyIG9iajtcblxuXG4gICAgICAgICAgICB2YXIgYWRkZWQgPSBpc1N0cmluZyhuYW1lKSA/ICgoIG9iaiA9IHt9LCBvYmpbbmFtZV0gPSBzdmcsIG9iaiApKSA6IG5hbWU7XG4gICAgICAgICAgICBlYWNoKGFkZGVkLCBmdW5jdGlvbiAoc3ZnLCBuYW1lKSB7XG4gICAgICAgICAgICAgICAgaWNvbnNbbmFtZV0gPSBzdmc7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHBhcnNlZFtuYW1lXTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoVUlraXQuX2luaXRpYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgYXBwbHkoZG9jdW1lbnQuYm9keSwgZnVuY3Rpb24gKGVsKSB7IHJldHVybiBlYWNoKFVJa2l0LmdldENvbXBvbmVudHMoZWwpLCBmdW5jdGlvbiAoY21wKSB7IHJldHVybiBjbXAuJG9wdGlvbnMuaXNJY29uICYmIGNtcC5pY29uIGluIGFkZGVkICYmIGNtcC4kcmVzZXQoKTsgfVxuICAgICAgICAgICAgICAgICAgICApOyB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRJY29uKGljb24pIHtcblxuICAgICAgICBpZiAoIWljb25zW2ljb25dKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcGFyc2VkW2ljb25dKSB7XG4gICAgICAgICAgICBwYXJzZWRbaWNvbl0gPSAkKGljb25zW2ljb25dLnRyaW0oKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFyc2VkW2ljb25dO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFwcGx5UnRsKGljb24pIHtcbiAgICAgICAgcmV0dXJuIGlzUnRsID8gc3dhcChzd2FwKGljb24sICdsZWZ0JywgJ3JpZ2h0JyksICdwcmV2aW91cycsICduZXh0JykgOiBpY29uO1xuICAgIH1cblxuICAgIHZhciBJbWcgPSB7XG5cbiAgICAgICAgYXR0cnM6IHRydWUsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGRhdGFTcmM6IFN0cmluZyxcbiAgICAgICAgICAgIGRhdGFTcmNzZXQ6IEJvb2xlYW4sXG4gICAgICAgICAgICBkYXRhU2l6ZXM6IEJvb2xlYW4sXG4gICAgICAgICAgICBzaXplczogU3RyaW5nLFxuICAgICAgICAgICAgd2lkdGg6IE51bWJlcixcbiAgICAgICAgICAgIGhlaWdodDogTnVtYmVyLFxuICAgICAgICAgICAgZGF0YVdpZHRoOiBOdW1iZXIsXG4gICAgICAgICAgICBkYXRhSGVpZ2h0OiBOdW1iZXIsXG4gICAgICAgICAgICBvZmZzZXRUb3A6IFN0cmluZyxcbiAgICAgICAgICAgIG9mZnNldExlZnQ6IFN0cmluZyxcbiAgICAgICAgICAgIHRhcmdldDogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZGF0YVNyYzogJycsXG4gICAgICAgICAgICBkYXRhU3Jjc2V0OiBmYWxzZSxcbiAgICAgICAgICAgIGRhdGFTaXplczogZmFsc2UsXG4gICAgICAgICAgICBzaXplczogZmFsc2UsXG4gICAgICAgICAgICB3aWR0aDogZmFsc2UsXG4gICAgICAgICAgICBoZWlnaHQ6IGZhbHNlLFxuICAgICAgICAgICAgb2Zmc2V0VG9wOiAnNTB2aCcsXG4gICAgICAgICAgICBvZmZzZXRMZWZ0OiAwLFxuICAgICAgICAgICAgdGFyZ2V0OiBmYWxzZVxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGNhY2hlS2V5OiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YVNyYyA9IHJlZi5kYXRhU3JjO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICgodGhpcy4kbmFtZSkgKyBcIi5cIiArIGRhdGFTcmMpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgd2lkdGg6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB3aWR0aCQkMSA9IHJlZi53aWR0aDtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YVdpZHRoID0gcmVmLmRhdGFXaWR0aDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB3aWR0aCQkMSB8fCBkYXRhV2lkdGg7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoZWlnaHQ6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWYuaGVpZ2h0O1xuICAgICAgICAgICAgICAgIHZhciBkYXRhSGVpZ2h0ID0gcmVmLmRhdGFIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gaGVpZ2h0JCQxIHx8IGRhdGFIZWlnaHQ7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzaXplczogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNpemVzID0gcmVmLnNpemVzO1xuICAgICAgICAgICAgICAgIHZhciBkYXRhU2l6ZXMgPSByZWYuZGF0YVNpemVzO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNpemVzIHx8IGRhdGFTaXplcztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGlzSW1nOiBmdW5jdGlvbihfLCAkZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNJbWcoJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRhcmdldDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW3RoaXMuJGVsXS5jb25jYXQocXVlcnlBbGwodGFyZ2V0LCB0aGlzLiRlbCkpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgb2Zmc2V0VG9wOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0VG9wID0gcmVmLm9mZnNldFRvcDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0b1B4KG9mZnNldFRvcCwgJ2hlaWdodCcpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgb2Zmc2V0TGVmdDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIG9mZnNldExlZnQgPSByZWYub2Zmc2V0TGVmdDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0b1B4KG9mZnNldExlZnQsICd3aWR0aCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgaWYgKHN0b3JhZ2VbdGhpcy5jYWNoZUtleV0pIHtcbiAgICAgICAgICAgICAgICBzZXRTcmNBdHRycyh0aGlzLiRlbCwgc3RvcmFnZVt0aGlzLmNhY2hlS2V5XSB8fCB0aGlzLmRhdGFTcmMsIHRoaXMuZGF0YVNyY3NldCwgdGhpcy5zaXplcyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNJbWcgJiYgdGhpcy53aWR0aCAmJiB0aGlzLmhlaWdodCkge1xuICAgICAgICAgICAgICAgIHNldFNyY0F0dHJzKHRoaXMuJGVsLCBnZXRQbGFjZWhvbGRlckltYWdlKHRoaXMud2lkdGgsIHRoaXMuaGVpZ2h0LCB0aGlzLnNpemVzKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGVsYXkgPSByZWYuZGVsYXk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbWFnZSA9IHJlZi5pbWFnZTtcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghZGVsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZSB8fCAhdGhpcy50YXJnZXQuc29tZShmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGlzSW5WaWV3KGVsLCB0aGlzJDEub2Zmc2V0VG9wLCB0aGlzJDEub2Zmc2V0TGVmdCwgdHJ1ZSk7IH0pKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0ltZyAmJiBpbWFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLnRoZW4oZnVuY3Rpb24gKGltZykgeyByZXR1cm4gaW1nICYmIHNldFNyY0F0dHJzKHRoaXMkMS4kZWwsIGN1cnJlbnRTcmMoaW1nKSk7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IGdldEltYWdlKHRoaXMuZGF0YVNyYywgdGhpcy5kYXRhU3Jjc2V0LCB0aGlzLnNpemVzKS50aGVuKGZ1bmN0aW9uIChpbWcpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNyY0F0dHJzKHRoaXMkMS4kZWwsIGN1cnJlbnRTcmMoaW1nKSwgaW1nLnNyY3NldCwgaW1nLnNpemVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlW3RoaXMkMS5jYWNoZUtleV0gPSBjdXJyZW50U3JjKGltZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGltZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgbm9vcClcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0YSQkMSkge1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIEdpdmUgcGxhY2Vob2xkZXIgaW1hZ2VzIHRpbWUgdG8gYXBwbHkgdGhlaXIgZGltZW5zaW9uc1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGEkJDEuZGVsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhJCQxLmRlbGF5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydzY3JvbGwnLCAnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHNldFNyY0F0dHJzKGVsLCBzcmMsIHNyY3NldCwgc2l6ZXMpIHtcblxuICAgICAgICBpZiAoaXNJbWcoZWwpKSB7XG4gICAgICAgICAgICBzcmMgJiYgKGVsLnNyYyA9IHNyYyk7XG4gICAgICAgICAgICBzcmNzZXQgJiYgKGVsLnNyY3NldCA9IHNyY3NldCk7XG4gICAgICAgICAgICBzaXplcyAmJiAoZWwuc2l6ZXMgPSBzaXplcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzcmMgJiYgY3NzKGVsLCAnYmFja2dyb3VuZEltYWdlJywgKFwidXJsKFwiICsgc3JjICsgXCIpXCIpKTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgdmFyIHVybENhY2hlID0ge307XG4gICAgdmFyIHNpemVzUmUgPSAvXFxzKiguKj8pXFxzKihcXHcrfGNhbGNcXCguKj9cXCkpXFxzKig/Oix8JCkvZztcbiAgICBmdW5jdGlvbiBnZXRQbGFjZWhvbGRlckltYWdlKHdpZHRoJCQxLCBoZWlnaHQkJDEsIHNpemVzLCBjb2xvcikge1xuICAgICAgICB2YXIgYXNzaWduJCQxO1xuXG4gICAgICAgIGlmICggY29sb3IgPT09IHZvaWQgMCApIGNvbG9yID0gJ3RyYW5zcGFyZW50JztcblxuICAgICAgICBpZiAoc2l6ZXMpIHtcbiAgICAgICAgICAgIHZhciBtYXRjaGVzJCQxO1xuXG4gICAgICAgICAgICB3aGlsZSAoKG1hdGNoZXMkJDEgPSBzaXplc1JlLmV4ZWMoc2l6ZXMpKSkge1xuICAgICAgICAgICAgICAgIGlmICghbWF0Y2hlcyQkMVsxXSB8fCB3aW5kb3cubWF0Y2hNZWRpYShtYXRjaGVzJCQxWzFdKS5tYXRjaGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoZXMkJDEgPSBldmFsdWF0ZVNpemUobWF0Y2hlcyQkMVsyXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2l6ZXNSZS5sYXN0SW5kZXggPSAwO1xuXG4gICAgICAgICAgICAoKGFzc2lnbiQkMSA9IERpbWVuc2lvbnMucmF0aW8oe3dpZHRoOiB3aWR0aCQkMSwgaGVpZ2h0OiBoZWlnaHQkJDF9LCAnd2lkdGgnLCB0b1B4KG1hdGNoZXMkJDEgfHwgJzEwMHZ3JykpLCB3aWR0aCQkMSA9IGFzc2lnbiQkMS53aWR0aCwgaGVpZ2h0JCQxID0gYXNzaWduJCQxLmhlaWdodCkpO1xuXG4gICAgICAgIH1cblxuICAgICAgICB2YXIga2V5ID0gd2lkdGgkJDEgKyBcIi5cIiArIGhlaWdodCQkMSArIFwiLlwiICsgY29sb3I7XG4gICAgICAgIGlmICh1cmxDYWNoZVtrZXldKSB7XG4gICAgICAgICAgICByZXR1cm4gdXJsQ2FjaGVba2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjYW52YXMgPSBmcmFnbWVudCgnPGNhbnZhcz4nKTtcbiAgICAgICAgY2FudmFzLndpZHRoID0gd2lkdGgkJDE7XG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQkJDE7XG5cbiAgICAgICAgdmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBjb2xvcjtcbiAgICAgICAgY29udGV4dC5maWxsUmVjdCgwLCAwLCB3aWR0aCQkMSwgaGVpZ2h0JCQxKTtcblxuICAgICAgICByZXR1cm4gdXJsQ2FjaGVba2V5XSA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpO1xuICAgIH1cblxuICAgIHZhciBzaXplUmUgPSAvXFxkKyg/Olxcdyt8JSkvZztcbiAgICB2YXIgYWRkaXRpb25SZSA9IC9bKy1dPyhcXGQrKS9nO1xuICAgIGZ1bmN0aW9uIGV2YWx1YXRlU2l6ZShzaXplKSB7XG4gICAgICAgIHJldHVybiBzdGFydHNXaXRoKHNpemUsICdjYWxjJylcbiAgICAgICAgICAgID8gc2l6ZVxuICAgICAgICAgICAgICAgIC5zdWJzdHJpbmcoNSwgc2l6ZS5sZW5ndGggLSAxKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKHNpemVSZSwgZnVuY3Rpb24gKHNpemUpIHsgcmV0dXJuIHRvUHgoc2l6ZSk7IH0pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLyAvZywgJycpXG4gICAgICAgICAgICAgICAgLm1hdGNoKGFkZGl0aW9uUmUpXG4gICAgICAgICAgICAgICAgLnJlZHVjZShmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSArICtiOyB9LCAwKVxuICAgICAgICAgICAgOiBzaXplO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvUHgodmFsdWUsIHByb3BlcnR5LCBlbGVtZW50KSB7XG4gICAgICAgIGlmICggcHJvcGVydHkgPT09IHZvaWQgMCApIHByb3BlcnR5ID0gJ3dpZHRoJztcbiAgICAgICAgaWYgKCBlbGVtZW50ID09PSB2b2lkIDAgKSBlbGVtZW50ID0gd2luZG93O1xuXG4gICAgICAgIHJldHVybiBpc051bWVyaWModmFsdWUpXG4gICAgICAgICAgICA/ICt2YWx1ZVxuICAgICAgICAgICAgOiBlbmRzV2l0aCh2YWx1ZSwgJ3Z3JylcbiAgICAgICAgICAgICAgICA/IHBlcmNlbnQoZWxlbWVudCwgJ3dpZHRoJywgdmFsdWUpXG4gICAgICAgICAgICAgICAgOiBlbmRzV2l0aCh2YWx1ZSwgJ3ZoJylcbiAgICAgICAgICAgICAgICAgICAgPyBwZXJjZW50KGVsZW1lbnQsICdoZWlnaHQnLCB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgOiBlbmRzV2l0aCh2YWx1ZSwgJyUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBwZXJjZW50KGVsZW1lbnQsIHByb3BlcnR5LCB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdG9GbG9hdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgdmFyIGRpbWVuc2lvbnMgPSB7aGVpZ2h0OiBoZWlnaHQsIHdpZHRoOiB3aWR0aH07XG4gICAgZnVuY3Rpb24gcGVyY2VudChlbGVtZW50LCBwcm9wZXJ0eSwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGRpbWVuc2lvbnNbcHJvcGVydHldKGVsZW1lbnQpICogdG9GbG9hdCh2YWx1ZSkgLyAxMDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNJbWcoZWwpIHtcbiAgICAgICAgcmV0dXJuIGVsLnRhZ05hbWUgPT09ICdJTUcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGN1cnJlbnRTcmMoZWwpIHtcbiAgICAgICAgcmV0dXJuIGVsLmN1cnJlbnRTcmMgfHwgZWwuc3JjO1xuICAgIH1cblxuICAgIHZhciBrZXkgPSAnX190ZXN0X18nO1xuICAgIHZhciBzdG9yYWdlO1xuXG4gICAgLy8gd29ya2Fyb3VuZCBmb3IgU2FmYXJpJ3MgcHJpdmF0ZSBicm93c2luZyBtb2RlIGFuZCBhY2Nlc3Npbmcgc2Vzc2lvblN0b3JhZ2UgaW4gQmxpbmtcbiAgICB0cnkge1xuICAgICAgICBzdG9yYWdlID0gd2luZG93LnNlc3Npb25TdG9yYWdlIHx8IHt9O1xuICAgICAgICBzdG9yYWdlW2tleV0gPSAxO1xuICAgICAgICBkZWxldGUgc3RvcmFnZVtrZXldO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgc3RvcmFnZSA9IHt9O1xuICAgIH1cblxuICAgIHZhciBMZWFkZXIgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3NdLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBmaWxsOiBTdHJpbmcsXG4gICAgICAgICAgICBtZWRpYTogJ21lZGlhJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGZpbGw6ICcnLFxuICAgICAgICAgICAgbWVkaWE6IGZhbHNlLFxuICAgICAgICAgICAgY2xzV3JhcHBlcjogJ3VrLWxlYWRlci1maWxsJyxcbiAgICAgICAgICAgIGNsc0hpZGU6ICd1ay1sZWFkZXItaGlkZScsXG4gICAgICAgICAgICBhdHRyRmlsbDogJ2RhdGEtZmlsbCdcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBmaWxsOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgZmlsbCA9IHJlZi5maWxsO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbGwgfHwgZ2V0Q3NzVmFyKCdsZWFkZXItZmlsbCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciBhc3NpZ24kJDE7XG5cbiAgICAgICAgICAgIChhc3NpZ24kJDEgPSB3cmFwSW5uZXIodGhpcy4kZWwsIChcIjxzcGFuIGNsYXNzPVxcXCJcIiArICh0aGlzLmNsc1dyYXBwZXIpICsgXCJcXFwiPlwiKSksIHRoaXMud3JhcHBlciA9IGFzc2lnbiQkMVswXSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHVud3JhcCh0aGlzLndyYXBwZXIuY2hpbGROb2Rlcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2hhbmdlZCA9IHJlZi5jaGFuZ2VkO1xuICAgICAgICAgICAgICAgICAgICB2YXIgd2lkdGgkJDEgPSByZWYud2lkdGg7XG5cblxuICAgICAgICAgICAgICAgICAgICB2YXIgcHJldiA9IHdpZHRoJCQxO1xuXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoJCQxID0gTWF0aC5mbG9vcih0aGlzLiRlbC5vZmZzZXRXaWR0aCAvIDIpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGgkJDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkOiBjaGFuZ2VkIHx8IHByZXYgIT09IHdpZHRoJCQxLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGlkZTogdGhpcy5tZWRpYSAmJiAhd2luZG93Lm1hdGNoTWVkaWEodGhpcy5tZWRpYSkubWF0Y2hlc1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0YSQkMSkge1xuXG4gICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHRoaXMud3JhcHBlciwgdGhpcy5jbHNIaWRlLCBkYXRhJCQxLmhpZGUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhJCQxLmNoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEkJDEuY2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cih0aGlzLndyYXBwZXIsIHRoaXMuYXR0ckZpbGwsIG5ldyBBcnJheShkYXRhJCQxLndpZHRoKS5qb2luKHRoaXMuZmlsbCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfVxuICAgICAgICBdXG5cbiAgICB9O1xuXG4gICAgdmFyIENvbnRhaW5lciA9IHtcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBCb29sZWFuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgY29udGFpbmVyOiB0cnVlXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgY29udGFpbmVyOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgY29udGFpbmVyID0gcmVmLmNvbnRhaW5lcjtcblxuICAgICAgICAgICAgICAgIHJldHVybiBjb250YWluZXIgPT09IHRydWUgJiYgdGhpcy4kY29udGFpbmVyIHx8IGNvbnRhaW5lciAmJiAkKGNvbnRhaW5lcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBhY3RpdmUkMTtcblxuICAgIHZhciBNb2RhbCA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzcywgQ29udGFpbmVyLCBUb2dnbGFibGVdLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBzZWxQYW5lbDogU3RyaW5nLFxuICAgICAgICAgICAgc2VsQ2xvc2U6IFN0cmluZyxcbiAgICAgICAgICAgIGVzY0Nsb3NlOiBCb29sZWFuLFxuICAgICAgICAgICAgYmdDbG9zZTogQm9vbGVhbixcbiAgICAgICAgICAgIHN0YWNrOiBCb29sZWFuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgY2xzOiAndWstb3BlbicsXG4gICAgICAgICAgICBlc2NDbG9zZTogdHJ1ZSxcbiAgICAgICAgICAgIGJnQ2xvc2U6IHRydWUsXG4gICAgICAgICAgICBvdmVybGF5OiB0cnVlLFxuICAgICAgICAgICAgc3RhY2s6IGZhbHNlXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgcGFuZWw6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNlbFBhbmVsID0gcmVmLnNlbFBhbmVsO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoc2VsUGFuZWwsICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2l0aW9uRWxlbWVudDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFuZWw7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2l0aW9uRHVyYXRpb246IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b01zKGNzcyh0aGlzLnRyYW5zaXRpb25FbGVtZW50LCAndHJhbnNpdGlvbkR1cmF0aW9uJykpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgYmdDbG9zZTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJnQ2xvc2UgPSByZWYuYmdDbG9zZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBiZ0Nsb3NlICYmIHRoaXMucGFuZWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsQ2xvc2U7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICd0b2dnbGUnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZS5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2JlZm9yZXNob3cnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcHJldiA9IGFjdGl2ZSQxICYmIGFjdGl2ZSQxICE9PSB0aGlzICYmIGFjdGl2ZSQxO1xuXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZSQxID0gdGhpcztcblxuICAgICAgICAgICAgICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXYgPSBwcmV2O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2LmhpZGUoKS50aGVuKHRoaXMuc2hvdyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRXZlbnRzKCk7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnYmVmb3JlaGlkZScsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlJDEgPSBhY3RpdmUkMSAmJiBhY3RpdmUkMSAhPT0gdGhpcyAmJiBhY3RpdmUkMSB8fCB0aGlzLnByZXY7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhY3RpdmUkMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVyZWdpc3RlckV2ZW50cygpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdzaG93JyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc0NsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgdGhpcy5jbHNQYWdlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxiYXJXaWR0aCA9IHdpZHRoKHdpbmRvdykgLSB3aWR0aChkb2N1bWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3MoZG9jdW1lbnQuYm9keSwgJ292ZXJmbG93WScsIHRoaXMuc2Nyb2xsYmFyV2lkdGggJiYgdGhpcy5vdmVybGF5ID8gJ3Njcm9sbCcgOiAnJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHRoaXMuY2xzUGFnZSk7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdoaWRkZW4nLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBmb3VuZDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwcmV2ID0gcmVmLnByZXY7XG5cbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHByZXYpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXYuY2xzUGFnZSA9PT0gdGhpcyQxLmNsc1BhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXYgPSBwcmV2LnByZXY7XG5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgdGhpcy5jbHNQYWdlKTtcblxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgIXRoaXMucHJldiAmJiBjc3MoZG9jdW1lbnQuYm9keSwgJ292ZXJmbG93WScsICcnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgdG9nZ2xlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc1RvZ2dsZWQoKSA/IHRoaXMuaGlkZSgpIDogdGhpcy5zaG93KCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzVG9nZ2xlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRhaW5lciAmJiB0aGlzLiRlbC5wYXJlbnROb2RlICE9PSB0aGlzLmNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICBhcHBlbmQodGhpcy5jb250YWluZXIsIHRoaXMuJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FsbENvbm5lY3RlZCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZ2dsZU5vdyh0aGlzLiRlbCwgdHJ1ZSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoaWRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc1RvZ2dsZWQoKVxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMudG9nZ2xlTm93KHRoaXMuJGVsLCBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgOiBQcm9taXNlJDEucmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0QWN0aXZlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWN0aXZlJDE7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfdG9nZ2xlSW1tZWRpYXRlOiBmdW5jdGlvbihlbCwgc2hvdykge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmV0dXJuIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuX3RvZ2dsZShlbCwgc2hvdyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEudHJhbnNpdGlvbkR1cmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jZSh0aGlzJDEudHJhbnNpdGlvbkVsZW1lbnQsICd0cmFuc2l0aW9uZW5kJywgcmVzb2x2ZSwgZmFsc2UsIGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLnRhcmdldCA9PT0gdGhpcyQxLnRyYW5zaXRpb25FbGVtZW50OyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTsgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBldmVudHM7XG5cbiAgICBmdW5jdGlvbiByZWdpc3RlckV2ZW50cygpIHtcblxuICAgICAgICBpZiAoZXZlbnRzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudHMgPSBbXG4gICAgICAgICAgICBvbihkb2N1bWVudCwgJ2NsaWNrJywgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuICAgICAgICAgICAgICAgIHZhciBkZWZhdWx0UHJldmVudGVkID0gcmVmLmRlZmF1bHRQcmV2ZW50ZWQ7XG5cbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlJDEgJiYgYWN0aXZlJDEuYmdDbG9zZSAmJiAhZGVmYXVsdFByZXZlbnRlZCAmJiAoIWFjdGl2ZSQxLm92ZXJsYXkgfHwgd2l0aGluKHRhcmdldCwgYWN0aXZlJDEuJGVsKSkgJiYgIXdpdGhpbih0YXJnZXQsIGFjdGl2ZSQxLnBhbmVsKSkge1xuICAgICAgICAgICAgICAgICAgICBhY3RpdmUkMS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBvbihkb2N1bWVudCwgJ2tleWRvd24nLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIGlmIChlLmtleUNvZGUgPT09IDI3ICYmIGFjdGl2ZSQxICYmIGFjdGl2ZSQxLmVzY0Nsb3NlKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlJDEuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVyZWdpc3RlckV2ZW50cygpIHtcbiAgICAgICAgZXZlbnRzICYmIGV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uICh1bmJpbmQpIHsgcmV0dXJuIHVuYmluZCgpOyB9KTtcbiAgICAgICAgZXZlbnRzID0gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgTW9kYWwkMSA9IHtcblxuICAgICAgICBpbnN0YWxsOiBpbnN0YWxsJDEsXG5cbiAgICAgICAgbWl4aW5zOiBbTW9kYWxdLFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNsc1BhZ2U6ICd1ay1tb2RhbC1wYWdlJyxcbiAgICAgICAgICAgIHNlbFBhbmVsOiAnLnVrLW1vZGFsLWRpYWxvZycsXG4gICAgICAgICAgICBzZWxDbG9zZTogJy51ay1tb2RhbC1jbG9zZSwgLnVrLW1vZGFsLWNsb3NlLWRlZmF1bHQsIC51ay1tb2RhbC1jbG9zZS1vdXRzaWRlLCAudWstbW9kYWwtY2xvc2UtZnVsbCdcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdzaG93JyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzQ2xhc3ModGhpcy5wYW5lbCwgJ3VrLW1hcmdpbi1hdXRvLXZlcnRpY2FsJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCAndWstZmxleCcpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAnZGlzcGxheScsICdibG9jaycpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KHRoaXMuJGVsKTsgLy8gZm9yY2UgcmVmbG93XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdoaWRkZW4nLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ2Rpc3BsYXknLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuJGVsLCAndWstZmxleCcpO1xuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsJDEgKFVJa2l0KSB7XG5cbiAgICAgICAgVUlraXQubW9kYWwuZGlhbG9nID0gZnVuY3Rpb24gKGNvbnRlbnQsIG9wdGlvbnMpIHtcblxuICAgICAgICAgICAgdmFyIGRpYWxvZyA9IFVJa2l0Lm1vZGFsKChcIiA8ZGl2IGNsYXNzPVxcXCJ1ay1tb2RhbFxcXCI+IDxkaXYgY2xhc3M9XFxcInVrLW1vZGFsLWRpYWxvZ1xcXCI+XCIgKyBjb250ZW50ICsgXCI8L2Rpdj4gPC9kaXY+IFwiKSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIGRpYWxvZy5zaG93KCk7XG5cbiAgICAgICAgICAgIG9uKGRpYWxvZy4kZWwsICdoaWRkZW4nLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRUYXJnZXQgPSByZWYuY3VycmVudFRhcmdldDtcblxuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlhbG9nLiRkZXN0cm95KHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gZGlhbG9nO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0Lm1vZGFsLmFsZXJ0ID0gZnVuY3Rpb24gKG1lc3NhZ2UsIG9wdGlvbnMpIHtcblxuICAgICAgICAgICAgb3B0aW9ucyA9IGFzc2lnbih7YmdDbG9zZTogZmFsc2UsIGVzY0Nsb3NlOiBmYWxzZSwgbGFiZWxzOiBVSWtpdC5tb2RhbC5sYWJlbHN9LCBvcHRpb25zKTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKHJlc29sdmUpIHsgcmV0dXJuIG9uKFVJa2l0Lm1vZGFsLmRpYWxvZygoXCIgPGRpdiBjbGFzcz1cXFwidWstbW9kYWwtYm9keVxcXCI+XCIgKyAoaXNTdHJpbmcobWVzc2FnZSkgPyBtZXNzYWdlIDogaHRtbChtZXNzYWdlKSkgKyBcIjwvZGl2PiA8ZGl2IGNsYXNzPVxcXCJ1ay1tb2RhbC1mb290ZXIgdWstdGV4dC1yaWdodFxcXCI+IDxidXR0b24gY2xhc3M9XFxcInVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeSB1ay1tb2RhbC1jbG9zZVxcXCIgYXV0b2ZvY3VzPlwiICsgKG9wdGlvbnMubGFiZWxzLm9rKSArIFwiPC9idXR0b24+IDwvZGl2PiBcIiksIG9wdGlvbnMpLiRlbCwgJ2hpZGUnLCByZXNvbHZlKTsgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5tb2RhbC5jb25maXJtID0gZnVuY3Rpb24gKG1lc3NhZ2UsIG9wdGlvbnMpIHtcblxuICAgICAgICAgICAgb3B0aW9ucyA9IGFzc2lnbih7YmdDbG9zZTogZmFsc2UsIGVzY0Nsb3NlOiB0cnVlLCBsYWJlbHM6IFVJa2l0Lm1vZGFsLmxhYmVsc30sIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgY29uZmlybSA9IFVJa2l0Lm1vZGFsLmRpYWxvZygoXCIgPGZvcm0+IDxkaXYgY2xhc3M9XFxcInVrLW1vZGFsLWJvZHlcXFwiPlwiICsgKGlzU3RyaW5nKG1lc3NhZ2UpID8gbWVzc2FnZSA6IGh0bWwobWVzc2FnZSkpICsgXCI8L2Rpdj4gPGRpdiBjbGFzcz1cXFwidWstbW9kYWwtZm9vdGVyIHVrLXRleHQtcmlnaHRcXFwiPiA8YnV0dG9uIGNsYXNzPVxcXCJ1ay1idXR0b24gdWstYnV0dG9uLWRlZmF1bHQgdWstbW9kYWwtY2xvc2VcXFwiIHR5cGU9XFxcImJ1dHRvblxcXCI+XCIgKyAob3B0aW9ucy5sYWJlbHMuY2FuY2VsKSArIFwiPC9idXR0b24+IDxidXR0b24gY2xhc3M9XFxcInVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeVxcXCIgYXV0b2ZvY3VzPlwiICsgKG9wdGlvbnMubGFiZWxzLm9rKSArIFwiPC9idXR0b24+IDwvZGl2PiA8L2Zvcm0+IFwiKSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgICAgICB2YXIgcmVzb2x2ZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIG9uKGNvbmZpcm0uJGVsLCAnc3VibWl0JywgJ2Zvcm0nLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBjb25maXJtLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBvbihjb25maXJtLiRlbCwgJ2hpZGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzb2x2ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0Lm1vZGFsLnByb21wdCA9IGZ1bmN0aW9uIChtZXNzYWdlLCB2YWx1ZSwgb3B0aW9ucykge1xuXG4gICAgICAgICAgICBvcHRpb25zID0gYXNzaWduKHtiZ0Nsb3NlOiBmYWxzZSwgZXNjQ2xvc2U6IHRydWUsIGxhYmVsczogVUlraXQubW9kYWwubGFiZWxzfSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgcHJvbXB0ID0gVUlraXQubW9kYWwuZGlhbG9nKChcIiA8Zm9ybSBjbGFzcz1cXFwidWstZm9ybS1zdGFja2VkXFxcIj4gPGRpdiBjbGFzcz1cXFwidWstbW9kYWwtYm9keVxcXCI+IDxsYWJlbD5cIiArIChpc1N0cmluZyhtZXNzYWdlKSA/IG1lc3NhZ2UgOiBodG1sKG1lc3NhZ2UpKSArIFwiPC9sYWJlbD4gPGlucHV0IGNsYXNzPVxcXCJ1ay1pbnB1dFxcXCIgYXV0b2ZvY3VzPiA8L2Rpdj4gPGRpdiBjbGFzcz1cXFwidWstbW9kYWwtZm9vdGVyIHVrLXRleHQtcmlnaHRcXFwiPiA8YnV0dG9uIGNsYXNzPVxcXCJ1ay1idXR0b24gdWstYnV0dG9uLWRlZmF1bHQgdWstbW9kYWwtY2xvc2VcXFwiIHR5cGU9XFxcImJ1dHRvblxcXCI+XCIgKyAob3B0aW9ucy5sYWJlbHMuY2FuY2VsKSArIFwiPC9idXR0b24+IDxidXR0b24gY2xhc3M9XFxcInVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeVxcXCI+XCIgKyAob3B0aW9ucy5sYWJlbHMub2spICsgXCI8L2J1dHRvbj4gPC9kaXY+IDwvZm9ybT4gXCIpLCBvcHRpb25zKSxcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQgPSAkKCdpbnB1dCcsIHByb21wdC4kZWwpO1xuXG4gICAgICAgICAgICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICAgICAgICAgIHZhciByZXNvbHZlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgb24ocHJvbXB0LiRlbCwgJ3N1Ym1pdCcsICdmb3JtJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGlucHV0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBwcm9tcHQuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG9uKHByb21wdC4kZWwsICdoaWRlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc29sdmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0Lm1vZGFsLmxhYmVscyA9IHtcbiAgICAgICAgICAgIG9rOiAnT2snLFxuICAgICAgICAgICAgY2FuY2VsOiAnQ2FuY2VsJ1xuICAgICAgICB9O1xuXG4gICAgfVxuXG4gICAgdmFyIE5hdiA9IHtcblxuICAgICAgICBleHRlbmRzOiBBY2NvcmRpb24sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdGFyZ2V0czogJz4gLnVrLXBhcmVudCcsXG4gICAgICAgICAgICB0b2dnbGU6ICc+IGEnLFxuICAgICAgICAgICAgY29udGVudDogJz4gdWwnXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgTmF2YmFyID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzXSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgZHJvcGRvd246IFN0cmluZyxcbiAgICAgICAgICAgIG1vZGU6ICdsaXN0JyxcbiAgICAgICAgICAgIGFsaWduOiBTdHJpbmcsXG4gICAgICAgICAgICBvZmZzZXQ6IE51bWJlcixcbiAgICAgICAgICAgIGJvdW5kYXJ5OiBCb29sZWFuLFxuICAgICAgICAgICAgYm91bmRhcnlBbGlnbjogQm9vbGVhbixcbiAgICAgICAgICAgIGNsc0Ryb3A6IFN0cmluZyxcbiAgICAgICAgICAgIGRlbGF5U2hvdzogTnVtYmVyLFxuICAgICAgICAgICAgZGVsYXlIaWRlOiBOdW1iZXIsXG4gICAgICAgICAgICBkcm9wYmFyOiBCb29sZWFuLFxuICAgICAgICAgICAgZHJvcGJhck1vZGU6IFN0cmluZyxcbiAgICAgICAgICAgIGRyb3BiYXJBbmNob3I6IEJvb2xlYW4sXG4gICAgICAgICAgICBkdXJhdGlvbjogTnVtYmVyXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZHJvcGRvd246ICcudWstbmF2YmFyLW5hdiA+IGxpJyxcbiAgICAgICAgICAgIGFsaWduOiAhaXNSdGwgPyAnbGVmdCcgOiAncmlnaHQnLFxuICAgICAgICAgICAgY2xzRHJvcDogJ3VrLW5hdmJhci1kcm9wZG93bicsXG4gICAgICAgICAgICBtb2RlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBvZmZzZXQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRlbGF5U2hvdzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZGVsYXlIaWRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBib3VuZGFyeUFsaWduOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBmbGlwOiAneCcsXG4gICAgICAgICAgICBib3VuZGFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGRyb3BiYXI6IGZhbHNlLFxuICAgICAgICAgICAgZHJvcGJhck1vZGU6ICdzbGlkZScsXG4gICAgICAgICAgICBkcm9wYmFyQW5jaG9yOiBmYWxzZSxcbiAgICAgICAgICAgIGR1cmF0aW9uOiAyMDAsXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgYm91bmRhcnk6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJvdW5kYXJ5ID0gcmVmLmJvdW5kYXJ5O1xuICAgICAgICAgICAgICAgIHZhciBib3VuZGFyeUFsaWduID0gcmVmLmJvdW5kYXJ5QWxpZ247XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKGJvdW5kYXJ5ID09PSB0cnVlIHx8IGJvdW5kYXJ5QWxpZ24pID8gJGVsIDogYm91bmRhcnk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBkcm9wYmFyQW5jaG9yOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBkcm9wYmFyQW5jaG9yID0gcmVmLmRyb3BiYXJBbmNob3I7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcXVlcnkoZHJvcGJhckFuY2hvciwgJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBvczogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFsaWduID0gcmVmLmFsaWduO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcImJvdHRvbS1cIiArIGFsaWduKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGRyb3Bkb3duczogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgZHJvcGRvd24gPSByZWYuZHJvcGRvd247XG4gICAgICAgICAgICAgICAgdmFyIGNsc0Ryb3AgPSByZWYuY2xzRHJvcDtcblxuICAgICAgICAgICAgICAgIHJldHVybiAkJCgoZHJvcGRvd24gKyBcIiAuXCIgKyBjbHNEcm9wKSwgJGVsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGJlZm9yZUNvbm5lY3Q6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kcHJvcHM7XG4gICAgICAgICAgICB2YXIgZHJvcGJhciA9IHJlZi5kcm9wYmFyO1xuXG4gICAgICAgICAgICB0aGlzLmRyb3BiYXIgPSBkcm9wYmFyICYmIChxdWVyeShkcm9wYmFyLCB0aGlzLiRlbCkgfHwgJCgnKyAudWstbmF2YmFyLWRyb3BiYXInLCB0aGlzLiRlbCkgfHwgJCgnPGRpdj48L2Rpdj4nKSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRyb3BiYXIpIHtcblxuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuZHJvcGJhciwgJ3VrLW5hdmJhci1kcm9wYmFyJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kcm9wYmFyTW9kZSA9PT0gJ3NsaWRlJykge1xuICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLmRyb3BiYXIsICd1ay1uYXZiYXItZHJvcGJhci1zbGlkZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGRpc2Nvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3BiYXIgJiYgcmVtb3ZlKHRoaXMuZHJvcGJhcik7XG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHRoaXMuJGNyZWF0ZShcbiAgICAgICAgICAgICAgICAnZHJvcCcsXG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93bnMuZmlsdGVyKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gIXRoaXMkMS5nZXREcm9wZG93bihlbCk7IH0pLFxuICAgICAgICAgICAgICAgIGFzc2lnbih7fSwgdGhpcy4kcHJvcHMsIHtib3VuZGFyeTogdGhpcy5ib3VuZGFyeSwgcG9zOiB0aGlzLnBvcywgb2Zmc2V0OiB0aGlzLmRyb3BiYXIgfHwgdGhpcy5vZmZzZXR9KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ21vdXNlb3ZlcicsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRyb3Bkb3duO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSByZWYuY3VycmVudDtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gdGhpcy5nZXRBY3RpdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZSAmJiBhY3RpdmUudG9nZ2xlICYmICF3aXRoaW4oYWN0aXZlLnRvZ2dsZS4kZWwsIGN1cnJlbnQpICYmICFhY3RpdmUudHJhY2tlci5tb3Zlc1RvKGFjdGl2ZS4kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnbW91c2VsZWF2ZScsXG5cbiAgICAgICAgICAgICAgICBlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRyb3BiYXI7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gdGhpcy5nZXRBY3RpdmUoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlICYmICFtYXRjaGVzKHRoaXMuZHJvcGJhciwgJzpob3ZlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVzaG93JyxcblxuICAgICAgICAgICAgICAgIGNhcHR1cmU6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kcm9wYmFyO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZHJvcGJhci5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZnRlcih0aGlzLmRyb3BiYXJBbmNob3IgfHwgdGhpcy4kZWwsIHRoaXMuZHJvcGJhcik7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnc2hvdycsXG5cbiAgICAgICAgICAgICAgICBjYXB0dXJlOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZHJvcGJhcjtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oXywgZHJvcCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciAkZWwgPSBkcm9wLiRlbDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRpciA9IGRyb3AuZGlyO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xzRHJvcCAmJiBhZGRDbGFzcygkZWwsICgodGhpcy5jbHNEcm9wKSArIFwiLWRyb3BiYXJcIikpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkaXIgPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25UbygkZWwub2Zmc2V0SGVpZ2h0ICsgdG9GbG9hdChjc3MoJGVsLCAnbWFyZ2luVG9wJykpICsgdG9GbG9hdChjc3MoJGVsLCAnbWFyZ2luQm90dG9tJykpLCAkZWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVoaWRlJyxcblxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRyb3BiYXI7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUsIHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgJGVsID0gcmVmLiRlbDtcblxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBhY3RpdmUgPSB0aGlzLmdldEFjdGl2ZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaGVzKHRoaXMuZHJvcGJhciwgJzpob3ZlcicpICYmIGFjdGl2ZSAmJiBhY3RpdmUuJGVsID09PSAkZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnaGlkZScsXG5cbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kcm9wYmFyO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihfLCByZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICRlbCA9IHJlZi4kZWw7XG5cblxuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gdGhpcy5nZXRBY3RpdmUoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdGl2ZSB8fCBhY3RpdmUgJiYgYWN0aXZlLiRlbCA9PT0gJGVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25UbygwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgZ2V0QWN0aXZlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcy5kcm9wZG93bnMubWFwKHRoaXMuZ2V0RHJvcGRvd24pLmZpbHRlcihmdW5jdGlvbiAoZHJvcCkgeyByZXR1cm4gZHJvcC5pc0FjdGl2ZSgpOyB9KTtcbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gcmVmWzBdO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY3RpdmUgJiYgaW5jbHVkZXMoYWN0aXZlLm1vZGUsICdob3ZlcicpICYmIHdpdGhpbihhY3RpdmUudG9nZ2xlLiRlbCwgdGhpcy4kZWwpICYmIGFjdGl2ZTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRyYW5zaXRpb25UbzogZnVuY3Rpb24obmV3SGVpZ2h0LCBlbCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmFyIGRyb3BiYXIgPSByZWYuZHJvcGJhcjtcbiAgICAgICAgICAgICAgICB2YXIgb2xkSGVpZ2h0ID0gaXNWaXNpYmxlKGRyb3BiYXIpID8gaGVpZ2h0KGRyb3BiYXIpIDogMDtcblxuICAgICAgICAgICAgICAgIGVsID0gb2xkSGVpZ2h0IDwgbmV3SGVpZ2h0ICYmIGVsO1xuXG4gICAgICAgICAgICAgICAgY3NzKGVsLCAnY2xpcCcsIChcInJlY3QoMCxcIiArIChlbC5vZmZzZXRXaWR0aCkgKyBcInB4LFwiICsgb2xkSGVpZ2h0ICsgXCJweCwwKVwiKSk7XG5cbiAgICAgICAgICAgICAgICBoZWlnaHQoZHJvcGJhciwgb2xkSGVpZ2h0KTtcblxuICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKFtlbCwgZHJvcGJhcl0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQoZHJvcGJhciwge2hlaWdodDogbmV3SGVpZ2h0fSwgdGhpcy5kdXJhdGlvbiksXG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQoZWwsIHtjbGlwOiAoXCJyZWN0KDAsXCIgKyAoZWwub2Zmc2V0V2lkdGgpICsgXCJweCxcIiArIG5ld0hlaWdodCArIFwicHgsMClcIil9LCB0aGlzLmR1cmF0aW9uKVxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChub29wKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBjc3MoZWwsIHtjbGlwOiAnJ30pOyB9KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldERyb3Bkb3duOiBmdW5jdGlvbihlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRnZXRDb21wb25lbnQoZWwsICdkcm9wJykgfHwgdGhpcy4kZ2V0Q29tcG9uZW50KGVsLCAnZHJvcGRvd24nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIHNjcm9sbDtcblxuICAgIHZhciBPZmZjYW52YXMgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbTW9kYWxdLFxuXG4gICAgICAgIGFyZ3M6ICdtb2RlJyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgY29udGVudDogU3RyaW5nLFxuICAgICAgICAgICAgbW9kZTogU3RyaW5nLFxuICAgICAgICAgICAgZmxpcDogQm9vbGVhbixcbiAgICAgICAgICAgIG92ZXJsYXk6IEJvb2xlYW5cbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBjb250ZW50OiAnLnVrLW9mZmNhbnZhcy1jb250ZW50JyxcbiAgICAgICAgICAgIG1vZGU6ICdzbGlkZScsXG4gICAgICAgICAgICBmbGlwOiBmYWxzZSxcbiAgICAgICAgICAgIG92ZXJsYXk6IGZhbHNlLFxuICAgICAgICAgICAgY2xzUGFnZTogJ3VrLW9mZmNhbnZhcy1wYWdlJyxcbiAgICAgICAgICAgIGNsc0NvbnRhaW5lcjogJ3VrLW9mZmNhbnZhcy1jb250YWluZXInLFxuICAgICAgICAgICAgc2VsUGFuZWw6ICcudWstb2ZmY2FudmFzLWJhcicsXG4gICAgICAgICAgICBjbHNGbGlwOiAndWstb2ZmY2FudmFzLWZsaXAnLFxuICAgICAgICAgICAgY2xzQ29udGVudDogJ3VrLW9mZmNhbnZhcy1jb250ZW50JyxcbiAgICAgICAgICAgIGNsc0NvbnRlbnRBbmltYXRpb246ICd1ay1vZmZjYW52YXMtY29udGVudC1hbmltYXRpb24nLFxuICAgICAgICAgICAgY2xzU2lkZWJhckFuaW1hdGlvbjogJ3VrLW9mZmNhbnZhcy1iYXItYW5pbWF0aW9uJyxcbiAgICAgICAgICAgIGNsc01vZGU6ICd1ay1vZmZjYW52YXMnLFxuICAgICAgICAgICAgY2xzT3ZlcmxheTogJ3VrLW9mZmNhbnZhcy1vdmVybGF5JyxcbiAgICAgICAgICAgIHNlbENsb3NlOiAnLnVrLW9mZmNhbnZhcy1jbG9zZSdcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBjb250ZW50OiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgY29udGVudCA9IHJlZi5jb250ZW50O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoY29udGVudCkgfHwgZG9jdW1lbnQuYm9keTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNsc0ZsaXA6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBmbGlwID0gcmVmLmZsaXA7XG4gICAgICAgICAgICAgICAgdmFyIGNsc0ZsaXAgPSByZWYuY2xzRmxpcDtcblxuICAgICAgICAgICAgICAgIHJldHVybiBmbGlwID8gY2xzRmxpcCA6ICcnO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgY2xzT3ZlcmxheTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIG92ZXJsYXkgPSByZWYub3ZlcmxheTtcbiAgICAgICAgICAgICAgICB2YXIgY2xzT3ZlcmxheSA9IHJlZi5jbHNPdmVybGF5O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG92ZXJsYXkgPyBjbHNPdmVybGF5IDogJyc7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBjbHNNb2RlOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgbW9kZSA9IHJlZi5tb2RlO1xuICAgICAgICAgICAgICAgIHZhciBjbHNNb2RlID0gcmVmLmNsc01vZGU7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKGNsc01vZGUgKyBcIi1cIiArIG1vZGUpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgY2xzU2lkZWJhckFuaW1hdGlvbjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1vZGUgPSByZWYubW9kZTtcbiAgICAgICAgICAgICAgICB2YXIgY2xzU2lkZWJhckFuaW1hdGlvbiA9IHJlZi5jbHNTaWRlYmFyQW5pbWF0aW9uO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vZGUgPT09ICdub25lJyB8fCBtb2RlID09PSAncmV2ZWFsJyA/ICcnIDogY2xzU2lkZWJhckFuaW1hdGlvbjtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNsc0NvbnRlbnRBbmltYXRpb246IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBtb2RlID0gcmVmLm1vZGU7XG4gICAgICAgICAgICAgICAgdmFyIGNsc0NvbnRlbnRBbmltYXRpb24gPSByZWYuY2xzQ29udGVudEFuaW1hdGlvbjtcblxuICAgICAgICAgICAgICAgIHJldHVybiBtb2RlICE9PSAncHVzaCcgJiYgbW9kZSAhPT0gJ3JldmVhbCcgPyAnJyA6IGNsc0NvbnRlbnRBbmltYXRpb247XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2l0aW9uRWxlbWVudDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1vZGUgPSByZWYubW9kZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBtb2RlID09PSAncmV2ZWFsJyA/IHRoaXMucGFuZWwucGFyZW50Tm9kZSA6IHRoaXMucGFuZWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2V0QWN0aXZlKCkgPT09IHRoaXMpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5IHx8IHRoaXMuY2xzQ29udGVudEFuaW1hdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgodGhpcy5jb250ZW50LCB3aWR0aCh3aW5kb3cpIC0gdGhpcy5zY3JvbGxiYXJXaWR0aCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQodGhpcy5jb250ZW50LCBoZWlnaHQod2luZG93KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LnNjcm9sbFRvcCA9IHNjcm9sbC55O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydyZXNpemUnXVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnYVtocmVmXj1cIiNcIl0nO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSByZWYuY3VycmVudDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudC5oYXNoICYmICQoY3VycmVudC5oYXNoLCB0aGlzLmNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGwgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVzY3JvbGwnLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSwgc2Nyb2xsLCB0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbCAmJiB0YXJnZXQgJiYgdGhpcy5pc1RvZ2dsZWQoKSAmJiAkKHRhcmdldCwgdGhpcy5jb250ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25jZSh0aGlzLiRlbCwgJ2hpZGRlbicsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNjcm9sbC5zY3JvbGxUbyh0YXJnZXQpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdzaG93JyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBzY3JvbGwgPSBzY3JvbGwgfHwge3g6IHdpbmRvdy5wYWdlWE9mZnNldCwgeTogd2luZG93LnBhZ2VZT2Zmc2V0fTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb2RlID09PSAncmV2ZWFsJyAmJiAhaGFzQ2xhc3ModGhpcy5wYW5lbCwgdGhpcy5jbHNNb2RlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd3JhcEFsbCh0aGlzLnBhbmVsLCAnPGRpdj4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMucGFuZWwucGFyZW50Tm9kZSwgdGhpcy5jbHNNb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNzcyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICdvdmVyZmxvd1knLCAoIXRoaXMuY2xzQ29udGVudEFuaW1hdGlvbiB8fCB0aGlzLmZsaXApICYmIHRoaXMuc2Nyb2xsYmFyV2lkdGggJiYgdGhpcy5vdmVybGF5ID8gJ3Njcm9sbCcgOiAnJyk7XG4gICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKGRvY3VtZW50LmJvZHksIHRoaXMuY2xzQ29udGFpbmVyLCB0aGlzLmNsc0ZsaXAsIHRoaXMuY2xzT3ZlcmxheSk7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodChkb2N1bWVudC5ib2R5KTsgLy8gZm9yY2UgcmVmbG93XG4gICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuY29udGVudCwgdGhpcy5jbHNDb250ZW50QW5pbWF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy5wYW5lbCwgdGhpcy5jbHNTaWRlYmFyQW5pbWF0aW9uLCB0aGlzLm1vZGUgIT09ICdyZXZlYWwnID8gdGhpcy5jbHNNb2RlIDogJycpO1xuICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgdGhpcy5jbHNPdmVybGF5KTtcbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAnZGlzcGxheScsICdibG9jaycpO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQodGhpcy4kZWwpOyAvLyBmb3JjZSByZWZsb3dcblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnaGlkZScsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuY29udGVudCwgdGhpcy5jbHNDb250ZW50QW5pbWF0aW9uKTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gdGhpcy5nZXRBY3RpdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ25vbmUnIHx8IGFjdGl2ZSAmJiBhY3RpdmUgIT09IHRoaXMgJiYgYWN0aXZlICE9PSB0aGlzLnByZXYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy5wYW5lbCwgJ3RyYW5zaXRpb25lbmQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnaGlkZGVuJyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb2RlID09PSAncmV2ZWFsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwKHRoaXMucGFuZWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbCA9IHt4OiB3aW5kb3cucGFnZVhPZmZzZXQsIHk6IHdpbmRvdy5wYWdlWU9mZnNldH07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXNjcm9sbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ID0gcmVmLnNjcm9sbExlZnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IHJlZi5zY3JvbGxUb3A7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGwgPSB7eDogeCwgeTogeX07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLnBhbmVsLCB0aGlzLmNsc1NpZGViYXJBbmltYXRpb24sIHRoaXMuY2xzTW9kZSk7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc092ZXJsYXkpO1xuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICdkaXNwbGF5JywgJycpO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyhkb2N1bWVudC5ib2R5LCB0aGlzLmNsc0NvbnRhaW5lciwgdGhpcy5jbHNGbGlwLCB0aGlzLmNsc092ZXJsYXkpO1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA9IHNjcm9sbC55O1xuXG4gICAgICAgICAgICAgICAgICAgIGNzcyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICdvdmVyZmxvd1knLCAnJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgd2lkdGgodGhpcy5jb250ZW50LCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCh0aGlzLmNvbnRlbnQsICcnKTtcblxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsKHNjcm9sbC54LCBzY3JvbGwueSk7XG5cbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnc3dpcGVMZWZ0IHN3aXBlUmlnaHQnLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzVG9nZ2xlZCgpICYmIGlzVG91Y2goZSkgJiYgKGUudHlwZSA9PT0gJ3N3aXBlTGVmdCcgJiYgIXRoaXMuZmxpcCB8fCBlLnR5cGUgPT09ICdzd2lwZVJpZ2h0JyAmJiB0aGlzLmZsaXApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF1cblxuICAgIH07XG5cbiAgICB2YXIgT3ZlcmZsb3dBdXRvID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzXSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBtb2RhbDogZnVuY3Rpb24oXywgJGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3QoJGVsLCAnLnVrLW1vZGFsJyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBwYW5lbDogZnVuY3Rpb24oXywgJGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3QoJGVsLCAnLnVrLW1vZGFsLWRpYWxvZycpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ21pbkhlaWdodCcsIDE1MCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5wYW5lbCB8fCAhdGhpcy5tb2RhbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSBjc3ModGhpcy4kZWwsICdtYXhIZWlnaHQnKTtcblxuICAgICAgICAgICAgICAgIGNzcyhjc3ModGhpcy4kZWwsICdtYXhIZWlnaHQnLCAxNTApLCAnbWF4SGVpZ2h0JywgTWF0aC5tYXgoMTUwLCAxNTAgKyBoZWlnaHQodGhpcy5tb2RhbCkgLSB0aGlzLnBhbmVsLm9mZnNldEhlaWdodCkpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50ICE9PSBjc3ModGhpcy4kZWwsICdtYXhIZWlnaHQnKSkge1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAncmVzaXplJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFJlc3BvbnNpdmUgPSB7XG5cbiAgICAgICAgcHJvcHM6IFsnd2lkdGgnLCAnaGVpZ2h0J10sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCAndWstcmVzcG9uc2l2ZS13aWR0aCcpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICByZWFkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNWaXNpYmxlKHRoaXMuJGVsKSAmJiB0aGlzLndpZHRoICYmIHRoaXMuaGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgID8ge3dpZHRoOiB3aWR0aCh0aGlzLiRlbC5wYXJlbnROb2RlKSwgaGVpZ2h0OiB0aGlzLmhlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihkaW0pIHtcbiAgICAgICAgICAgICAgICBoZWlnaHQodGhpcy4kZWwsIERpbWVuc2lvbnMuY29udGFpbih7aGVpZ2h0OiB0aGlzLmhlaWdodCwgd2lkdGg6IHRoaXMud2lkdGh9LCBkaW0pLmhlaWdodCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgU2Nyb2xsID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBkdXJhdGlvbjogTnVtYmVyLFxuICAgICAgICAgICAgb2Zmc2V0OiBOdW1iZXJcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBkdXJhdGlvbjogMTAwMCxcbiAgICAgICAgICAgIG9mZnNldDogMFxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc2Nyb2xsVG86IGZ1bmN0aW9uKGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIGVsID0gZWwgJiYgJChlbCkgfHwgZG9jdW1lbnQuYm9keTtcblxuICAgICAgICAgICAgICAgIHZhciBkb2NIZWlnaHQgPSBoZWlnaHQoZG9jdW1lbnQpO1xuICAgICAgICAgICAgICAgIHZhciB3aW5IZWlnaHQgPSBoZWlnaHQod2luZG93KTtcblxuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBvZmZzZXQoZWwpLnRvcCAtIHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgKyB3aW5IZWlnaHQgPiBkb2NIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gZG9jSGVpZ2h0IC0gd2luSGVpZ2h0O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghdHJpZ2dlcih0aGlzLiRlbCwgJ2JlZm9yZXNjcm9sbCcsIFt0aGlzLCBlbF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgIHZhciBzdGFydFkgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gICAgICAgICAgICAgICAgdmFyIHN0ZXAgPSBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRZID0gc3RhcnRZICsgKHRhcmdldCAtIHN0YXJ0WSkgKiBlYXNlKGNsYW1wKChEYXRlLm5vdygpIC0gc3RhcnQpIC8gdGhpcyQxLmR1cmF0aW9uKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbCh3aW5kb3cucGFnZVhPZmZzZXQsIGN1cnJlbnRZKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBzY3JvbGwgbW9yZSBpZiB3ZSBoYXZlIG5vdCByZWFjaGVkIG91ciBkZXN0aW5hdGlvblxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFkgIT09IHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzJDEuJGVsLCAnc2Nyb2xsZWQnLCBbdGhpcyQxLCBlbF0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgc3RlcCgpO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IHtcblxuICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgIGlmIChlLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvKGVzY2FwZSh0aGlzLiRlbC5oYXNoKS5zdWJzdHIoMSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBlYXNlKGspIHtcbiAgICAgICAgcmV0dXJuIDAuNSAqICgxIC0gTWF0aC5jb3MoTWF0aC5QSSAqIGspKTtcbiAgICB9XG5cbiAgICB2YXIgU2Nyb2xsc3B5ID0ge1xuXG4gICAgICAgIGFyZ3M6ICdjbHMnLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBjbHM6ICdsaXN0JyxcbiAgICAgICAgICAgIHRhcmdldDogU3RyaW5nLFxuICAgICAgICAgICAgaGlkZGVuOiBCb29sZWFuLFxuICAgICAgICAgICAgb2Zmc2V0VG9wOiBOdW1iZXIsXG4gICAgICAgICAgICBvZmZzZXRMZWZ0OiBOdW1iZXIsXG4gICAgICAgICAgICByZXBlYXQ6IEJvb2xlYW4sXG4gICAgICAgICAgICBkZWxheTogTnVtYmVyXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YTogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHtcbiAgICAgICAgICAgIGNsczogW10sXG4gICAgICAgICAgICB0YXJnZXQ6IGZhbHNlLFxuICAgICAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICAgICAgb2Zmc2V0VG9wOiAwLFxuICAgICAgICAgICAgb2Zmc2V0TGVmdDogMCxcbiAgICAgICAgICAgIHJlcGVhdDogZmFsc2UsXG4gICAgICAgICAgICBkZWxheTogMCxcbiAgICAgICAgICAgIGluVmlld0NsYXNzOiAndWstc2Nyb2xsc3B5LWludmlldydcbiAgICAgICAgfSk7IH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgZWxlbWVudHM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0ID8gJCQodGFyZ2V0LCAkZWwpIDogWyRlbF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5oaWRkZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyhmaWx0ZXIodGhpcy5lbGVtZW50cywgKFwiOm5vdCguXCIgKyAodGhpcy5pblZpZXdDbGFzcykgKyBcIilcIikpLCAndmlzaWJpbGl0eScsICdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24oZWxzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbHMuZGVsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAoZWwsIGkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsRGF0YSA9IGVsc1tpXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbERhdGEgfHwgZWxEYXRhLmVsICE9PSBlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjbHMgPSBkYXRhKGVsLCAndWstc2Nyb2xsc3B5LWNsYXNzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxEYXRhID0ge2VsOiBlbCwgdG9nZ2xlczogY2xzICYmIGNscy5zcGxpdCgnLCcpIHx8IHRoaXMkMS5jbHN9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBlbERhdGEuc2hvdyA9IGlzSW5WaWV3KGVsLCB0aGlzJDEub2Zmc2V0VG9wLCB0aGlzJDEub2Zmc2V0TGVmdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNbaV0gPSBlbERhdGE7XG5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihlbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgICAgICAvLyBMZXQgY2hpbGQgY29tcG9uZW50cyBiZSBhcHBsaWVkIGF0IGxlYXN0IG9uY2UgZmlyc3RcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbHMuZGVsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbHMuZGVsYXkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4JCQxID0gdGhpcy5lbGVtZW50cy5sZW5ndGggPT09IDEgPyAxIDogMDtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKGVsLCBpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbERhdGEgPSBlbHNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2xzID0gZWxEYXRhLnRvZ2dsZXNbaV0gfHwgZWxEYXRhLnRvZ2dsZXNbMF07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbERhdGEuc2hvdyAmJiAhZWxEYXRhLmludmlldyAmJiAhZWxEYXRhLnRpbWVyKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2hvdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzKGVsLCAndmlzaWJpbGl0eScsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3MoZWwsIHRoaXMkMS5pblZpZXdDbGFzcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCBjbHMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIoZWwsICdpbnZpZXcnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuJHVwZGF0ZShlbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxEYXRhLmludmlldyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBlbERhdGEudGltZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEuZGVsYXkgJiYgaW5kZXgkJDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxEYXRhLnRpbWVyID0gc2V0VGltZW91dChzaG93LCB0aGlzJDEuZGVsYXkgKiBpbmRleCQkMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4JCQxKys7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWVsRGF0YS5zaG93ICYmIGVsRGF0YS5pbnZpZXcgJiYgdGhpcyQxLnJlcGVhdCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsRGF0YS50aW1lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoZWxEYXRhLnRpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGVsRGF0YS50aW1lcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MoZWwsICd2aXNpYmlsaXR5JywgdGhpcyQxLmhpZGRlbiA/ICdoaWRkZW4nIDogJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKGVsLCB0aGlzJDEuaW5WaWV3Q2xhc3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCBjbHMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcihlbCwgJ291dHZpZXcnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS4kdXBkYXRlKGVsKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsRGF0YS5pbnZpZXcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ3Njcm9sbCcsICdsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdXG5cbiAgICB9O1xuXG4gICAgdmFyIFNjcm9sbHNweU5hdiA9IHtcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgY2xzOiBTdHJpbmcsXG4gICAgICAgICAgICBjbG9zZXN0OiBTdHJpbmcsXG4gICAgICAgICAgICBzY3JvbGw6IEJvb2xlYW4sXG4gICAgICAgICAgICBvdmVyZmxvdzogQm9vbGVhbixcbiAgICAgICAgICAgIG9mZnNldDogTnVtYmVyXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgY2xzOiAndWstYWN0aXZlJyxcbiAgICAgICAgICAgIGNsb3Nlc3Q6IGZhbHNlLFxuICAgICAgICAgICAgc2Nyb2xsOiBmYWxzZSxcbiAgICAgICAgICAgIG92ZXJmbG93OiB0cnVlLFxuICAgICAgICAgICAgb2Zmc2V0OiAwXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgbGlua3M6IGZ1bmN0aW9uKF8sICRlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAkJCgnYVtocmVmXj1cIiNcIl0nLCAkZWwpLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGVsLmhhc2g7IH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZWxlbWVudHM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsb3Nlc3QgPyBjbG9zZXN0KHRoaXMubGlua3MsIHRoaXMuY2xvc2VzdCkgOiB0aGlzLmxpbmtzO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdGFyZ2V0czogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICQkKHRoaXMubGlua3MubWFwKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gZWwuaGFzaDsgfSkuam9pbignLCcpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRjcmVhdGUoJ3Njcm9sbCcsIHRoaXMubGlua3MsIHtvZmZzZXQ6IHRoaXMub2Zmc2V0IHx8IDB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24oZGF0YSQkMSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBzY3JvbGwgPSB3aW5kb3cucGFnZVlPZmZzZXQgKyB0aGlzLm9mZnNldCArIDE7XG4gICAgICAgICAgICAgICAgICAgIHZhciBtYXggPSBoZWlnaHQoZG9jdW1lbnQpIC0gaGVpZ2h0KHdpbmRvdykgKyB0aGlzLm9mZnNldDtcblxuICAgICAgICAgICAgICAgICAgICBkYXRhJCQxLmFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0cy5ldmVyeShmdW5jdGlvbiAoZWwsIGkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldChlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdG9wID0gcmVmLnRvcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsYXN0ID0gaSArIDEgPT09IHRoaXMkMS50YXJnZXRzLmxlbmd0aDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzJDEub3ZlcmZsb3cgJiYgKGkgPT09IDAgJiYgdG9wID4gc2Nyb2xsIHx8IGxhc3QgJiYgdG9wICsgZWwub2Zmc2V0VG9wIDwgc2Nyb2xsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0ICYmIG9mZnNldCh0aGlzJDEudGFyZ2V0c1tpICsgMV0pLnRvcCA8PSBzY3JvbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbCA+PSBtYXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gdGhpcyQxLnRhcmdldHMubGVuZ3RoIC0gMTsgaiA+IGk7IGotLSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJblZpZXcodGhpcyQxLnRhcmdldHNbal0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbCA9IHRoaXMkMS50YXJnZXRzW2pdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKGRhdGEkJDEuYWN0aXZlID0gJChmaWx0ZXIodGhpcyQxLmxpbmtzLCAoXCJbaHJlZj1cXFwiI1wiICsgKGVsLmlkKSArIFwiXFxcIl1cIikpKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gcmVmLmFjdGl2ZTtcblxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGlua3MuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGVsLmJsdXIoKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuZWxlbWVudHMsIHRoaXMuY2xzKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnYWN0aXZlJywgW2FjdGl2ZSwgYWRkQ2xhc3ModGhpcy5jbG9zZXN0ID8gY2xvc2VzdChhY3RpdmUsIHRoaXMuY2xvc2VzdCkgOiBhY3RpdmUsIHRoaXMuY2xzKV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ3Njcm9sbCcsICdsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdXG5cbiAgICB9O1xuXG4gICAgdmFyIFN0aWNreSA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzc10sXG5cbiAgICAgICAgYXR0cnM6IHRydWUsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHRvcDogbnVsbCxcbiAgICAgICAgICAgIGJvdHRvbTogQm9vbGVhbixcbiAgICAgICAgICAgIG9mZnNldDogTnVtYmVyLFxuICAgICAgICAgICAgYW5pbWF0aW9uOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNBY3RpdmU6IFN0cmluZyxcbiAgICAgICAgICAgIGNsc0luYWN0aXZlOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNGaXhlZDogU3RyaW5nLFxuICAgICAgICAgICAgY2xzQmVsb3c6IFN0cmluZyxcbiAgICAgICAgICAgIHNlbFRhcmdldDogU3RyaW5nLFxuICAgICAgICAgICAgd2lkdGhFbGVtZW50OiBCb29sZWFuLFxuICAgICAgICAgICAgc2hvd09uVXA6IEJvb2xlYW4sXG4gICAgICAgICAgICBtZWRpYTogJ21lZGlhJyxcbiAgICAgICAgICAgIHRhcmdldE9mZnNldDogTnVtYmVyXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgYm90dG9tOiBmYWxzZSxcbiAgICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICAgIGFuaW1hdGlvbjogJycsXG4gICAgICAgICAgICBjbHNBY3RpdmU6ICd1ay1hY3RpdmUnLFxuICAgICAgICAgICAgY2xzSW5hY3RpdmU6ICcnLFxuICAgICAgICAgICAgY2xzRml4ZWQ6ICd1ay1zdGlja3ktZml4ZWQnLFxuICAgICAgICAgICAgY2xzQmVsb3c6ICd1ay1zdGlja3ktYmVsb3cnLFxuICAgICAgICAgICAgc2VsVGFyZ2V0OiAnJyxcbiAgICAgICAgICAgIHdpZHRoRWxlbWVudDogZmFsc2UsXG4gICAgICAgICAgICBzaG93T25VcDogZmFsc2UsXG4gICAgICAgICAgICBtZWRpYTogZmFsc2UsXG4gICAgICAgICAgICB0YXJnZXRPZmZzZXQ6IGZhbHNlXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgc2VsVGFyZ2V0OiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBzZWxUYXJnZXQgPSByZWYuc2VsVGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbFRhcmdldCAmJiAkKHNlbFRhcmdldCwgJGVsKSB8fCAkZWw7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB3aWR0aEVsZW1lbnQ6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoRWxlbWVudCA9IHJlZi53aWR0aEVsZW1lbnQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcXVlcnkod2lkdGhFbGVtZW50LCAkZWwpIHx8IHRoaXMucGxhY2Vob2xkZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gJCgnKyAudWstc3RpY2t5LXBsYWNlaG9sZGVyJywgdGhpcy4kZWwpIHx8ICQoJzxkaXYgY2xhc3M9XCJ1ay1zdGlja3ktcGxhY2Vob2xkZXJcIj48L2Rpdj4nKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5zZWxUYXJnZXQsIHRoaXMuY2xzSW5hY3RpdmUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZW1vdmUodGhpcy5wbGFjZWhvbGRlcik7XG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMud2lkdGhFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdhY3RpdmUnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXBsYWNlQ2xhc3ModGhpcy5zZWxUYXJnZXQsIHRoaXMuY2xzSW5hY3RpdmUsIHRoaXMuY2xzQWN0aXZlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnaW5hY3RpdmUnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXBsYWNlQ2xhc3ModGhpcy5zZWxUYXJnZXQsIHRoaXMuY2xzQWN0aXZlLCB0aGlzLmNsc0luYWN0aXZlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdsb2FkIGhhc2hjaGFuZ2UgcG9wc3RhdGUnLFxuXG4gICAgICAgICAgICAgICAgZWw6IHdpbmRvdyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghKHRoaXMudGFyZ2V0T2Zmc2V0ICE9PSBmYWxzZSAmJiBsb2NhdGlvbi5oYXNoICYmIHdpbmRvdy5wYWdlWU9mZnNldCA+IDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gJChsb2NhdGlvbi5oYXNoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmYXN0ZG9tLnJlYWQoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldCh0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0b3AgPSByZWYudG9wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbFRvcCA9IG9mZnNldCh0aGlzJDEuJGVsKS50b3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gdGhpcyQxLiRlbC5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLmlzQWN0aXZlICYmIGVsVG9wICsgZWxIZWlnaHQgPj0gdG9wICYmIGVsVG9wIDw9IHRvcCArIHRhcmdldC5vZmZzZXRIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbCgwLCB0b3AgLSBlbEhlaWdodCAtIChpc051bWVyaWModGhpcyQxLnRhcmdldE9mZnNldCkgPyB0aGlzJDEudGFyZ2V0T2Zmc2V0IDogMCkgLSB0aGlzJDEub2Zmc2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwbGFjZWhvbGRlciA9IHJlZi5wbGFjZWhvbGRlcjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG9mZnNldEhlaWdodCA9IHJlZi4kZWwub2Zmc2V0SGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgICAgIGNzcyhwbGFjZWhvbGRlciwgYXNzaWduKFxuICAgICAgICAgICAgICAgICAgICAgICAge2hlaWdodDogY3NzKHRoaXMuJGVsLCAncG9zaXRpb24nKSAhPT0gJ2Fic29sdXRlJyA/IG9mZnNldEhlaWdodCA6ICcnfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgWydtYXJnaW5Ub3AnLCAnbWFyZ2luQm90dG9tJywgJ21hcmdpbkxlZnQnLCAnbWFyZ2luUmlnaHQnXSlcbiAgICAgICAgICAgICAgICAgICAgKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF3aXRoaW4ocGxhY2Vob2xkZXIsIGRvY3VtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIodGhpcy4kZWwsIHBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIocGxhY2Vob2xkZXIsICdoaWRkZW4nLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvcE9mZnNldCA9IG9mZnNldCh0aGlzLmlzQWN0aXZlID8gcGxhY2Vob2xkZXIgOiB0aGlzLiRlbCkudG9wO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJvdHRvbU9mZnNldCA9IHRoaXMudG9wT2Zmc2V0ICsgb2Zmc2V0SGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBib3R0b20gPSBwYXJzZVByb3AoJ2JvdHRvbScsIHRoaXMpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9wID0gTWF0aC5tYXgodG9GbG9hdChwYXJzZVByb3AoJ3RvcCcsIHRoaXMpKSwgdGhpcy50b3BPZmZzZXQpIC0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYm90dG9tID0gYm90dG9tICYmIGJvdHRvbSAtIG9mZnNldEhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmFjdGl2ZSA9IHRoaXMubWVkaWEgJiYgIXdpbmRvdy5tYXRjaE1lZGlhKHRoaXMubWVkaWEpLm1hdGNoZXM7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24oXywgcmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzY3JvbGxZID0gcmVmLnNjcm9sbFk7IGlmICggc2Nyb2xsWSA9PT0gdm9pZCAwICkgc2Nyb2xsWSA9IHdpbmRvdy5wYWdlWU9mZnNldDtcblxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2lkdGggPSAoaXNWaXNpYmxlKHRoaXMud2lkdGhFbGVtZW50KSA/IHRoaXMud2lkdGhFbGVtZW50IDogdGhpcy4kZWwpLm9mZnNldFdpZHRoO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGw6IHRoaXMuc2Nyb2xsID0gc2Nyb2xsWSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGlzVmlzaWJsZSh0aGlzLiRlbClcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZiwgcmVmJDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIHZhciB2aXNpYmxlID0gcmVmLnZpc2libGU7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzY3JvbGwgPSByZWYuc2Nyb2xsO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIHJlZiQxID09PSB2b2lkIDAgKSByZWYkMSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGlyID0gcmVmJDEuZGlyO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbCA8IDAgfHwgIXZpc2libGUgfHwgdGhpcy5kaXNhYmxlZCB8fCB0aGlzLnNob3dPblVwICYmICFkaXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmluYWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBzY3JvbGwgPCB0aGlzLnRvcFxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5zaG93T25VcCAmJiAoc2Nyb2xsIDw9IHRoaXMudG9wIHx8IGRpciA9PT0gJ2Rvd24nIHx8IGRpciA9PT0gJ3VwJyAmJiAhdGhpcy5pc0FjdGl2ZSAmJiBzY3JvbGwgPD0gdGhpcy5ib3R0b21PZmZzZXQpXG4gICAgICAgICAgICAgICAgICAgICkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uICYmIHNjcm9sbCA+IHRoaXMudG9wT2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5pbWF0aW9uLmNhbmNlbCh0aGlzLiRlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5pbWF0aW9uLm91dCh0aGlzLiRlbCwgdGhpcy5hbmltYXRpb24pLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLmhpZGUoKTsgfSwgbm9vcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0FjdGl2ZSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hbmltYXRpb24pIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgQW5pbWF0aW9uLmNhbmNlbCh0aGlzLiRlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIEFuaW1hdGlvbi5pbih0aGlzLiRlbCwgdGhpcy5hbmltYXRpb24pLmNhdGNoKG5vb3ApO1xuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZScsICdzY3JvbGwnXVxuXG4gICAgICAgICAgICB9IF0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHRoaXMuaXNBY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgYXR0cih0aGlzLnBsYWNlaG9sZGVyLCAnaGlkZGVuJywgbnVsbCk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhpZGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzQWN0aXZlIHx8IGhhc0NsYXNzKHRoaXMuc2VsVGFyZ2V0LCB0aGlzLmNsc0FjdGl2ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ2luYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzRml4ZWQsIHRoaXMuY2xzQmVsb3cpO1xuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwge3Bvc2l0aW9uOiAnJywgdG9wOiAnJywgd2lkdGg6ICcnfSk7XG4gICAgICAgICAgICAgICAgYXR0cih0aGlzLnBsYWNlaG9sZGVyLCAnaGlkZGVuJywgJycpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGFjdGl2ZSA9IHRoaXMudG9wICE9PSAwIHx8IHRoaXMuc2Nyb2xsID4gdGhpcy50b3A7XG4gICAgICAgICAgICAgICAgdmFyIHRvcCA9IE1hdGgubWF4KDAsIHRoaXMub2Zmc2V0KTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmJvdHRvbSAmJiB0aGlzLnNjcm9sbCA+IHRoaXMuYm90dG9tIC0gdGhpcy5vZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9wID0gdGhpcy5ib3R0b20gLSB0aGlzLnNjcm9sbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICAgICAgICAgICAgICAgIHRvcDogKHRvcCArIFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLndpZHRoXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaGFzQ2xhc3ModGhpcy5zZWxUYXJnZXQsIHRoaXMuY2xzQWN0aXZlKSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnaW5hY3RpdmUnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ2FjdGl2ZScpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0JlbG93LCB0aGlzLnNjcm9sbCA+IHRoaXMuYm90dG9tT2Zmc2V0KTtcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgdGhpcy5jbHNGaXhlZCk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcGFyc2VQcm9wKHByb3AsIHJlZikge1xuICAgICAgICB2YXIgJHByb3BzID0gcmVmLiRwcm9wcztcbiAgICAgICAgdmFyICRlbCA9IHJlZi4kZWw7XG4gICAgICAgIHZhciBwcm9wT2Zmc2V0ID0gcmVmWyhwcm9wICsgXCJPZmZzZXRcIildO1xuXG5cbiAgICAgICAgdmFyIHZhbHVlID0gJHByb3BzW3Byb3BdO1xuXG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc051bWVyaWModmFsdWUpKSB7XG5cbiAgICAgICAgICAgIHJldHVybiBwcm9wT2Zmc2V0ICsgdG9GbG9hdCh2YWx1ZSk7XG5cbiAgICAgICAgfSBlbHNlIGlmIChpc1N0cmluZyh2YWx1ZSkgJiYgdmFsdWUubWF0Y2goL14tP1xcZCt2aCQvKSkge1xuXG4gICAgICAgICAgICByZXR1cm4gaGVpZ2h0KHdpbmRvdykgKiB0b0Zsb2F0KHZhbHVlKSAvIDEwMDtcblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICB2YXIgZWwgPSB2YWx1ZSA9PT0gdHJ1ZSA/ICRlbC5wYXJlbnROb2RlIDogcXVlcnkodmFsdWUsICRlbCk7XG5cbiAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvZmZzZXQoZWwpLnRvcCArIGVsLm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIFN3aXRjaGVyID0ge1xuXG4gICAgICAgIG1peGluczogW1RvZ2dsYWJsZV0sXG5cbiAgICAgICAgYXJnczogJ2Nvbm5lY3QnLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBjb25uZWN0OiBTdHJpbmcsXG4gICAgICAgICAgICB0b2dnbGU6IFN0cmluZyxcbiAgICAgICAgICAgIGFjdGl2ZTogTnVtYmVyLFxuICAgICAgICAgICAgc3dpcGluZzogQm9vbGVhblxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNvbm5lY3Q6ICd+LnVrLXN3aXRjaGVyJyxcbiAgICAgICAgICAgIHRvZ2dsZTogJz4gKicsXG4gICAgICAgICAgICBhY3RpdmU6IDAsXG4gICAgICAgICAgICBzd2lwaW5nOiB0cnVlLFxuICAgICAgICAgICAgY2xzOiAndWstYWN0aXZlJyxcbiAgICAgICAgICAgIGNsc0NvbnRhaW5lcjogJ3VrLXN3aXRjaGVyJyxcbiAgICAgICAgICAgIGF0dHJJdGVtOiAndWstc3dpdGNoZXItaXRlbScsXG4gICAgICAgICAgICBxdWV1ZWQ6IHRydWVcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBjb25uZWN0czogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgY29ubmVjdCA9IHJlZi5jb25uZWN0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5QWxsKGNvbm5lY3QsICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0b2dnbGVzOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciB0b2dnbGUgPSByZWYudG9nZ2xlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQkKHRvZ2dsZSwgJGVsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCh0aGlzLnRvZ2dsZSkgKyBcIjpub3QoLnVrLWRpc2FibGVkKVwiKTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyhlLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3RzO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXCJbXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl0sW2RhdGEtXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl1cIik7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coZGF0YShlLmN1cnJlbnQsIHRoaXMuYXR0ckl0ZW0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ3N3aXBlUmlnaHQgc3dpcGVMZWZ0JyxcblxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN3aXBpbmc7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGVsOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdHM7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RvdWNoKGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyhlLnR5cGUgPT09ICdzd2lwZUxlZnQnID8gJ25leHQnIDogJ3ByZXZpb3VzJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgdGhpcy5jb25uZWN0cy5mb3JFYWNoKGZ1bmN0aW9uIChsaXN0KSB7IHJldHVybiB0aGlzJDEudXBkYXRlQXJpYShsaXN0LmNoaWxkcmVuKTsgfSk7XG4gICAgICAgICAgICB0aGlzLnNob3coZmlsdGVyKHRoaXMudG9nZ2xlcywgKFwiLlwiICsgKHRoaXMuY2xzKSkpWzBdIHx8IHRoaXMudG9nZ2xlc1t0aGlzLmFjdGl2ZV0gfHwgdGhpcy50b2dnbGVzWzBdKTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oaXRlbSkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcy50b2dnbGVzO1xuICAgICAgICAgICAgICAgIHZhciBsZW5ndGggPSByZWYubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHZhciBwcmV2ID0gISF0aGlzLmNvbm5lY3RzLmxlbmd0aCAmJiBpbmRleChmaWx0ZXIodGhpcy5jb25uZWN0c1swXS5jaGlsZHJlbiwgKFwiLlwiICsgKHRoaXMuY2xzKSkpWzBdKTtcbiAgICAgICAgICAgICAgICB2YXIgaGFzUHJldiA9IHByZXYgPj0gMDtcbiAgICAgICAgICAgICAgICB2YXIgZGlyID0gaXRlbSA9PT0gJ3ByZXZpb3VzJyA/IC0xIDogMTtcblxuICAgICAgICAgICAgICAgIHZhciB0b2dnbGUsIG5leHQgPSBnZXRJbmRleChpdGVtLCB0aGlzLnRvZ2dsZXMsIHByZXYpO1xuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKywgbmV4dCA9IChuZXh0ICsgZGlyICsgbGVuZ3RoKSAlIGxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoZXModGhpcyQxLnRvZ2dsZXNbbmV4dF0sICcudWstZGlzYWJsZWQsIFtkaXNhYmxlZF0nKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlID0gdGhpcyQxLnRvZ2dsZXNbbmV4dF07XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghdG9nZ2xlIHx8IHByZXYgPj0gMCAmJiBoYXNDbGFzcyh0b2dnbGUsIHRoaXMuY2xzKSB8fCBwcmV2ID09PSBuZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLnRvZ2dsZXMsIHRoaXMuY2xzKTtcbiAgICAgICAgICAgICAgICBhdHRyKHRoaXMudG9nZ2xlcywgJ2FyaWEtZXhwYW5kZWQnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgYWRkQ2xhc3ModG9nZ2xlLCB0aGlzLmNscyk7XG4gICAgICAgICAgICAgICAgYXR0cih0b2dnbGUsICdhcmlhLWV4cGFuZGVkJywgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3RzLmZvckVhY2goZnVuY3Rpb24gKGxpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNQcmV2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEudG9nZ2xlTm93KGxpc3QuY2hpbGRyZW5bbmV4dF0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnRvZ2dsZUVsZW1lbnQoW2xpc3QuY2hpbGRyZW5bcHJldl0sIGxpc3QuY2hpbGRyZW5bbmV4dF1dKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBUYWIgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3NdLFxuXG4gICAgICAgIGV4dGVuZHM6IFN3aXRjaGVyLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBtZWRpYTogJ21lZGlhJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIG1lZGlhOiA5NjAsXG4gICAgICAgICAgICBhdHRySXRlbTogJ3VrLXRhYi1pdGVtJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIHZhciBjbHMgPSBoYXNDbGFzcyh0aGlzLiRlbCwgJ3VrLXRhYi1sZWZ0JylcbiAgICAgICAgICAgICAgICA/ICd1ay10YWItbGVmdCdcbiAgICAgICAgICAgICAgICA6IGhhc0NsYXNzKHRoaXMuJGVsLCAndWstdGFiLXJpZ2h0JylcbiAgICAgICAgICAgICAgICAgICAgPyAndWstdGFiLXJpZ2h0J1xuICAgICAgICAgICAgICAgICAgICA6IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoY2xzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kY3JlYXRlKCd0b2dnbGUnLCB0aGlzLiRlbCwge2NsczogY2xzLCBtb2RlOiAnbWVkaWEnLCBtZWRpYTogdGhpcy5tZWRpYX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFRvZ2dsZSA9IHtcblxuICAgICAgICBtaXhpbnM6IFtUb2dnbGFibGVdLFxuXG4gICAgICAgIGFyZ3M6ICd0YXJnZXQnLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBocmVmOiBTdHJpbmcsXG4gICAgICAgICAgICB0YXJnZXQ6IG51bGwsXG4gICAgICAgICAgICBtb2RlOiAnbGlzdCcsXG4gICAgICAgICAgICBtZWRpYTogJ21lZGlhJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGhyZWY6IGZhbHNlLFxuICAgICAgICAgICAgdGFyZ2V0OiBmYWxzZSxcbiAgICAgICAgICAgIG1vZGU6ICdjbGljaycsXG4gICAgICAgICAgICBxdWV1ZWQ6IHRydWUsXG4gICAgICAgICAgICBtZWRpYTogZmFsc2VcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICB0YXJnZXQ6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGhyZWYgPSByZWYuaHJlZjtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgIHRhcmdldCA9IHF1ZXJ5QWxsKHRhcmdldCB8fCBocmVmLCAkZWwpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQubGVuZ3RoICYmIHRhcmdldCB8fCBbJGVsXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAocG9pbnRlckVudGVyICsgXCIgXCIgKyBwb2ludGVyTGVhdmUpLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluY2x1ZGVzKHRoaXMubW9kZSwgJ2hvdmVyJyk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RvdWNoKGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZSgoXCJ0b2dnbGVcIiArIChlLnR5cGUgPT09IHBvaW50ZXJFbnRlciA/ICdzaG93JyA6ICdoaWRlJykpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmNsdWRlcyh0aGlzLm1vZGUsICdjbGljaycpIHx8IGhhc1RvdWNoICYmIGluY2x1ZGVzKHRoaXMubW9kZSwgJ2hvdmVyJyk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVG91Y2goZSkgJiYgIWluY2x1ZGVzKHRoaXMubW9kZSwgJ2NsaWNrJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE8gYmV0dGVyIGlzVG9nZ2xlZCBoYW5kbGluZ1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGluaztcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNsb3Nlc3QoZS50YXJnZXQsICdhW2hyZWY9XCIjXCJdLCBidXR0b24nKVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGxpbmsgPSBjbG9zZXN0KGUudGFyZ2V0LCAnYVtocmVmXScpKSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAhaXNWaXNpYmxlKHRoaXMudGFyZ2V0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGxpbmsuaGFzaCAmJiBtYXRjaGVzKHRoaXMudGFyZ2V0LCBsaW5rLmhhc2gpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25jZShkb2N1bWVudCwgJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUucHJldmVudERlZmF1bHQoKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuICAgICAgICBdLFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWluY2x1ZGVzKHRoaXMubW9kZSwgJ21lZGlhJykgfHwgIXRoaXMubWVkaWEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciB0b2dnbGVkID0gdGhpcy5pc1RvZ2dsZWQodGhpcy50YXJnZXQpO1xuICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubWF0Y2hNZWRpYSh0aGlzLm1lZGlhKS5tYXRjaGVzID8gIXRvZ2dsZWQgOiB0b2dnbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICB0b2dnbGU6IGZ1bmN0aW9uKHR5cGUpIHtcbiAgICAgICAgICAgICAgICBpZiAodHJpZ2dlcih0aGlzLnRhcmdldCwgdHlwZSB8fCAndG9nZ2xlJywgW3RoaXNdKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUVsZW1lbnQodGhpcy50YXJnZXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gY29yZSAoVUlraXQpIHtcblxuICAgICAgICAvLyBjb3JlIGNvbXBvbmVudHNcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdhY2NvcmRpb24nLCBBY2NvcmRpb24pO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2FsZXJ0JywgQWxlcnQpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2NvdmVyJywgQ292ZXIpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2Ryb3AnLCBEcm9wKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdkcm9wZG93bicsIERyb3Bkb3duKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdmb3JtQ3VzdG9tJywgRm9ybUN1c3RvbSk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnZ2lmJywgR2lmKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdncmlkJywgR3JpZCk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnaGVpZ2h0TWF0Y2gnLCBIZWlnaHRNYXRjaCk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnaGVpZ2h0Vmlld3BvcnQnLCBIZWlnaHRWaWV3cG9ydCk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnaWNvbicsIEljb24pO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2ltZycsIEltZyk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnbGVhZGVyJywgTGVhZGVyKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdtYXJnaW4nLCBNYXJnaW4pO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ21vZGFsJywgTW9kYWwkMSk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnbmF2JywgTmF2KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCduYXZiYXInLCBOYXZiYXIpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ29mZmNhbnZhcycsIE9mZmNhbnZhcyk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnb3ZlcmZsb3dBdXRvJywgT3ZlcmZsb3dBdXRvKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdyZXNwb25zaXZlJywgUmVzcG9uc2l2ZSk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnc2Nyb2xsJywgU2Nyb2xsKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdzY3JvbGxzcHknLCBTY3JvbGxzcHkpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3Njcm9sbHNweU5hdicsIFNjcm9sbHNweU5hdik7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnc3RpY2t5JywgU3RpY2t5KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdzdmcnLCBTVkcpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3N3aXRjaGVyJywgU3dpdGNoZXIpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3RhYicsIFRhYik7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgndG9nZ2xlJywgVG9nZ2xlKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCd2aWRlbycsIFZpZGVvKTtcblxuICAgICAgICAvLyBJY29uIGNvbXBvbmVudHNcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdjbG9zZScsIENsb3NlKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdtYXJrZXInLCBJY29uQ29tcG9uZW50KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCduYXZiYXJUb2dnbGVJY29uJywgSWNvbkNvbXBvbmVudCk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnb3ZlcmxheUljb24nLCBJY29uQ29tcG9uZW50KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdwYWdpbmF0aW9uTmV4dCcsIEljb25Db21wb25lbnQpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3BhZ2luYXRpb25QcmV2aW91cycsIEljb25Db21wb25lbnQpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3NlYXJjaEljb24nLCBTZWFyY2gpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3NsaWRlbmF2TmV4dCcsIFNsaWRlbmF2KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdzbGlkZW5hdlByZXZpb3VzJywgU2xpZGVuYXYpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3NwaW5uZXInLCBTcGlubmVyKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCd0b3RvcCcsIEljb25Db21wb25lbnQpO1xuXG4gICAgICAgIC8vIGNvcmUgZnVuY3Rpb25hbGl0eVxuICAgICAgICBVSWtpdC51c2UoQ29yZSk7XG5cbiAgICB9XG5cbiAgICBVSWtpdC52ZXJzaW9uID0gJzMuMC4wLXJjLjUnO1xuXG4gICAgY29yZShVSWtpdCk7XG5cbiAgICB2YXIgQ291bnRkb3duID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzXSxcblxuICAgICAgICBhdHRyczogdHJ1ZSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgZGF0ZTogU3RyaW5nLFxuICAgICAgICAgICAgY2xzV3JhcHBlcjogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZGF0ZTogJycsXG4gICAgICAgICAgICBjbHNXcmFwcGVyOiAnLnVrLWNvdW50ZG93bi0ldW5pdCUnXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgZGF0ZTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGUgPSByZWYuZGF0ZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBEYXRlLnBhcnNlKGRhdGUpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZGF5czogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgY2xzV3JhcHBlciA9IHJlZi5jbHNXcmFwcGVyO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoY2xzV3JhcHBlci5yZXBsYWNlKCcldW5pdCUnLCAnZGF5cycpLCAkZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaG91cnM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNsc1dyYXBwZXIgPSByZWYuY2xzV3JhcHBlcjtcblxuICAgICAgICAgICAgICAgIHJldHVybiAkKGNsc1dyYXBwZXIucmVwbGFjZSgnJXVuaXQlJywgJ2hvdXJzJyksICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBtaW51dGVzOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBjbHNXcmFwcGVyID0gcmVmLmNsc1dyYXBwZXI7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJChjbHNXcmFwcGVyLnJlcGxhY2UoJyV1bml0JScsICdtaW51dGVzJyksICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzZWNvbmRzOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBjbHNXcmFwcGVyID0gcmVmLmNsc1dyYXBwZXI7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJChjbHNXcmFwcGVyLnJlcGxhY2UoJyV1bml0JScsICdzZWNvbmRzJyksICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB1bml0czogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gWydkYXlzJywgJ2hvdXJzJywgJ21pbnV0ZXMnLCAnc2Vjb25kcyddLmZpbHRlcihmdW5jdGlvbiAodW5pdCkgeyByZXR1cm4gdGhpcyQxW3VuaXRdOyB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0KCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICB0aGlzLnN0b3AoKTtcbiAgICAgICAgICAgIHRoaXMudW5pdHMuZm9yRWFjaChmdW5jdGlvbiAodW5pdCkgeyByZXR1cm4gZW1wdHkodGhpcyQxW3VuaXRdKTsgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICd2aXNpYmlsaXR5Y2hhbmdlJyxcblxuICAgICAgICAgICAgICAgIGVsOiBkb2N1bWVudCxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuaGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3AoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgdmFyIHRpbWVzcGFuID0gZ2V0VGltZVNwYW4odGhpcy5kYXRlKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aW1lc3Bhbi50b3RhbCA8PSAwKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9wKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGltZXNwYW4uZGF5c1xuICAgICAgICAgICAgICAgICAgICAgICAgPSB0aW1lc3Bhbi5ob3Vyc1xuICAgICAgICAgICAgICAgICAgICAgICAgPSB0aW1lc3Bhbi5taW51dGVzXG4gICAgICAgICAgICAgICAgICAgICAgICA9IHRpbWVzcGFuLnNlY29uZHNcbiAgICAgICAgICAgICAgICAgICAgICAgID0gMDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnVuaXRzLmZvckVhY2goZnVuY3Rpb24gKHVuaXQpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgZGlnaXRzID0gU3RyaW5nKE1hdGguZmxvb3IodGltZXNwYW5bdW5pdF0pKTtcblxuICAgICAgICAgICAgICAgICAgICBkaWdpdHMgPSBkaWdpdHMubGVuZ3RoIDwgMiA/IChcIjBcIiArIGRpZ2l0cykgOiBkaWdpdHM7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGVsID0gdGhpcyQxW3VuaXRdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWwudGV4dENvbnRlbnQgIT09IGRpZ2l0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlnaXRzID0gZGlnaXRzLnNwbGl0KCcnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpZ2l0cy5sZW5ndGggIT09IGVsLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwoZWwsIGRpZ2l0cy5tYXAoZnVuY3Rpb24gKCkgeyByZXR1cm4gJzxzcGFuPjwvc3Bhbj4nOyB9KS5qb2luKCcnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2l0cy5mb3JFYWNoKGZ1bmN0aW9uIChkaWdpdCwgaSkgeyByZXR1cm4gZWwuY2hpbGRyZW5baV0udGV4dENvbnRlbnQgPSBkaWdpdDsgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRlICYmIHRoaXMudW5pdHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS4kZW1pdCgpOyB9LCAxMDAwKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHN0b3A6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lciA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldFRpbWVTcGFuKGRhdGUpIHtcblxuICAgICAgICB2YXIgdG90YWwgPSBkYXRlIC0gRGF0ZS5ub3coKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG90YWw6IHRvdGFsLFxuICAgICAgICAgICAgc2Vjb25kczogdG90YWwgLyAxMDAwICUgNjAsXG4gICAgICAgICAgICBtaW51dGVzOiB0b3RhbCAvIDEwMDAgLyA2MCAlIDYwLFxuICAgICAgICAgICAgaG91cnM6IHRvdGFsIC8gMTAwMCAvIDYwIC8gNjAgJSAyNCxcbiAgICAgICAgICAgIGRheXM6IHRvdGFsIC8gMTAwMCAvIDYwIC8gNjAgLyAyNFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciB0YXJnZXRDbGFzcyA9ICd1ay1hbmltYXRpb24tdGFyZ2V0JztcblxuICAgIHZhciBBbmltYXRlID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBhbmltYXRpb246IE51bWJlclxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogMTUwXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgdGFyZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kZWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIGFuaW1hdGU6IGZ1bmN0aW9uKGFjdGlvbikge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBhZGRTdHlsZSgpO1xuXG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gdG9Ob2Rlcyh0aGlzLnRhcmdldC5jaGlsZHJlbik7XG4gICAgICAgICAgICAgICAgdmFyIHByb3BzRnJvbSA9IGNoaWxkcmVuLm1hcChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGdldFByb3BzKGVsLCB0cnVlKTsgfSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgb2xkSGVpZ2h0ID0gaGVpZ2h0KHRoaXMudGFyZ2V0KTtcbiAgICAgICAgICAgICAgICB2YXIgb2xkU2Nyb2xsWSA9IHdpbmRvdy5wYWdlWU9mZnNldDtcblxuICAgICAgICAgICAgICAgIGFjdGlvbigpO1xuXG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwodGhpcy50YXJnZXQpO1xuICAgICAgICAgICAgICAgIGNoaWxkcmVuLmZvckVhY2goVHJhbnNpdGlvbi5jYW5jZWwpO1xuXG4gICAgICAgICAgICAgICAgcmVzZXQodGhpcy50YXJnZXQpO1xuICAgICAgICAgICAgICAgIHRoaXMuJHVwZGF0ZSh0aGlzLnRhcmdldCk7XG4gICAgICAgICAgICAgICAgZmFzdGRvbS5mbHVzaCgpO1xuXG4gICAgICAgICAgICAgICAgdmFyIG5ld0hlaWdodCA9IGhlaWdodCh0aGlzLnRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLmNvbmNhdCh0b05vZGVzKHRoaXMudGFyZ2V0LmNoaWxkcmVuKS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7IHJldHVybiAhaW5jbHVkZXMoY2hpbGRyZW4sIGVsKTsgfSkpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHByb3BzVG8gPSBjaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGVsLCBpKSB7IHJldHVybiBlbC5wYXJlbnROb2RlICYmIGkgaW4gcHJvcHNGcm9tXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzRnJvbVtpXVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBpc1Zpc2libGUoZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBnZXRQb3NpdGlvbldpdGhNYXJnaW4oZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7b3BhY2l0eTogMH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDoge29wYWNpdHk6IGlzVmlzaWJsZShlbCkgPyAxIDogMH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogZmFsc2U7IH1cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgcHJvcHNGcm9tID0gcHJvcHNUby5tYXAoZnVuY3Rpb24gKHByb3BzLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBmcm9tID0gY2hpbGRyZW5baV0ucGFyZW50Tm9kZSA9PT0gdGhpcyQxLnRhcmdldFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wc0Zyb21baV0gfHwgZ2V0UHJvcHMoY2hpbGRyZW5baV0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChmcm9tKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3BzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZyb20ub3BhY2l0eTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoISgnb3BhY2l0eScgaW4gcHJvcHMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9wYWNpdHkgPSBmcm9tLm9wYWNpdHk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BhY2l0eSAlIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMub3BhY2l0eSA9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZyb20ub3BhY2l0eTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnJvbTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMudGFyZ2V0LCB0YXJnZXRDbGFzcyk7XG4gICAgICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoZWwsIGkpIHsgcmV0dXJuIHByb3BzRnJvbVtpXSAmJiBjc3MoZWwsIHByb3BzRnJvbVtpXSk7IH0pO1xuICAgICAgICAgICAgICAgIGNzcyh0aGlzLnRhcmdldCwgJ21pbkhlaWdodCcsIG9sZEhlaWdodCk7XG4gICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbCh3aW5kb3cucGFnZVhPZmZzZXQsIG9sZFNjcm9sbFkpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5hbGwoY2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChlbCwgaSkgeyByZXR1cm4gcHJvcHNGcm9tW2ldICYmIHByb3BzVG9baV1cbiAgICAgICAgICAgICAgICAgICAgICAgID8gVHJhbnNpdGlvbi5zdGFydChlbCwgcHJvcHNUb1tpXSwgdGhpcyQxLmFuaW1hdGlvbiwgJ2Vhc2UnKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBQcm9taXNlJDEucmVzb2x2ZSgpOyB9XG4gICAgICAgICAgICAgICAgKS5jb25jYXQoVHJhbnNpdGlvbi5zdGFydCh0aGlzLnRhcmdldCwge21pbkhlaWdodDogbmV3SGVpZ2h0fSwgdGhpcy5hbmltYXRpb24sICdlYXNlJykpKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoZWwsIGkpIHsgcmV0dXJuIGNzcyhlbCwge2Rpc3BsYXk6IHByb3BzVG9baV0ub3BhY2l0eSA9PT0gMCA/ICdub25lJyA6ICcnLCB6SW5kZXg6ICcnfSk7IH0pO1xuICAgICAgICAgICAgICAgICAgICByZXNldCh0aGlzJDEudGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLiR1cGRhdGUodGhpcyQxLnRhcmdldCk7XG4gICAgICAgICAgICAgICAgfSwgbm9vcCk7XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBnZXRQcm9wcyhlbCwgb3BhY2l0eSkge1xuXG4gICAgICAgIHZhciB6SW5kZXggPSBjc3MoZWwsICd6SW5kZXgnKTtcblxuICAgICAgICByZXR1cm4gaXNWaXNpYmxlKGVsKVxuICAgICAgICAgICAgPyBhc3NpZ24oe1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICcnLFxuICAgICAgICAgICAgICAgIG9wYWNpdHk6IG9wYWNpdHkgPyBjc3MoZWwsICdvcGFjaXR5JykgOiAnMCcsXG4gICAgICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgIHpJbmRleDogekluZGV4ID09PSAnYXV0bycgPyBpbmRleChlbCkgOiB6SW5kZXhcbiAgICAgICAgICAgIH0sIGdldFBvc2l0aW9uV2l0aE1hcmdpbihlbCkpXG4gICAgICAgICAgICA6IGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlc2V0KGVsKSB7XG4gICAgICAgIGNzcyhlbC5jaGlsZHJlbiwge1xuICAgICAgICAgICAgaGVpZ2h0OiAnJyxcbiAgICAgICAgICAgIGxlZnQ6ICcnLFxuICAgICAgICAgICAgb3BhY2l0eTogJycsXG4gICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnJyxcbiAgICAgICAgICAgIHRvcDogJycsXG4gICAgICAgICAgICB3aWR0aDogJydcbiAgICAgICAgfSk7XG4gICAgICAgIHJlbW92ZUNsYXNzKGVsLCB0YXJnZXRDbGFzcyk7XG4gICAgICAgIGNzcyhlbCwgJ21pbkhlaWdodCcsICcnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRQb3NpdGlvbldpdGhNYXJnaW4oZWwpIHtcbiAgICAgICAgdmFyIHJlZiA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmLmhlaWdodDtcbiAgICAgICAgdmFyIHdpZHRoJCQxID0gcmVmLndpZHRoO1xuICAgICAgICB2YXIgcmVmJDEgPSBwb3NpdGlvbihlbCk7XG4gICAgICAgIHZhciB0b3AgPSByZWYkMS50b3A7XG4gICAgICAgIHZhciBsZWZ0ID0gcmVmJDEubGVmdDtcbiAgICAgICAgdG9wICs9IHRvRmxvYXQoY3NzKGVsLCAnbWFyZ2luVG9wJykpO1xuXG4gICAgICAgIHJldHVybiB7dG9wOiB0b3AsIGxlZnQ6IGxlZnQsIGhlaWdodDogaGVpZ2h0JCQxLCB3aWR0aDogd2lkdGgkJDF9O1xuICAgIH1cblxuICAgIHZhciBzdHlsZSQxO1xuXG4gICAgZnVuY3Rpb24gYWRkU3R5bGUoKSB7XG4gICAgICAgIGlmICghc3R5bGUkMSkge1xuICAgICAgICAgICAgc3R5bGUkMSA9IGFwcGVuZChkb2N1bWVudC5oZWFkLCAnPHN0eWxlPicpLnNoZWV0O1xuICAgICAgICAgICAgc3R5bGUkMS5pbnNlcnRSdWxlKFxuICAgICAgICAgICAgICAgIChcIi5cIiArIHRhcmdldENsYXNzICsgXCIgPiAqIHtcXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgICAgICB9XCIpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIEZpbHRlciA9IHtcblxuICAgICAgICBtaXhpbnM6IFtBbmltYXRlXSxcblxuICAgICAgICBhcmdzOiAndGFyZ2V0JyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgdGFyZ2V0OiBCb29sZWFuLFxuICAgICAgICAgICAgc2VsQWN0aXZlOiBCb29sZWFuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdGFyZ2V0OiBudWxsLFxuICAgICAgICAgICAgc2VsQWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIGF0dHJJdGVtOiAndWstZmlsdGVyLWNvbnRyb2wnLFxuICAgICAgICAgICAgY2xzOiAndWstYWN0aXZlJyxcbiAgICAgICAgICAgIGFuaW1hdGlvbjogMjUwXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgdG9nZ2xlczogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgYXR0ckl0ZW0gPSByZWYuYXR0ckl0ZW07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJCQoKFwiW1wiICsgKHRoaXMuYXR0ckl0ZW0pICsgXCJdLFtkYXRhLVwiICsgKHRoaXMuYXR0ckl0ZW0pICsgXCJdXCIpLCAkZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdGFyZ2V0OiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQodGFyZ2V0LCAkZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXCJbXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl0sW2RhdGEtXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl1cIik7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbHkoZS5jdXJyZW50KTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIGlmICh0aGlzLnNlbEFjdGl2ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBhY3RpdmVzID0gJCQodGhpcy5zZWxBY3RpdmUsIHRoaXMuJGVsKTtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlcy5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gdG9nZ2xlQ2xhc3MoZWwsIHRoaXMkMS5jbHMsIGluY2x1ZGVzKGFjdGl2ZXMsIGVsKSk7IH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogZnVuY3Rpb24oZGF0YSQkMSkge1xuXG4gICAgICAgICAgICB2YXIgdG9nZ2xlcyA9IGRhdGEkJDEudG9nZ2xlcztcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IGRhdGEkJDEuY2hpbGRyZW47XG4gICAgICAgICAgICBpZiAoaXNFcXVhbExpc3QodG9nZ2xlcywgdGhpcy50b2dnbGVzLCBmYWxzZSkgJiYgaXNFcXVhbExpc3QoY2hpbGRyZW4sIHRoaXMudGFyZ2V0LmNoaWxkcmVuLCBmYWxzZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRhdGEkJDEudG9nZ2xlcyA9IHRoaXMudG9nZ2xlcztcbiAgICAgICAgICAgIGRhdGEkJDEuY2hpbGRyZW4gPSB0aGlzLnRhcmdldC5jaGlsZHJlbjtcblxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh0aGlzLmdldFN0YXRlKCksIGZhbHNlKTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgYXBwbHk6IGZ1bmN0aW9uKGVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZShtZXJnZVN0YXRlKGVsLCB0aGlzLmF0dHJJdGVtLCB0aGlzLmdldFN0YXRlKCkpKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldFN0YXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZ2dsZXNcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgeyByZXR1cm4gaGFzQ2xhc3MoaXRlbSwgdGhpcyQxLmNscyk7IH0pXG4gICAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoZnVuY3Rpb24gKHN0YXRlLCBlbCkgeyByZXR1cm4gbWVyZ2VTdGF0ZShlbCwgdGhpcyQxLmF0dHJJdGVtLCBzdGF0ZSk7IH0sIHtmaWx0ZXI6IHsnJzogJyd9LCBzb3J0OiBbXX0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2V0U3RhdGU6IGZ1bmN0aW9uKHN0YXRlLCBhbmltYXRlJCQxKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgaWYgKCBhbmltYXRlJCQxID09PSB2b2lkIDAgKSBhbmltYXRlJCQxID0gdHJ1ZTtcblxuXG4gICAgICAgICAgICAgICAgc3RhdGUgPSBhc3NpZ24oe2ZpbHRlcjogeycnOiAnJ30sIHNvcnQ6IFtdfSwgc3RhdGUpO1xuXG4gICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ2JlZm9yZUZpbHRlcicsIFt0aGlzLCBzdGF0ZV0pO1xuXG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gdG9Ob2Rlcyh0aGlzLnRhcmdldC5jaGlsZHJlbik7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZXMuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHRvZ2dsZUNsYXNzKGVsLCB0aGlzJDEuY2xzLCBtYXRjaEZpbHRlcihlbCwgdGhpcyQxLmF0dHJJdGVtLCBzdGF0ZSkpOyB9KTtcblxuICAgICAgICAgICAgICAgIHZhciBhcHBseSQkMSA9IGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0b3IgPSBnZXRTZWxlY3RvcihzdGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGNzcyhlbCwgJ2Rpc3BsYXknLCBzZWxlY3RvciAmJiAhbWF0Y2hlcyhlbCwgc2VsZWN0b3IpID8gJ25vbmUnIDogJycpOyB9KTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gc3RhdGUuc29ydDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNvcnQgPSByZWZbMF07XG4gICAgICAgICAgICAgICAgICAgIHZhciBvcmRlciA9IHJlZlsxXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoc29ydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNvcnRlZCA9IHNvcnRJdGVtcyhjaGlsZHJlbiwgc29ydCwgb3JkZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0VxdWFsTGlzdChzb3J0ZWQsIGNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZC5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gYXBwZW5kKHRoaXMkMS50YXJnZXQsIGVsKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAoYW5pbWF0ZSQkMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFuaW1hdGUoYXBwbHkkJDEpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gdHJpZ2dlcih0aGlzJDEuJGVsLCAnYWZ0ZXJGaWx0ZXInLCBbdGhpcyQxXSk7IH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGFwcGx5JCQxKCk7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICdhZnRlckZpbHRlcicsIFt0aGlzXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldEZpbHRlcihlbCwgYXR0ciQkMSkge1xuICAgICAgICByZXR1cm4gcGFyc2VPcHRpb25zKGRhdGEoZWwsIGF0dHIkJDEpLCBbJ2ZpbHRlciddKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtZXJnZVN0YXRlKGVsLCBhdHRyJCQxLCBzdGF0ZSkge1xuXG4gICAgICAgIHRvTm9kZXMoZWwpLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgICB2YXIgZmlsdGVyQnkgPSBnZXRGaWx0ZXIoZWwsIGF0dHIkJDEpO1xuICAgICAgICAgICAgdmFyIGZpbHRlciQkMSA9IGZpbHRlckJ5LmZpbHRlcjtcbiAgICAgICAgICAgIHZhciBncm91cCA9IGZpbHRlckJ5Lmdyb3VwO1xuICAgICAgICAgICAgdmFyIHNvcnQgPSBmaWx0ZXJCeS5zb3J0O1xuICAgICAgICAgICAgdmFyIG9yZGVyID0gZmlsdGVyQnkub3JkZXI7IGlmICggb3JkZXIgPT09IHZvaWQgMCApIG9yZGVyID0gJ2FzYyc7XG5cbiAgICAgICAgICAgIGlmIChmaWx0ZXIkJDEgfHwgaXNVbmRlZmluZWQoc29ydCkpIHtcblxuICAgICAgICAgICAgICAgIGlmIChncm91cCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgc3RhdGUuZmlsdGVyWycnXTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuZmlsdGVyW2dyb3VwXSA9IGZpbHRlciQkMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5maWx0ZXIgPSB7Jyc6IGZpbHRlciQkMX07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQoc29ydCkpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5zb3J0ID0gW3NvcnQsIG9yZGVyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1hdGNoRmlsdGVyKGVsLCBhdHRyJCQxLCByZWYpIHtcbiAgICAgICAgdmFyIHN0YXRlRmlsdGVyID0gcmVmLmZpbHRlcjtcbiAgICAgICAgdmFyIHJlZl9zb3J0ID0gcmVmLnNvcnQ7XG4gICAgICAgIHZhciBzdGF0ZVNvcnQgPSByZWZfc29ydFswXTtcbiAgICAgICAgdmFyIHN0YXRlT3JkZXIgPSByZWZfc29ydFsxXTtcblxuICAgICAgICB2YXIgcmVmJDEgPSBnZXRGaWx0ZXIoZWwsIGF0dHIkJDEpO1xuICAgICAgICB2YXIgZmlsdGVyJCQxID0gcmVmJDEuZmlsdGVyO1xuICAgICAgICB2YXIgZ3JvdXAgPSByZWYkMS5ncm91cDsgaWYgKCBncm91cCA9PT0gdm9pZCAwICkgZ3JvdXAgPSAnJztcbiAgICAgICAgdmFyIHNvcnQgPSByZWYkMS5zb3J0O1xuICAgICAgICB2YXIgb3JkZXIgPSByZWYkMS5vcmRlcjsgaWYgKCBvcmRlciA9PT0gdm9pZCAwICkgb3JkZXIgPSAnYXNjJztcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4oXG4gICAgICAgICAgICAoZmlsdGVyJCQxIHx8IGlzVW5kZWZpbmVkKHNvcnQpKSAmJiBncm91cCBpbiBzdGF0ZUZpbHRlciAmJiAoZmlsdGVyJCQxID09PSBzdGF0ZUZpbHRlcltncm91cF0gfHwgaXNVbmRlZmluZWQoZmlsdGVyJCQxKSAmJiAhc3RhdGVGaWx0ZXJbZ3JvdXBdKVxuICAgICAgICAgICAgfHwgc3RhdGVTb3J0ICYmIHNvcnQgJiYgc3RhdGVTb3J0ID09PSBzb3J0ICYmIHN0YXRlT3JkZXIgPT09IG9yZGVyXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNFcXVhbExpc3QobGlzdEEsIGxpc3RCLCBzdHJpY3QpIHtcbiAgICAgICAgaWYgKCBzdHJpY3QgPT09IHZvaWQgMCApIHN0cmljdCA9IHRydWU7XG5cblxuICAgICAgICBsaXN0QSA9IHRvTm9kZXMobGlzdEEpO1xuICAgICAgICBsaXN0QiA9IHRvTm9kZXMobGlzdEIpO1xuXG4gICAgICAgIHJldHVybiBsaXN0QS5sZW5ndGggPT09IGxpc3RCLmxlbmd0aFxuICAgICAgICAgICAgJiYgbGlzdEEuZXZlcnkoZnVuY3Rpb24gKGVsLCBpKSB7IHJldHVybiBzdHJpY3QgPyBlbCA9PT0gbGlzdEJbaV0gOiB+bGlzdEIuaW5kZXhPZihlbCk7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNlbGVjdG9yKHJlZikge1xuICAgICAgICB2YXIgZmlsdGVyJCQxID0gcmVmLmZpbHRlcjtcblxuICAgICAgICB2YXIgc2VsZWN0b3IgPSAnJztcbiAgICAgICAgZWFjaChmaWx0ZXIkJDEsIGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gc2VsZWN0b3IgKz0gdmFsdWUgfHwgJyc7IH0pO1xuICAgICAgICByZXR1cm4gc2VsZWN0b3I7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc29ydEl0ZW1zKG5vZGVzLCBzb3J0LCBvcmRlcikge1xuICAgICAgICByZXR1cm4gdG9Ob2Rlcyhub2Rlcykuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gZGF0YShhLCBzb3J0KS5sb2NhbGVDb21wYXJlKGRhdGEoYiwgc29ydCkpICogKG9yZGVyID09PSAnYXNjJyB8fCAtMSk7IH0pO1xuICAgIH1cblxuICAgIHZhciBBbmltYXRpb25zID0ge1xuXG4gICAgICAgIHNsaWRlOiB7XG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKGRpcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZShkaXIgKiAtMTAwKX0sXG4gICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgpfVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBwZXJjZW50OiBmdW5jdGlvbihjdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZWQoY3VycmVudCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQsIGRpcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZShkaXIgKiAtMTAwICogcGVyY2VudCl9LFxuICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoZGlyICogMTAwICogKDEgLSBwZXJjZW50KSl9XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlZChlbCkge1xuICAgICAgICByZXR1cm4gTWF0aC5hYnMoY3NzKGVsLCAndHJhbnNmb3JtJykuc3BsaXQoJywnKVs0XSAvIGVsLm9mZnNldFdpZHRoKSB8fCAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZSh2YWx1ZSwgdW5pdCkge1xuICAgICAgICBpZiAoIHZhbHVlID09PSB2b2lkIDAgKSB2YWx1ZSA9IDA7XG4gICAgICAgIGlmICggdW5pdCA9PT0gdm9pZCAwICkgdW5pdCA9ICclJztcblxuICAgICAgICByZXR1cm4gKFwidHJhbnNsYXRlWChcIiArIHZhbHVlICsgKHZhbHVlID8gdW5pdCA6ICcnKSArIFwiKVwiKTsgLy8gY3VycmVudGx5IG5vdCB0cmFuc2xhdGUzZCB0byBzdXBwb3J0IElFLCB0cmFuc2xhdGUzZCB3aXRoaW4gdHJhbnNsYXRlM2QgZG9lcyBub3Qgd29yayB3aGlsZSB0cmFuc2l0aW9uaW5nXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2NhbGUzZCh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gKFwic2NhbGUzZChcIiArIHZhbHVlICsgXCIsIFwiICsgdmFsdWUgKyBcIiwgMSlcIik7XG4gICAgfVxuXG4gICAgdmFyIEFuaW1hdGlvbnMkMSA9IGFzc2lnbih7fSwgQW5pbWF0aW9ucywge1xuXG4gICAgICAgIGZhZGU6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge29wYWNpdHk6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMX1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAxIC0gY3NzKGN1cnJlbnQsICdvcGFjaXR5Jyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMSAtIHBlcmNlbnR9LFxuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogcGVyY2VudH1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgc2NhbGU6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge29wYWNpdHk6IDAsIHRyYW5zZm9ybTogc2NhbGUzZCgxIC0gLjIpfSxcbiAgICAgICAgICAgICAgICAgICAge29wYWNpdHk6IDEsIHRyYW5zZm9ybTogc2NhbGUzZCgxKX1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAxIC0gY3NzKGN1cnJlbnQsICdvcGFjaXR5Jyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMSAtIHBlcmNlbnQsIHRyYW5zZm9ybTogc2NhbGUzZCgxIC0gLjIgKiBwZXJjZW50KX0sXG4gICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiBwZXJjZW50LCB0cmFuc2Zvcm06IHNjYWxlM2QoMSAtIC4yICsgLjIgKiBwZXJjZW50KX1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gVHJhbnNpdGlvbmVyKHByZXYsIG5leHQsIGRpciwgcmVmKSB7XG4gICAgICAgIHZhciBhbmltYXRpb24gPSByZWYuYW5pbWF0aW9uO1xuICAgICAgICB2YXIgZWFzaW5nID0gcmVmLmVhc2luZztcblxuXG4gICAgICAgIHZhciBwZXJjZW50ID0gYW5pbWF0aW9uLnBlcmNlbnQ7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBhbmltYXRpb24udHJhbnNsYXRlO1xuICAgICAgICB2YXIgc2hvdyA9IGFuaW1hdGlvbi5zaG93OyBpZiAoIHNob3cgPT09IHZvaWQgMCApIHNob3cgPSBub29wO1xuICAgICAgICB2YXIgcHJvcHMgPSBzaG93KGRpcik7XG4gICAgICAgIHZhciBkZWZlcnJlZCA9IG5ldyBEZWZlcnJlZCgpO1xuXG4gICAgICAgIHJldHVybiB7XG5cbiAgICAgICAgICAgIGRpcjogZGlyLFxuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbihkdXJhdGlvbiwgcGVyY2VudCwgbGluZWFyKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgaWYgKCBwZXJjZW50ID09PSB2b2lkIDAgKSBwZXJjZW50ID0gMDtcblxuXG4gICAgICAgICAgICAgICAgdmFyIHRpbWluZyA9IGxpbmVhciA/ICdsaW5lYXInIDogZWFzaW5nO1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uIC09IE1hdGgucm91bmQoZHVyYXRpb24gKiBjbGFtcChwZXJjZW50LCAtMSwgMSkpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUocGVyY2VudCk7XG5cbiAgICAgICAgICAgICAgICB0cmlnZ2VyVXBkYXRlKG5leHQsICdpdGVtaW4nLCB7cGVyY2VudDogcGVyY2VudCwgZHVyYXRpb246IGR1cmF0aW9uLCB0aW1pbmc6IHRpbWluZywgZGlyOiBkaXJ9KTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyVXBkYXRlKHByZXYsICdpdGVtb3V0Jywge3BlcmNlbnQ6IDEgLSBwZXJjZW50LCBkdXJhdGlvbjogZHVyYXRpb24sIHRpbWluZzogdGltaW5nLCBkaXI6IGRpcn0pO1xuXG4gICAgICAgICAgICAgICAgUHJvbWlzZSQxLmFsbChbXG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQobmV4dCwgcHJvcHNbMV0sIGR1cmF0aW9uLCB0aW1pbmcpLFxuICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLnN0YXJ0KHByZXYsIHByb3BzWzBdLCBkdXJhdGlvbiwgdGltaW5nKVxuICAgICAgICAgICAgICAgIF0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH0sIG5vb3ApO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzdG9wOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gVHJhbnNpdGlvbi5zdG9wKFtuZXh0LCBwcmV2XSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKFtuZXh0LCBwcmV2XSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICByZXNldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBwcm9wc1swXSkge1xuICAgICAgICAgICAgICAgICAgICBjc3MoW25leHQsIHByZXZdLCBwcm9wLCAnJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZm9yd2FyZDogZnVuY3Rpb24oZHVyYXRpb24sIHBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIHBlcmNlbnQgPT09IHZvaWQgMCApIHBlcmNlbnQgPSB0aGlzLnBlcmNlbnQoKTtcblxuICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKFtuZXh0LCBwcmV2XSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvdyhkdXJhdGlvbiwgcGVyY2VudCwgdHJ1ZSk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24ocGVyY2VudCkge1xuXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHByb3BzID0gdHJhbnNsYXRlKHBlcmNlbnQsIGRpcik7XG4gICAgICAgICAgICAgICAgY3NzKG5leHQsIHByb3BzWzFdKTtcbiAgICAgICAgICAgICAgICBjc3MocHJldiwgcHJvcHNbMF0pO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJVcGRhdGUobmV4dCwgJ2l0ZW10cmFuc2xhdGVpbicsIHtwZXJjZW50OiBwZXJjZW50LCBkaXI6IGRpcn0pO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJVcGRhdGUocHJldiwgJ2l0ZW10cmFuc2xhdGVvdXQnLCB7cGVyY2VudDogMSAtIHBlcmNlbnQsIGRpcjogZGlyfSk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBlcmNlbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwZXJjZW50KHByZXYgfHwgbmV4dCwgbmV4dCwgZGlyKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldERpc3RhbmNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldi5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9O1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJpZ2dlclVwZGF0ZShlbCwgdHlwZSwgZGF0YSQkMSkge1xuICAgICAgICB0cmlnZ2VyKGVsLCBjcmVhdGVFdmVudCh0eXBlLCBmYWxzZSwgZmFsc2UsIGRhdGEkJDEpKTtcbiAgICB9XG5cbiAgICB2YXIgU2xpZGVyQXV0b3BsYXkgPSB7XG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGF1dG9wbGF5OiBCb29sZWFuLFxuICAgICAgICAgICAgYXV0b3BsYXlJbnRlcnZhbDogTnVtYmVyLFxuICAgICAgICAgICAgcGF1c2VPbkhvdmVyOiBCb29sZWFuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgYXV0b3BsYXk6IGZhbHNlLFxuICAgICAgICAgICAgYXV0b3BsYXlJbnRlcnZhbDogNzAwMCxcbiAgICAgICAgICAgIHBhdXNlT25Ib3ZlcjogdHJ1ZVxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0QXV0b3BsYXkoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBkaXNjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy5zdG9wQXV0b3BsYXkoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ3Zpc2liaWxpdHljaGFuZ2UnLFxuXG4gICAgICAgICAgICAgICAgZWw6IGRvY3VtZW50LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5oaWRkZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcEF1dG9wbGF5KCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0QXV0b3BsYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogcG9pbnRlckRvd24sXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogJ3N0b3BBdXRvcGxheSdcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ21vdXNlZW50ZXInLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXV0b3BsYXk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzSG92ZXJpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ21vdXNlbGVhdmUnLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXV0b3BsYXk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzSG92ZXJpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc3RhcnRBdXRvcGxheTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcEF1dG9wbGF5KCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hdXRvcGxheSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludGVydmFsID0gc2V0SW50ZXJ2YWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7IHJldHVybiAhKHRoaXMkMS5pc0hvdmVyaW5nICYmIHRoaXMkMS5wYXVzZU9uSG92ZXIpICYmICF0aGlzJDEuc3RhY2subGVuZ3RoICYmIHRoaXMkMS5zaG93KCduZXh0Jyk7IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dG9wbGF5SW50ZXJ2YWxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHN0b3BBdXRvcGxheTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaW50ZXJ2YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBTbGlkZXJEcmFnID0ge1xuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHRocmVzaG9sZDogMTAsXG4gICAgICAgICAgICBwcmV2ZW50Q2F0Y2g6IGZhbHNlXG4gICAgICAgIH0sXG5cbiAgICAgICAgaW5pdDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICBbJ3N0YXJ0JywgJ21vdmUnLCAnZW5kJ10uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgZm4gPSB0aGlzJDFba2V5XTtcbiAgICAgICAgICAgICAgICB0aGlzJDFba2V5XSA9IGZ1bmN0aW9uIChlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9IGdldFBvcyQxKGUpLnggKiAoaXNSdGwgPyAtMSA6IDEpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS5wcmV2UG9zID0gcG9zICE9PSB0aGlzJDEucG9zID8gdGhpcyQxLnBvcyA6IHRoaXMkMS5wcmV2UG9zO1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEucG9zID0gcG9zO1xuXG4gICAgICAgICAgICAgICAgICAgIGZuKGUpO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6IHBvaW50ZXJEb3duLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zbGlkZXNTZWxlY3RvcjtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNUb3VjaChlKSAmJiBoYXNUZXh0Tm9kZXNPbmx5KGUudGFyZ2V0KVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgZS5idXR0b24gPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLmxlbmd0aCA8IDJcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRoaXMucHJldmVudENhdGNoXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydChlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnZHJhZ3N0YXJ0JyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnID0gdGhpcy5wb3M7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdHJhbnNpdGlvbmVyKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wZXJjZW50ID0gdGhpcy5fdHJhbnNpdGlvbmVyLnBlcmNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnICs9IHRoaXMuX3RyYW5zaXRpb25lci5nZXREaXN0YW5jZSgpICogdGhpcy5wZXJjZW50ICogdGhpcy5kaXI7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNpdGlvbmVyLnRyYW5zbGF0ZSh0aGlzLnBlcmNlbnQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2l0aW9uZXIuY2FuY2VsKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjayA9IFtdO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2SW5kZXggPSB0aGlzLmluZGV4O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudW5iaW5kTW92ZSA9IG9uKGRvY3VtZW50LCBwb2ludGVyTW92ZSwgdGhpcy5tb3ZlLCB7Y2FwdHVyZTogdHJ1ZSwgcGFzc2l2ZTogZmFsc2V9KTtcbiAgICAgICAgICAgICAgICBvbih3aW5kb3csICdzY3JvbGwnLCB0aGlzLnVuYmluZE1vdmUpO1xuICAgICAgICAgICAgICAgIG9uKGRvY3VtZW50LCBwb2ludGVyVXAsIHRoaXMuZW5kLCB0cnVlKTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgbW92ZTogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgZGlzdGFuY2UgPSB0aGlzLnBvcyAtIHRoaXMuZHJhZztcblxuICAgICAgICAgICAgICAgIGlmIChkaXN0YW5jZSA9PT0gMCB8fCB0aGlzLnByZXZQb3MgPT09IHRoaXMucG9zIHx8ICF0aGlzLmRyYWdnaW5nICYmIE1hdGguYWJzKGRpc3RhbmNlKSA8IHRoaXMudGhyZXNob2xkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBlLmNhbmNlbGFibGUgJiYgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXIgPSAoZGlzdGFuY2UgPCAwID8gMSA6IC0xKTtcblxuICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHZhciBzbGlkZXMgPSByZWYuc2xpZGVzO1xuICAgICAgICAgICAgICAgIHZhciByZWYkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmFyIHByZXZJbmRleCA9IHJlZiQxLnByZXZJbmRleDtcbiAgICAgICAgICAgICAgICB2YXIgZGlzID0gTWF0aC5hYnMoZGlzdGFuY2UpO1xuICAgICAgICAgICAgICAgIHZhciBuZXh0SW5kZXggPSB0aGlzLmdldEluZGV4KHByZXZJbmRleCArIHRoaXMuZGlyLCBwcmV2SW5kZXgpO1xuICAgICAgICAgICAgICAgIHZhciB3aWR0aCQkMSA9IHRoaXMuX2dldERpc3RhbmNlKHByZXZJbmRleCwgbmV4dEluZGV4KSB8fCBzbGlkZXNbcHJldkluZGV4XS5vZmZzZXRXaWR0aDtcblxuICAgICAgICAgICAgICAgIHdoaWxlIChuZXh0SW5kZXggIT09IHByZXZJbmRleCAmJiBkaXMgPiB3aWR0aCQkMSkge1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS5kcmFnIC09IHdpZHRoJCQxICogdGhpcyQxLmRpcjtcblxuICAgICAgICAgICAgICAgICAgICBwcmV2SW5kZXggPSBuZXh0SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIGRpcyAtPSB3aWR0aCQkMTtcbiAgICAgICAgICAgICAgICAgICAgbmV4dEluZGV4ID0gdGhpcyQxLmdldEluZGV4KHByZXZJbmRleCArIHRoaXMkMS5kaXIsIHByZXZJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoJCQxID0gdGhpcyQxLl9nZXREaXN0YW5jZShwcmV2SW5kZXgsIG5leHRJbmRleCkgfHwgc2xpZGVzW3ByZXZJbmRleF0ub2Zmc2V0V2lkdGg7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnBlcmNlbnQgPSBkaXMgLyB3aWR0aCQkMTtcblxuICAgICAgICAgICAgICAgIHZhciBwcmV2ID0gc2xpZGVzW3ByZXZJbmRleF07XG4gICAgICAgICAgICAgICAgdmFyIG5leHQgPSBzbGlkZXNbbmV4dEluZGV4XTtcbiAgICAgICAgICAgICAgICB2YXIgY2hhbmdlZCA9IHRoaXMuaW5kZXggIT09IG5leHRJbmRleDtcbiAgICAgICAgICAgICAgICB2YXIgZWRnZSA9IHByZXZJbmRleCA9PT0gbmV4dEluZGV4O1xuXG4gICAgICAgICAgICAgICAgdmFyIGl0ZW1TaG93bjtcblxuICAgICAgICAgICAgICAgIFt0aGlzLmluZGV4LCB0aGlzLnByZXZJbmRleF0uZmlsdGVyKGZ1bmN0aW9uIChpKSB7IHJldHVybiAhaW5jbHVkZXMoW25leHRJbmRleCwgcHJldkluZGV4XSwgaSk7IH0pLmZvckVhY2goZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcihzbGlkZXNbaV0sICdpdGVtaGlkZGVuJywgW3RoaXMkMV0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChlZGdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtU2hvd24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnByZXZJbmRleCA9IHByZXZJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbmRleCA9PT0gcHJldkluZGV4ICYmIHRoaXMucHJldkluZGV4ICE9PSBwcmV2SW5kZXggfHwgaXRlbVNob3duKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIoc2xpZGVzW3RoaXMuaW5kZXhdLCAnaXRlbXNob3duJywgW3RoaXNdKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZJbmRleCA9IHByZXZJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleCA9IG5leHRJbmRleDtcblxuICAgICAgICAgICAgICAgICAgICAhZWRnZSAmJiB0cmlnZ2VyKHByZXYsICdiZWZvcmVpdGVtaGlkZScsIFt0aGlzXSk7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIobmV4dCwgJ2JlZm9yZWl0ZW1zaG93JywgW3RoaXNdKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2l0aW9uZXIgPSB0aGlzLl90cmFuc2xhdGUoTWF0aC5hYnModGhpcy5wZXJjZW50KSwgcHJldiwgIWVkZ2UgJiYgbmV4dCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICAhZWRnZSAmJiB0cmlnZ2VyKHByZXYsICdpdGVtaGlkZScsIFt0aGlzXSk7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIobmV4dCwgJ2l0ZW1zaG93JywgW3RoaXNdKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGVuZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBvZmYod2luZG93LCAnc2Nyb2xsJywgdGhpcy51bmJpbmRNb3ZlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVuYmluZE1vdmUoKTtcbiAgICAgICAgICAgICAgICBvZmYoZG9jdW1lbnQsIHBvaW50ZXJVcCwgdGhpcy5lbmQsIHRydWUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ2dpbmcpIHtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdnaW5nID0gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbmRleCA9PT0gdGhpcy5wcmV2SW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGVyY2VudCA9IDEgLSB0aGlzLnBlcmNlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpciAqPSAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nob3coZmFsc2UsIHRoaXMuaW5kZXgsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNpdGlvbmVyID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRpckNoYW5nZSA9IChpc1J0bCA/IHRoaXMuZGlyICogKGlzUnRsID8gMSA6IC0xKSA6IHRoaXMuZGlyKSA8IDAgPT09IHRoaXMucHJldlBvcyA+IHRoaXMucG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleCA9IGRpckNoYW5nZSA/IHRoaXMuaW5kZXggOiB0aGlzLnByZXZJbmRleDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpckNoYW5nZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGVyY2VudCA9IDEgLSB0aGlzLnBlcmNlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyh0aGlzLmRpciA+IDAgJiYgIWRpckNoYW5nZSB8fCB0aGlzLmRpciA8IDAgJiYgZGlyQ2hhbmdlID8gJ25leHQnIDogJ3ByZXZpb3VzJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBwcmV2ZW50Q2xpY2soKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ1xuICAgICAgICAgICAgICAgICAgICA9IHRoaXMucGVyY2VudFxuICAgICAgICAgICAgICAgICAgICA9IG51bGw7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaGFzVGV4dE5vZGVzT25seShlbCkge1xuICAgICAgICByZXR1cm4gIWVsLmNoaWxkcmVuLmxlbmd0aCAmJiBlbC5jaGlsZE5vZGVzLmxlbmd0aDtcbiAgICB9XG5cbiAgICB2YXIgU2xpZGVyTmF2ID0ge1xuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHNlbE5hdjogZmFsc2VcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBuYXY6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNlbE5hdiA9IHJlZi5zZWxOYXY7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJChzZWxOYXYsICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBuYXZJdGVtU2VsZWN0b3I6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBhdHRySXRlbSA9IHJlZi5hdHRySXRlbTtcblxuICAgICAgICAgICAgICAgIHJldHVybiAoXCJbXCIgKyBhdHRySXRlbSArIFwiXSxbZGF0YS1cIiArIGF0dHJJdGVtICsgXCJdXCIpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgbmF2SXRlbXM6IGZ1bmN0aW9uKF8sICRlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAkJCh0aGlzLm5hdkl0ZW1TZWxlY3RvciwgJGVsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubmF2ICYmIHRoaXMubGVuZ3RoICE9PSB0aGlzLm5hdi5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwodGhpcy5uYXYsIHRoaXMuc2xpZGVzLm1hcChmdW5jdGlvbiAoXywgaSkgeyByZXR1cm4gKFwiPGxpIFwiICsgKHRoaXMkMS5hdHRySXRlbSkgKyBcIj1cXFwiXCIgKyBpICsgXCJcXFwiPjxhIGhyZWY9XFxcIiNcXFwiPjwvYT48L2xpPlwiKTsgfSkuam9pbignJykpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoJCQodGhpcy5uYXZJdGVtU2VsZWN0b3IsIHRoaXMuJGVsKS5jb25jYXQodGhpcy5uYXYpLCAndWstaGlkZGVuJywgIXRoaXMubWF4SW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTmF2KCk7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm5hdkl0ZW1TZWxlY3RvcjtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGUuY3VycmVudC5ibHVyKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyhkYXRhKGUuY3VycmVudCwgdGhpcy5hdHRySXRlbSkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2l0ZW1zaG93JyxcbiAgICAgICAgICAgICAgICBoYW5kbGVyOiAndXBkYXRlTmF2J1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHVwZGF0ZU5hdjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5nZXRWYWxpZEluZGV4KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXZJdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChlbCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBjbWQgPSBkYXRhKGVsLCB0aGlzJDEuYXR0ckl0ZW0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCB0aGlzJDEuY2xzQWN0aXZlLCB0b051bWJlcihjbWQpID09PSBpKTtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoZWwsICd1ay1pbnZpc2libGUnLCB0aGlzJDEuZmluaXRlICYmIChjbWQgPT09ICdwcmV2aW91cycgJiYgaSA9PT0gMCB8fCBjbWQgPT09ICduZXh0JyAmJiBpID49IHRoaXMkMS5tYXhJbmRleCkpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBTbGlkZXIgPSB7XG5cbiAgICAgICAgYXR0cnM6IHRydWUsXG5cbiAgICAgICAgbWl4aW5zOiBbU2xpZGVyQXV0b3BsYXksIFNsaWRlckRyYWcsIFNsaWRlck5hdl0sXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGNsc0FjdGl2YXRlZDogQm9vbGVhbixcbiAgICAgICAgICAgIGVhc2luZzogU3RyaW5nLFxuICAgICAgICAgICAgaW5kZXg6IE51bWJlcixcbiAgICAgICAgICAgIGZpbml0ZTogQm9vbGVhbixcbiAgICAgICAgICAgIHZlbG9jaXR5OiBOdW1iZXJcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiBmdW5jdGlvbiAoKSB7IHJldHVybiAoe1xuICAgICAgICAgICAgZWFzaW5nOiAnZWFzZScsXG4gICAgICAgICAgICBmaW5pdGU6IGZhbHNlLFxuICAgICAgICAgICAgdmVsb2NpdHk6IDEsXG4gICAgICAgICAgICBpbmRleDogMCxcbiAgICAgICAgICAgIHN0YWNrOiBbXSxcbiAgICAgICAgICAgIHBlcmNlbnQ6IDAsXG4gICAgICAgICAgICBjbHNBY3RpdmU6ICd1ay1hY3RpdmUnLFxuICAgICAgICAgICAgY2xzQWN0aXZhdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIFRyYW5zaXRpb25lcjogZmFsc2UsXG4gICAgICAgICAgICB0cmFuc2l0aW9uT3B0aW9uczoge31cbiAgICAgICAgfSk7IH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgZHVyYXRpb246IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZlbG9jaXR5ID0gcmVmLnZlbG9jaXR5O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNwZWVkVXAoJGVsLm9mZnNldFdpZHRoIC8gdmVsb2NpdHkpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgbGVuZ3RoOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zbGlkZXMubGVuZ3RoO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgbGlzdDogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgc2VsTGlzdCA9IHJlZi5zZWxMaXN0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoc2VsTGlzdCwgJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIG1heEluZGV4OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2xpZGVzU2VsZWN0b3I6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBzZWxMaXN0ID0gcmVmLnNlbExpc3Q7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKHNlbExpc3QgKyBcIiA+ICpcIik7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzbGlkZXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b05vZGVzKHRoaXMubGlzdC5jaGlsZHJlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IHtcblxuICAgICAgICAgICAgaXRlbXNob3duOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiR1cGRhdGUodGhpcy5saXN0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oaW5kZXgkJDEsIGZvcmNlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgaWYgKCBmb3JjZSA9PT0gdm9pZCAwICkgZm9yY2UgPSBmYWxzZTtcblxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ2dpbmcgfHwgIXRoaXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcztcbiAgICAgICAgICAgICAgICB2YXIgc3RhY2sgPSByZWYuc3RhY2s7XG4gICAgICAgICAgICAgICAgdmFyIHF1ZXVlSW5kZXggPSBmb3JjZSA/IDAgOiBzdGFjay5sZW5ndGg7XG4gICAgICAgICAgICAgICAgdmFyIHJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBzdGFjay5zcGxpY2UocXVldWVJbmRleCwgMSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YWNrLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnNob3coc3RhY2suc2hpZnQoKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgc3RhY2tbZm9yY2UgPyAndW5zaGlmdCcgOiAncHVzaCddKGluZGV4JCQxKTtcblxuICAgICAgICAgICAgICAgIGlmICghZm9yY2UgJiYgc3RhY2subGVuZ3RoID4gMSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFjay5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25lci5mb3J3YXJkKE1hdGgubWluKHRoaXMuZHVyYXRpb24sIDIwMCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBwcmV2SW5kZXggPSB0aGlzLmluZGV4O1xuICAgICAgICAgICAgICAgIHZhciBwcmV2ID0gaGFzQ2xhc3ModGhpcy5zbGlkZXMsIHRoaXMuY2xzQWN0aXZlKSAmJiB0aGlzLnNsaWRlc1twcmV2SW5kZXhdO1xuICAgICAgICAgICAgICAgIHZhciBuZXh0SW5kZXggPSB0aGlzLmdldEluZGV4KGluZGV4JCQxLCB0aGlzLmluZGV4KTtcbiAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IHRoaXMuc2xpZGVzW25leHRJbmRleF07XG5cbiAgICAgICAgICAgICAgICBpZiAocHJldiA9PT0gbmV4dCkge1xuICAgICAgICAgICAgICAgICAgICByZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5kaXIgPSBnZXREaXJlY3Rpb24oaW5kZXgkJDEsIHByZXZJbmRleCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2SW5kZXggPSBwcmV2SW5kZXg7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmRleCA9IG5leHRJbmRleDtcblxuICAgICAgICAgICAgICAgIHByZXYgJiYgdHJpZ2dlcihwcmV2LCAnYmVmb3JlaXRlbWhpZGUnLCBbdGhpc10pO1xuICAgICAgICAgICAgICAgIGlmICghdHJpZ2dlcihuZXh0LCAnYmVmb3JlaXRlbXNob3cnLCBbdGhpcywgcHJldl0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZXggPSB0aGlzLnByZXZJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgcmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBwcm9taXNlID0gdGhpcy5fc2hvdyhwcmV2LCBuZXh0LCBmb3JjZSkudGhlbihmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgcHJldiAmJiB0cmlnZ2VyKHByZXYsICdpdGVtaGlkZGVuJywgW3RoaXMkMV0pO1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKG5leHQsICdpdGVtc2hvd24nLCBbdGhpcyQxXSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhc3Rkb20ud3JpdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YWNrLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuc2hvdyhzdGFjay5zaGlmdCgpLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuX3RyYW5zaXRpb25lciA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcHJldiAmJiB0cmlnZ2VyKHByZXYsICdpdGVtaGlkZScsIFt0aGlzXSk7XG4gICAgICAgICAgICAgICAgdHJpZ2dlcihuZXh0LCAnaXRlbXNob3cnLCBbdGhpc10pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldEluZGV4OiBmdW5jdGlvbihpbmRleCQkMSwgcHJldikge1xuICAgICAgICAgICAgICAgIGlmICggaW5kZXgkJDEgPT09IHZvaWQgMCApIGluZGV4JCQxID0gdGhpcy5pbmRleDtcbiAgICAgICAgICAgICAgICBpZiAoIHByZXYgPT09IHZvaWQgMCApIHByZXYgPSB0aGlzLmluZGV4O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsYW1wKGdldEluZGV4KGluZGV4JCQxLCB0aGlzLnNsaWRlcywgcHJldiwgdGhpcy5maW5pdGUpLCAwLCB0aGlzLm1heEluZGV4KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldFZhbGlkSW5kZXg6IGZ1bmN0aW9uKGluZGV4JCQxLCBwcmV2SW5kZXgpIHtcbiAgICAgICAgICAgICAgICBpZiAoIGluZGV4JCQxID09PSB2b2lkIDAgKSBpbmRleCQkMSA9IHRoaXMuaW5kZXg7XG4gICAgICAgICAgICAgICAgaWYgKCBwcmV2SW5kZXggPT09IHZvaWQgMCApIHByZXZJbmRleCA9IHRoaXMucHJldkluZGV4O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SW5kZXgoaW5kZXgkJDEsIHByZXZJbmRleCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfc2hvdzogZnVuY3Rpb24ocHJldiwgbmV4dCwgZm9yY2UpIHtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25lciA9IHRoaXMuX2dldFRyYW5zaXRpb25lcihcbiAgICAgICAgICAgICAgICAgICAgcHJldixcbiAgICAgICAgICAgICAgICAgICAgbmV4dCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXIsXG4gICAgICAgICAgICAgICAgICAgIGFzc2lnbih7XG4gICAgICAgICAgICAgICAgICAgICAgICBlYXNpbmc6IGZvcmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBuZXh0Lm9mZnNldFdpZHRoIDwgNjAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2N1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KScgLyogZWFzZU91dFF1YWQgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnY3ViaWMtYmV6aWVyKDAuMTY1LCAwLjg0LCAwLjQ0LCAxKScgLyogZWFzZU91dFF1YXJ0ICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmVhc2luZ1xuICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLnRyYW5zaXRpb25PcHRpb25zKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWZvcmNlICYmICFwcmV2KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25lci50cmFuc2xhdGUoMSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLnN0YWNrO1xuICAgICAgICAgICAgICAgIHZhciBsZW5ndGggPSByZWYubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl90cmFuc2l0aW9uZXJbbGVuZ3RoID4gMSA/ICdmb3J3YXJkJyA6ICdzaG93J10obGVuZ3RoID4gMSA/IE1hdGgubWluKHRoaXMuZHVyYXRpb24sIDc1ICsgNzUgLyAobGVuZ3RoIC0gMSkpIDogdGhpcy5kdXJhdGlvbiwgdGhpcy5wZXJjZW50KTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2dldERpc3RhbmNlOiBmdW5jdGlvbihwcmV2LCBuZXh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyB0aGlzLl9nZXRUcmFuc2l0aW9uZXIocHJldiwgcHJldiAhPT0gbmV4dCAmJiBuZXh0KS5nZXREaXN0YW5jZSgpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3RyYW5zbGF0ZTogZnVuY3Rpb24ocGVyY2VudCwgcHJldiwgbmV4dCkge1xuICAgICAgICAgICAgICAgIGlmICggcHJldiA9PT0gdm9pZCAwICkgcHJldiA9IHRoaXMucHJldkluZGV4O1xuICAgICAgICAgICAgICAgIGlmICggbmV4dCA9PT0gdm9pZCAwICkgbmV4dCA9IHRoaXMuaW5kZXg7XG5cbiAgICAgICAgICAgICAgICB2YXIgdHJhbnNpdGlvbmVyID0gdGhpcy5fZ2V0VHJhbnNpdGlvbmVyKHByZXYgIT09IG5leHQgPyBwcmV2IDogZmFsc2UsIG5leHQpO1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb25lci50cmFuc2xhdGUocGVyY2VudCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zaXRpb25lcjtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9nZXRUcmFuc2l0aW9uZXI6IGZ1bmN0aW9uKHByZXYsIG5leHQsIGRpciwgb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIGlmICggcHJldiA9PT0gdm9pZCAwICkgcHJldiA9IHRoaXMucHJldkluZGV4O1xuICAgICAgICAgICAgICAgIGlmICggbmV4dCA9PT0gdm9pZCAwICkgbmV4dCA9IHRoaXMuaW5kZXg7XG4gICAgICAgICAgICAgICAgaWYgKCBkaXIgPT09IHZvaWQgMCApIGRpciA9IHRoaXMuZGlyIHx8IDE7XG4gICAgICAgICAgICAgICAgaWYgKCBvcHRpb25zID09PSB2b2lkIDAgKSBvcHRpb25zID0gdGhpcy50cmFuc2l0aW9uT3B0aW9ucztcblxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgdGhpcy5UcmFuc2l0aW9uZXIoXG4gICAgICAgICAgICAgICAgICAgIGlzTnVtYmVyKHByZXYpID8gdGhpcy5zbGlkZXNbcHJldl0gOiBwcmV2LFxuICAgICAgICAgICAgICAgICAgICBpc051bWJlcihuZXh0KSA/IHRoaXMuc2xpZGVzW25leHRdIDogbmV4dCxcbiAgICAgICAgICAgICAgICAgICAgZGlyICogKGlzUnRsID8gLTEgOiAxKSxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uc1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldERpcmVjdGlvbihpbmRleCQkMSwgcHJldkluZGV4KSB7XG4gICAgICAgIHJldHVybiBpbmRleCQkMSA9PT0gJ25leHQnXG4gICAgICAgICAgICA/IDFcbiAgICAgICAgICAgIDogaW5kZXgkJDEgPT09ICdwcmV2aW91cydcbiAgICAgICAgICAgICAgICA/IC0xXG4gICAgICAgICAgICAgICAgOiBpbmRleCQkMSA8IHByZXZJbmRleFxuICAgICAgICAgICAgICAgICAgICA/IC0xXG4gICAgICAgICAgICAgICAgICAgIDogMTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzcGVlZFVwKHgpIHtcbiAgICAgICAgcmV0dXJuIC41ICogeCArIDMwMDsgLy8gcGFyYWJvbGEgdGhyb3VnaCAoNDAwLDUwMDsgNjAwLDYwMDsgMTgwMCwxMjAwKVxuICAgIH1cblxuICAgIHZhciBTbGlkZXNob3cgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbU2xpZGVyXSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgYW5pbWF0aW9uOiBTdHJpbmdcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBhbmltYXRpb246ICdzbGlkZScsXG4gICAgICAgICAgICBjbHNBY3RpdmF0ZWQ6ICd1ay10cmFuc2l0aW9uLWFjdGl2ZScsXG4gICAgICAgICAgICBBbmltYXRpb25zOiBBbmltYXRpb25zLFxuICAgICAgICAgICAgVHJhbnNpdGlvbmVyOiBUcmFuc2l0aW9uZXJcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBhbmltYXRpb246IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBhbmltYXRpb24gPSByZWYuYW5pbWF0aW9uO1xuICAgICAgICAgICAgICAgIHZhciBBbmltYXRpb25zJCQxID0gcmVmLkFuaW1hdGlvbnM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gYXNzaWduKGFuaW1hdGlvbiBpbiBBbmltYXRpb25zJCQxID8gQW5pbWF0aW9ucyQkMVthbmltYXRpb25dIDogQW5pbWF0aW9ucyQkMS5zbGlkZSwge25hbWU6IGFuaW1hdGlvbn0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdHJhbnNpdGlvbk9wdGlvbnM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7YW5pbWF0aW9uOiB0aGlzLmFuaW1hdGlvbn07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IHtcblxuICAgICAgICAgICAgJ2l0ZW1zaG93IGl0ZW1oaWRlIGl0ZW1zaG93biBpdGVtaGlkZGVuJzogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICB0aGlzLiR1cGRhdGUodGFyZ2V0KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGl0ZW1zaG93OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBpc051bWJlcih0aGlzLnByZXZJbmRleCkgJiYgZmFzdGRvbS5mbHVzaCgpOyAvLyBpT1MgMTArIHdpbGwgaG9ub3IgdGhlIHZpZGVvLnBsYXkgb25seSBpZiBjYWxsZWQgZnJvbSBhIGdlc3R1cmUgaGFuZGxlclxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgYmVmb3JlaXRlbXNob3c6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgYWRkQ2xhc3ModGFyZ2V0LCB0aGlzLmNsc0FjdGl2ZSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpdGVtc2hvd246IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgYWRkQ2xhc3ModGFyZ2V0LCB0aGlzLmNsc0FjdGl2YXRlZCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpdGVtaGlkZGVuOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRhcmdldCwgdGhpcy5jbHNBY3RpdmUsIHRoaXMuY2xzQWN0aXZhdGVkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIExpZ2h0Ym94UGFuZWwgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ29udGFpbmVyLCBNb2RhbCwgVG9nZ2xhYmxlLCBTbGlkZXNob3ddLFxuXG4gICAgICAgIGZ1bmN0aW9uYWw6IHRydWUsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGRlbGF5Q29udHJvbHM6IE51bWJlcixcbiAgICAgICAgICAgIHByZWxvYWQ6IE51bWJlcixcbiAgICAgICAgICAgIHZpZGVvQXV0b3BsYXk6IEJvb2xlYW4sXG4gICAgICAgICAgICB0ZW1wbGF0ZTogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YTogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHtcbiAgICAgICAgICAgIHByZWxvYWQ6IDEsXG4gICAgICAgICAgICB2aWRlb0F1dG9wbGF5OiBmYWxzZSxcbiAgICAgICAgICAgIGRlbGF5Q29udHJvbHM6IDMwMDAsXG4gICAgICAgICAgICBpdGVtczogW10sXG4gICAgICAgICAgICBjbHM6ICd1ay1vcGVuJyxcbiAgICAgICAgICAgIGNsc1BhZ2U6ICd1ay1saWdodGJveC1wYWdlJyxcbiAgICAgICAgICAgIHNlbExpc3Q6ICcudWstbGlnaHRib3gtaXRlbXMnLFxuICAgICAgICAgICAgYXR0ckl0ZW06ICd1ay1saWdodGJveC1pdGVtJyxcbiAgICAgICAgICAgIHNlbENsb3NlOiAnLnVrLWNsb3NlLWxhcmdlJyxcbiAgICAgICAgICAgIHBhdXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgICAgICAgICB2ZWxvY2l0eTogMixcbiAgICAgICAgICAgIEFuaW1hdGlvbnM6IEFuaW1hdGlvbnMkMSxcbiAgICAgICAgICAgIHRlbXBsYXRlOiBcIjxkaXYgY2xhc3M9XFxcInVrLWxpZ2h0Ym94IHVrLW92ZXJmbG93LWhpZGRlblxcXCI+IDx1bCBjbGFzcz1cXFwidWstbGlnaHRib3gtaXRlbXNcXFwiPjwvdWw+IDxkaXYgY2xhc3M9XFxcInVrLWxpZ2h0Ym94LXRvb2xiYXIgdWstcG9zaXRpb24tdG9wIHVrLXRleHQtcmlnaHQgdWstdHJhbnNpdGlvbi1zbGlkZS10b3AgdWstdHJhbnNpdGlvbi1vcGFxdWVcXFwiPiA8YnV0dG9uIGNsYXNzPVxcXCJ1ay1saWdodGJveC10b29sYmFyLWljb24gdWstY2xvc2UtbGFyZ2VcXFwiIHR5cGU9XFxcImJ1dHRvblxcXCIgdWstY2xvc2U+PC9idXR0b24+IDwvZGl2PiA8YSBjbGFzcz1cXFwidWstbGlnaHRib3gtYnV0dG9uIHVrLXBvc2l0aW9uLWNlbnRlci1sZWZ0IHVrLXBvc2l0aW9uLW1lZGl1bSB1ay10cmFuc2l0aW9uLWZhZGVcXFwiIGhyZWY9XFxcIiNcXFwiIHVrLXNsaWRlbmF2LXByZXZpb3VzIHVrLWxpZ2h0Ym94LWl0ZW09XFxcInByZXZpb3VzXFxcIj48L2E+IDxhIGNsYXNzPVxcXCJ1ay1saWdodGJveC1idXR0b24gdWstcG9zaXRpb24tY2VudGVyLXJpZ2h0IHVrLXBvc2l0aW9uLW1lZGl1bSB1ay10cmFuc2l0aW9uLWZhZGVcXFwiIGhyZWY9XFxcIiNcXFwiIHVrLXNsaWRlbmF2LW5leHQgdWstbGlnaHRib3gtaXRlbT1cXFwibmV4dFxcXCI+PC9hPiA8ZGl2IGNsYXNzPVxcXCJ1ay1saWdodGJveC10b29sYmFyIHVrLWxpZ2h0Ym94LWNhcHRpb24gdWstcG9zaXRpb24tYm90dG9tIHVrLXRleHQtY2VudGVyIHVrLXRyYW5zaXRpb24tc2xpZGUtYm90dG9tIHVrLXRyYW5zaXRpb24tb3BhcXVlXFxcIj48L2Rpdj4gPC9kaXY+XCJcbiAgICAgICAgfSk7IH0sXG5cbiAgICAgICAgY3JlYXRlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICB0aGlzLiRtb3VudChhcHBlbmQodGhpcy5jb250YWluZXIsIHRoaXMudGVtcGxhdGUpKTtcblxuICAgICAgICAgICAgdGhpcy5jYXB0aW9uID0gJCgnLnVrLWxpZ2h0Ym94LWNhcHRpb24nLCB0aGlzLiRlbCk7XG5cbiAgICAgICAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoKSB7IHJldHVybiBhcHBlbmQodGhpcyQxLmxpc3QsICc8bGk+PC9saT4nKTsgfSk7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogKHBvaW50ZXJNb3ZlICsgXCIgXCIgKyBwb2ludGVyRG93biArIFwiIGtleWRvd25cIiksXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiAnc2hvd0NvbnRyb2xzJ1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2xpZGVzU2VsZWN0b3I7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdzaG93bicsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogJ3Nob3dDb250cm9scydcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdoaWRlJyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVDb250cm9scygpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuc2xpZGVzLCB0aGlzLmNsc0FjdGl2ZSk7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uc3RvcCh0aGlzLnNsaWRlcyk7XG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAna2V5dXAnLFxuXG4gICAgICAgICAgICAgICAgZWw6IGRvY3VtZW50LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc1RvZ2dsZWQodGhpcy4kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGUua2V5Q29kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzNzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coJ3ByZXZpb3VzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdygnbmV4dCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2JlZm9yZWl0ZW1zaG93JyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1RvZ2dsZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2ZW50Q2F0Y2ggPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZU5vdyh0aGlzLiRlbCwgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbmltYXRpb24gPSBBbmltYXRpb25zJDFbJ3NjYWxlJ107XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKGUudGFyZ2V0LCB0aGlzLmNsc0FjdGl2ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2suc3BsaWNlKDEsIDAsIHRoaXMuaW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnaXRlbXNob3cnLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBpID0gaW5kZXgodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiQxID0gdGhpcy5nZXRJdGVtKGkpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2FwdGlvbiA9IHJlZiQxLmNhcHRpb247XG5cbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuY2FwdGlvbiwgJ2Rpc3BsYXknLCBjYXB0aW9uID8gJycgOiAnbm9uZScpO1xuICAgICAgICAgICAgICAgICAgICBodG1sKHRoaXMuY2FwdGlvbiwgY2FwdGlvbik7XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPD0gdGhpcy5wcmVsb2FkOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5sb2FkSXRlbSh0aGlzJDEuZ2V0SW5kZXgoaSArIGopKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5sb2FkSXRlbSh0aGlzJDEuZ2V0SW5kZXgoaSAtIGopKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnaXRlbXNob3duJyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZlbnRDYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2l0ZW1sb2FkJyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKF8sIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgICAgICB2YXIgc291cmNlID0gaXRlbS5zb3VyY2U7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gaXRlbS50eXBlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYWx0ID0gaXRlbS5hbHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRJdGVtKGl0ZW0sICc8c3BhbiB1ay1zcGlubmVyPjwvc3Bhbj4nKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoZXMkJDE7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdpbWFnZScgfHwgc291cmNlLm1hdGNoKC9cXC4oanAoZSk/Z3xwbmd8Z2lmfHN2ZykoJHxcXD8pL2kpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGdldEltYWdlKHNvdXJjZSkudGhlbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoaW1nKSB7IHJldHVybiB0aGlzJDEuc2V0SXRlbShpdGVtLCAoXCI8aW1nIHdpZHRoPVxcXCJcIiArIChpbWcud2lkdGgpICsgXCJcXFwiIGhlaWdodD1cXFwiXCIgKyAoaW1nLmhlaWdodCkgKyBcIlxcXCIgc3JjPVxcXCJcIiArIHNvdXJjZSArIFwiXFxcIiBhbHQ9XFxcIlwiICsgKGFsdCA/IGFsdCA6ICcnKSArIFwiXFxcIj5cIikpOyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS5zZXRFcnJvcihpdGVtKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmlkZW9cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAndmlkZW8nIHx8IHNvdXJjZS5tYXRjaCgvXFwuKG1wNHx3ZWJtfG9ndikoJHxcXD8pL2kpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2aWRlbyA9ICQoKFwiPHZpZGVvIGNvbnRyb2xzIHBsYXlzaW5saW5lXCIgKyAoaXRlbS5wb3N0ZXIgPyAoXCIgcG9zdGVyPVxcXCJcIiArIChpdGVtLnBvc3RlcikgKyBcIlxcXCJcIikgOiAnJykgKyBcIiB1ay12aWRlbz1cXFwiXCIgKyAodGhpcy52aWRlb0F1dG9wbGF5KSArIFwiXFxcIj48L3ZpZGVvPlwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyKHZpZGVvLCAnc3JjJywgc291cmNlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgb24odmlkZW8sICdlcnJvcicsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS5zZXRFcnJvcihpdGVtKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbih2aWRlbywgJ2xvYWRlZG1ldGFkYXRhJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIodmlkZW8sIHt3aWR0aDogdmlkZW8udmlkZW9XaWR0aCwgaGVpZ2h0OiB2aWRlby52aWRlb0hlaWdodH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5zZXRJdGVtKGl0ZW0sIHZpZGVvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZnJhbWVcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnaWZyYW1lJyB8fCBzb3VyY2UubWF0Y2goL1xcLihodG1sfHBocCkoJHxcXD8pL2kpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0SXRlbShpdGVtLCAoXCI8aWZyYW1lIGNsYXNzPVxcXCJ1ay1saWdodGJveC1pZnJhbWVcXFwiIHNyYz1cXFwiXCIgKyBzb3VyY2UgKyBcIlxcXCIgZnJhbWVib3JkZXI9XFxcIjBcXFwiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT5cIikpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBZb3VUdWJlXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKG1hdGNoZXMkJDEgPSBzb3VyY2UubWF0Y2goL1xcL1xcLy4qP3lvdXR1YmUoLW5vY29va2llKT9cXC5bYS16XStcXC93YXRjaFxcP3Y9KFteJlxcc10rKS8pIHx8IHNvdXJjZS5tYXRjaCgvKCl5b3V0dVxcLmJlXFwvKC4qKS8pKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaWQgPSBtYXRjaGVzJCQxWzJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNldElmcmFtZSA9IGZ1bmN0aW9uICh3aWR0aCQkMSwgaGVpZ2h0JCQxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB3aWR0aCQkMSA9PT0gdm9pZCAwICkgd2lkdGgkJDEgPSA2NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBoZWlnaHQkJDEgPT09IHZvaWQgMCApIGhlaWdodCQkMSA9IDQ1MDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzJDEuc2V0SXRlbShpdGVtLCBnZXRJZnJhbWUoKFwiaHR0cHM6Ly93d3cueW91dHViZVwiICsgKG1hdGNoZXMkJDFbMV0gfHwgJycpICsgXCIuY29tL2VtYmVkL1wiICsgaWQpLCB3aWR0aCQkMSwgaGVpZ2h0JCQxLCB0aGlzJDEudmlkZW9BdXRvcGxheSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SW1hZ2UoKFwiaHR0cHM6Ly9pbWcueW91dHViZS5jb20vdmkvXCIgKyBpZCArIFwiL21heHJlc2RlZmF1bHQuanBnXCIpKS50aGVuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gcmVmLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmLmhlaWdodDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBZb3VUdWJlIGRlZmF1bHQgNDA0IHRodW1iLCBmYWxsIGJhY2sgdG8gbG93IHJlc29sdXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoJCQxID09PSAxMjAgJiYgaGVpZ2h0JCQxID09PSA5MCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SW1hZ2UoKFwiaHR0cHM6Ly9pbWcueW91dHViZS5jb20vdmkvXCIgKyBpZCArIFwiLzAuanBnXCIpKS50aGVuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gcmVmLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmLmhlaWdodDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0SWZyYW1lKHdpZHRoJCQxLCBoZWlnaHQkJDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJZnJhbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJZnJhbWUod2lkdGgkJDEsIGhlaWdodCQkMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElmcmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmltZW9cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgobWF0Y2hlcyQkMSA9IHNvdXJjZS5tYXRjaCgvKFxcL1xcLy4qPyl2aW1lb1xcLlthLXpdK1xcLyhbMC05XSspLio/LykpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFqYXgoKFwiaHR0cHM6Ly92aW1lby5jb20vYXBpL29lbWJlZC5qc29uP21heHdpZHRoPTE5MjAmdXJsPVwiICsgKGVuY29kZVVSSShzb3VyY2UpKSksIHtyZXNwb25zZVR5cGU6ICdqc29uJywgd2l0aENyZWRlbnRpYWxzOiBmYWxzZX0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWZfcmVzcG9uc2UgPSByZWYucmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmX3Jlc3BvbnNlLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3aWR0aCQkMSA9IHJlZl9yZXNwb25zZS53aWR0aDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMkMS5zZXRJdGVtKGl0ZW0sIGdldElmcmFtZSgoXCJodHRwczovL3BsYXllci52aW1lby5jb20vdmlkZW8vXCIgKyAobWF0Y2hlcyQkMVsyXSkpLCB3aWR0aCQkMSwgaGVpZ2h0JCQxLCB0aGlzJDEudmlkZW9BdXRvcGxheSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLnNldEVycm9yKGl0ZW0pOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgbG9hZEl0ZW06IGZ1bmN0aW9uKGluZGV4JCQxKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBpbmRleCQkMSA9PT0gdm9pZCAwICkgaW5kZXgkJDEgPSB0aGlzLmluZGV4O1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHRoaXMuZ2V0SXRlbShpbmRleCQkMSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5jb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnaXRlbWxvYWQnLCBbaXRlbV0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0SXRlbTogZnVuY3Rpb24oaW5kZXgkJDEpIHtcbiAgICAgICAgICAgICAgICBpZiAoIGluZGV4JCQxID09PSB2b2lkIDAgKSBpbmRleCQkMSA9IHRoaXMuaW5kZXg7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtc1tpbmRleCQkMV0gfHwge307XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzZXRJdGVtOiBmdW5jdGlvbihpdGVtLCBjb250ZW50KSB7XG4gICAgICAgICAgICAgICAgYXNzaWduKGl0ZW0sIHtjb250ZW50OiBjb250ZW50fSk7XG4gICAgICAgICAgICAgICAgdmFyIGVsID0gaHRtbCh0aGlzLnNsaWRlc1t0aGlzLml0ZW1zLmluZGV4T2YoaXRlbSldLCBjb250ZW50KTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnaXRlbWxvYWRlZCcsIFt0aGlzLCBlbF0pO1xuICAgICAgICAgICAgICAgIHRoaXMuJHVwZGF0ZShlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzZXRFcnJvcjogZnVuY3Rpb24oaXRlbSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0SXRlbShpdGVtLCAnPHNwYW4gdWstaWNvbj1cImljb246IGJvbHQ7IHJhdGlvOiAyXCI+PC9zcGFuPicpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2hvd0NvbnRyb2xzOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNvbnRyb2xzVGltZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHNUaW1lciA9IHNldFRpbWVvdXQodGhpcy5oaWRlQ29udHJvbHMsIHRoaXMuZGVsYXlDb250cm9scyk7XG5cbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgJ3VrLWFjdGl2ZScsICd1ay10cmFuc2l0aW9uLWFjdGl2ZScpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoaWRlQ29udHJvbHM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuJGVsLCAndWstYWN0aXZlJywgJ3VrLXRyYW5zaXRpb24tYWN0aXZlJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldElmcmFtZShzcmMsIHdpZHRoJCQxLCBoZWlnaHQkJDEsIGF1dG9wbGF5KSB7XG4gICAgICAgIHJldHVybiAoXCI8aWZyYW1lIHNyYz1cXFwiXCIgKyBzcmMgKyBcIlxcXCIgd2lkdGg9XFxcIlwiICsgd2lkdGgkJDEgKyBcIlxcXCIgaGVpZ2h0PVxcXCJcIiArIGhlaWdodCQkMSArIFwiXFxcIiBzdHlsZT1cXFwibWF4LXdpZHRoOiAxMDAlOyBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcXCIgZnJhbWVib3JkZXI9XFxcIjBcXFwiIGFsbG93ZnVsbHNjcmVlbiB1ay12aWRlbz1cXFwiYXV0b3BsYXk6IFwiICsgYXV0b3BsYXkgKyBcIlxcXCIgdWstcmVzcG9uc2l2ZT48L2lmcmFtZT5cIik7XG4gICAgfVxuXG4gICAgdmFyIHByb3BzID0gbWVyZ2UoTGlnaHRib3hQYW5lbCwgJ3Byb3BzJyk7XG4gICAgdmFyIGRlZmF1bHRzID0gbWVyZ2UoTGlnaHRib3hQYW5lbCwgJ2RhdGEnKTtcblxuICAgIHZhciBMaWdodGJveCA9IHtcblxuICAgICAgICBpbnN0YWxsOiBpbnN0YWxsJDIsXG5cbiAgICAgICAgYXR0cnM6IHRydWUsXG5cbiAgICAgICAgcHJvcHM6IGFzc2lnbih7dG9nZ2xlOiBTdHJpbmd9LCBwcm9wcyksXG5cbiAgICAgICAgZGF0YTogYXNzaWduKHt0b2dnbGU6ICdhJ30sIE9iamVjdC5rZXlzKHByb3BzKS5yZWR1Y2UoZnVuY3Rpb24gKGRhdGEkJDEsIGtleSkge1xuICAgICAgICAgICAgZGF0YSQkMVtrZXldID0gZGVmYXVsdHNba2V5XTtcbiAgICAgICAgICAgIHJldHVybiBkYXRhJCQxO1xuICAgICAgICB9LCB7fSkpLFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIHRvZ2dsZXM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRvZ2dsZSA9IHJlZi50b2dnbGU7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJCQodG9nZ2xlLCAkZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rlc3Ryb3koKTtcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgodGhpcy50b2dnbGUpICsgXCI6bm90KC51ay1kaXNhYmxlZClcIik7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBlLmN1cnJlbnQuYmx1cigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coaW5kZXgodGhpcy50b2dnbGVzLCBlLmN1cnJlbnQpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIHVwZGF0ZTogZnVuY3Rpb24oZGF0YSQkMSkge1xuXG4gICAgICAgICAgICBkYXRhJCQxLnRvZ2dsZXMgPSBkYXRhJCQxLnRvZ2dsZXMgfHwgdGhpcy50b2dnbGVzO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5wYW5lbCAmJiB0aGlzLmFuaW1hdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMucGFuZWwuJHByb3BzLmFuaW1hdGlvbiA9IHRoaXMuYW5pbWF0aW9uO1xuICAgICAgICAgICAgICAgIHRoaXMucGFuZWwuJGVtaXQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF0aGlzLnBhbmVsIHx8IGlzRXF1YWxMaXN0JDEoZGF0YSQkMS50b2dnbGVzLCB0aGlzLnRvZ2dsZXMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkYXRhJCQxLnRvZ2dsZXMgPSB0aGlzLnRvZ2dsZXM7XG4gICAgICAgICAgICB0aGlzLl9kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLl9pbml0KCk7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIF9pbml0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYW5lbCA9IHRoaXMucGFuZWwgfHwgdGhpcy4kY3JlYXRlKCdsaWdodGJveFBhbmVsJywgYXNzaWduKHt9LCB0aGlzLiRwcm9wcywge1xuICAgICAgICAgICAgICAgICAgICBpdGVtczogdGhpcy50b2dnbGVzLnJlZHVjZShmdW5jdGlvbiAoaXRlbXMsIGVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKFsnaHJlZicsICdjYXB0aW9uJywgJ3R5cGUnLCAncG9zdGVyJywgJ2FsdCddLnJlZHVjZShmdW5jdGlvbiAob2JqLCBhdHRyJCQxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqW2F0dHIkJDEgPT09ICdocmVmJyA/ICdzb3VyY2UnIDogYXR0ciQkMV0gPSBkYXRhKGVsLCBhdHRyJCQxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwge30pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2Rlc3Ryb3k6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhbmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFuZWwuJGRlc3Ryb3kodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFuZWwgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKGluZGV4JCQxKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMucGFuZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5pdCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhbmVsLnNob3coaW5kZXgkJDEpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoaWRlOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhbmVsICYmIHRoaXMucGFuZWwuaGlkZSgpO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGlzRXF1YWxMaXN0JDEobGlzdEEsIGxpc3RCKSB7XG4gICAgICAgIHJldHVybiBsaXN0QS5sZW5ndGggPT09IGxpc3RCLmxlbmd0aFxuICAgICAgICAgICAgJiYgbGlzdEEuZXZlcnkoZnVuY3Rpb24gKGVsLCBpKSB7IHJldHVybiBlbCA9PT0gbGlzdEJbaV07IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1lcmdlKG9wdGlvbnMsIHByb3ApIHtcbiAgICAgICAgcmV0dXJuIGFzc2lnbi5hcHBseShcbiAgICAgICAgICAgIHZvaWQgMCwgWyB7fSBdLmNvbmNhdCggKG9wdGlvbnMubWl4aW5zID8gb3B0aW9ucy5taXhpbnMubWFwKGZ1bmN0aW9uIChtaXhpbikgeyByZXR1cm4gbWVyZ2UobWl4aW4sIHByb3ApOyB9KSA6IFtdKSxcbiAgICAgICAgICAgIFtpc0Z1bmN0aW9uKG9wdGlvbnNbcHJvcF0pID8gb3B0aW9uc1twcm9wXSgpIDogb3B0aW9uc1twcm9wXV0gKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zdGFsbCQyKFVJa2l0KSB7XG4gICAgICAgIGlmICghVUlraXQubGlnaHRib3hQYW5lbCkge1xuICAgICAgICAgICAgVUlraXQuY29tcG9uZW50KCdsaWdodGJveFBhbmVsJywgTGlnaHRib3hQYW5lbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgb2JqO1xuXG4gICAgdmFyIGNvbnRhaW5lcnMgPSB7fTtcblxuICAgIHZhciBOb3RpZmljYXRpb24gPSB7XG5cbiAgICAgICAgZnVuY3Rpb25hbDogdHJ1ZSxcblxuICAgICAgICBhcmdzOiBbJ21lc3NhZ2UnLCAnc3RhdHVzJ10sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICBzdGF0dXM6ICcnLFxuICAgICAgICAgICAgdGltZW91dDogNTAwMCxcbiAgICAgICAgICAgIGdyb3VwOiBudWxsLFxuICAgICAgICAgICAgcG9zOiAndG9wLWNlbnRlcicsXG4gICAgICAgICAgICBjbHNDbG9zZTogJ3VrLW5vdGlmaWNhdGlvbi1jbG9zZScsXG4gICAgICAgICAgICBjbHNNc2c6ICd1ay1ub3RpZmljYXRpb24tbWVzc2FnZSdcbiAgICAgICAgfSxcblxuICAgICAgICBpbnN0YWxsOiBpbnN0YWxsJDMsXG5cbiAgICAgICAgY3JlYXRlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIGlmICghY29udGFpbmVyc1t0aGlzLnBvc10pIHtcbiAgICAgICAgICAgICAgICBjb250YWluZXJzW3RoaXMucG9zXSA9IGFwcGVuZCh0aGlzLiRjb250YWluZXIsIChcIjxkaXYgY2xhc3M9XFxcInVrLW5vdGlmaWNhdGlvbiB1ay1ub3RpZmljYXRpb24tXCIgKyAodGhpcy5wb3MpICsgXCJcXFwiPjwvZGl2PlwiKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBjb250YWluZXIgPSBjc3MoY29udGFpbmVyc1t0aGlzLnBvc10sICdkaXNwbGF5JywgJ2Jsb2NrJyk7XG5cbiAgICAgICAgICAgIHRoaXMuJG1vdW50KGFwcGVuZChjb250YWluZXIsXG4gICAgICAgICAgICAgICAgKFwiPGRpdiBjbGFzcz1cXFwiXCIgKyAodGhpcy5jbHNNc2cpICsgKHRoaXMuc3RhdHVzID8gKFwiIFwiICsgKHRoaXMuY2xzTXNnKSArIFwiLVwiICsgKHRoaXMuc3RhdHVzKSkgOiAnJykgKyBcIlxcXCI+IDxhIGhyZWY9XFxcIiNcXFwiIGNsYXNzPVxcXCJcIiArICh0aGlzLmNsc0Nsb3NlKSArIFwiXFxcIiBkYXRhLXVrLWNsb3NlPjwvYT4gPGRpdj5cIiArICh0aGlzLm1lc3NhZ2UpICsgXCI8L2Rpdj4gPC9kaXY+XCIpXG4gICAgICAgICAgICApKTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIHJlYWR5OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHZhciBtYXJnaW5Cb3R0b20gPSB0b0Zsb2F0KGNzcyh0aGlzLiRlbCwgJ21hcmdpbkJvdHRvbScpKTtcbiAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQoXG4gICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB7b3BhY2l0eTogMCwgbWFyZ2luVG9wOiAtdGhpcy4kZWwub2Zmc2V0SGVpZ2h0LCBtYXJnaW5Cb3R0b206IDB9KSxcbiAgICAgICAgICAgICAgICB7b3BhY2l0eTogMSwgbWFyZ2luVG9wOiAwLCBtYXJnaW5Cb3R0b206IG1hcmdpbkJvdHRvbX1cbiAgICAgICAgICAgICkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMkMS50aW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS50aW1lciA9IHNldFRpbWVvdXQodGhpcyQxLmNsb3NlLCB0aGlzJDEudGltZW91dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6ICggb2JqID0ge1xuXG4gICAgICAgICAgICBjbGljazogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIGlmIChjbG9zZXN0KGUudGFyZ2V0LCAnYVtocmVmPVwiI1wiXScpKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sIG9ialtwb2ludGVyRW50ZXJdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBvYmpbcG9pbnRlckxlYXZlXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50aW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KHRoaXMuY2xvc2UsIHRoaXMudGltZW91dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgb2JqICksXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBjbG9zZTogZnVuY3Rpb24oaW1tZWRpYXRlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHZhciByZW1vdmVGbiA9IGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMkMS4kZWwsICdjbG9zZScsIFt0aGlzJDFdKTtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKHRoaXMkMS4kZWwpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghY29udGFpbmVyc1t0aGlzJDEucG9zXS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyhjb250YWluZXJzW3RoaXMkMS5wb3NdLCAnZGlzcGxheScsICdub25lJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGltbWVkaWF0ZSkge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVGbigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQodGhpcy4kZWwsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6IC10aGlzLiRlbC5vZmZzZXRIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b206IDBcbiAgICAgICAgICAgICAgICAgICAgfSkudGhlbihyZW1vdmVGbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsJDMoVUlraXQpIHtcbiAgICAgICAgVUlraXQubm90aWZpY2F0aW9uLmNsb3NlQWxsID0gZnVuY3Rpb24gKGdyb3VwLCBpbW1lZGlhdGUpIHtcbiAgICAgICAgICAgIGFwcGx5KGRvY3VtZW50LmJvZHksIGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAgICAgICAgIHZhciBub3RpZmljYXRpb24gPSBVSWtpdC5nZXRDb21wb25lbnQoZWwsICdub3RpZmljYXRpb24nKTtcbiAgICAgICAgICAgICAgICBpZiAobm90aWZpY2F0aW9uICYmICghZ3JvdXAgfHwgZ3JvdXAgPT09IG5vdGlmaWNhdGlvbi5ncm91cCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uLmNsb3NlKGltbWVkaWF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIHByb3BzJDEgPSBbJ3gnLCAneScsICdiZ3gnLCAnYmd5JywgJ3JvdGF0ZScsICdzY2FsZScsICdjb2xvcicsICdiYWNrZ3JvdW5kQ29sb3InLCAnYm9yZGVyQ29sb3InLCAnb3BhY2l0eScsICdibHVyJywgJ2h1ZScsICdncmF5c2NhbGUnLCAnaW52ZXJ0JywgJ3NhdHVyYXRlJywgJ3NlcGlhJywgJ2ZvcGFjaXR5J107XG5cbiAgICB2YXIgUGFyYWxsYXggPSB7XG5cbiAgICAgICAgcHJvcHM6IHByb3BzJDEucmVkdWNlKGZ1bmN0aW9uIChwcm9wcywgcHJvcCkge1xuICAgICAgICAgICAgcHJvcHNbcHJvcF0gPSAnbGlzdCc7XG4gICAgICAgICAgICByZXR1cm4gcHJvcHM7XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG1lZGlhOiAnbWVkaWEnXG4gICAgICAgIH0pLFxuXG4gICAgICAgIGRhdGE6IHByb3BzJDEucmVkdWNlKGZ1bmN0aW9uIChkYXRhJCQxLCBwcm9wKSB7XG4gICAgICAgICAgICBkYXRhJCQxW3Byb3BdID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGEkJDE7XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG1lZGlhOiBmYWxzZVxuICAgICAgICB9KSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBwcm9wczogZnVuY3Rpb24ocHJvcGVydGllcywgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcyQxLnJlZHVjZShmdW5jdGlvbiAocHJvcHMsIHByb3ApIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQocHJvcGVydGllc1twcm9wXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBpc0NvbG9yID0gcHJvcC5tYXRjaCgvY29sb3IvaSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpc0Nzc1Byb3AgPSBpc0NvbG9yIHx8IHByb3AgPT09ICdvcGFjaXR5JztcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcG9zLCBiZ1BvcywgZGlmZjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0ZXBzID0gcHJvcGVydGllc1twcm9wXS5zbGljZSgwKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNDc3NQcm9wKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3MoJGVsLCBwcm9wLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RlcHMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHMudW5zaGlmdCgocHJvcCA9PT0gJ3NjYWxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXNDc3NQcm9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY3NzKCRlbCwgcHJvcClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwKSB8fCAwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciB1bml0ID0gaW5jbHVkZXMoc3RlcHMuam9pbignJyksICclJykgPyAnJScgOiAncHgnO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0NvbG9yKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSAkZWwuc3R5bGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29sb3IgPSByZWYuY29sb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwcyA9IHN0ZXBzLm1hcChmdW5jdGlvbiAoc3RlcCkgeyByZXR1cm4gcGFyc2VDb2xvcigkZWwsIHN0ZXApOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICRlbC5zdHlsZS5jb2xvciA9IGNvbG9yO1xuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBzID0gc3RlcHMubWFwKHRvRmxvYXQpO1xuXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcC5tYXRjaCgvXmJnLykpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzKCRlbCwgKFwiYmFja2dyb3VuZC1wb3NpdGlvbi1cIiArIChwcm9wWzJdKSksICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJnUG9zID0gY3NzKCRlbCwgJ2JhY2tncm91bmRQb3NpdGlvbicpLnNwbGl0KCcgJylbcHJvcFsyXSA9PT0gJ3gnID8gMCA6IDFdOyAvLyBJRSAxMSBjYW4ndCByZWFkIGJhY2tncm91bmQtcG9zaXRpb24tW3h8eV1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5jb3ZlcnMpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtaW4gPSBNYXRoLm1pbi5hcHBseShNYXRoLCBzdGVwcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1heCA9IE1hdGgubWF4LmFwcGx5KE1hdGgsIHN0ZXBzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZG93biA9IHN0ZXBzLmluZGV4T2YobWluKSA8IHN0ZXBzLmluZGV4T2YobWF4KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYgPSBtYXggLSBtaW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwcyA9IHN0ZXBzLm1hcChmdW5jdGlvbiAoc3RlcCkgeyByZXR1cm4gc3RlcCAtIChkb3duID8gbWluIDogbWF4KTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gKGRvd24gPyAtZGlmZiA6IDApICsgXCJweFwiO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gYmdQb3M7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHByb3BzW3Byb3BdID0ge3N0ZXBzOiBzdGVwcywgdW5pdDogdW5pdCwgcG9zOiBwb3MsIGJnUG9zOiBiZ1BvcywgZGlmZjogZGlmZn07XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzO1xuXG4gICAgICAgICAgICAgICAgfSwge30pO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBiZ1Byb3BzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICAgICAgICAgIHJldHVybiBbJ2JneCcsICdiZ3knXS5maWx0ZXIoZnVuY3Rpb24gKGJnKSB7IHJldHVybiBiZyBpbiB0aGlzJDEucHJvcHM7IH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgY292ZXJzOiBmdW5jdGlvbihfLCAkZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY292ZXJzKCRlbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBkaXNjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2ltYWdlO1xuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbihkYXRhJCQxKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgZGF0YSQkMS5hY3RpdmUgPSAhdGhpcy5tZWRpYSB8fCB3aW5kb3cubWF0Y2hNZWRpYSh0aGlzLm1lZGlhKS5tYXRjaGVzO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhJCQxLmltYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhJCQxLmltYWdlLmRpbUVsID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLiRlbC5vZmZzZXRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMuJGVsLm9mZnNldEhlaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICgnaW1hZ2UnIGluIGRhdGEkJDEgfHwgIXRoaXMuY292ZXJzIHx8ICF0aGlzLmJnUHJvcHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgc3JjID0gY3NzKHRoaXMuJGVsLCAnYmFja2dyb3VuZEltYWdlJykucmVwbGFjZSgvXm5vbmV8dXJsXFwoW1wiJ10/KC4rPylbXCInXT9cXCkkLywgJyQxJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzcmMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGRhdGEkJDEuaW1hZ2UgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICBnZXRJbWFnZShzcmMpLnRoZW4oZnVuY3Rpb24gKGltZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSQkMS5pbWFnZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogaW1nLm5hdHVyYWxXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGltZy5uYXR1cmFsSGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuJGVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgdmFyIGltYWdlID0gcmVmLmltYWdlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gcmVmLmFjdGl2ZTtcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghaW1hZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHtiYWNrZ3JvdW5kU2l6ZTogJycsIGJhY2tncm91bmRSZXBlYXQ6ICcnfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgZGltRWwgPSBpbWFnZS5kaW1FbDtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgZGltID0gRGltZW5zaW9ucy5jb3ZlcihpbWFnZSwgZGltRWwpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmdQcm9wcy5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzJDEucHJvcHNbcHJvcF07XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGlmZiA9IHJlZi5kaWZmO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJnUG9zID0gcmVmLmJnUG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0ZXBzID0gcmVmLnN0ZXBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF0dHIkJDEgPSBwcm9wID09PSAnYmd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzcGFuID0gZGltW2F0dHIkJDFdIC0gZGltRWxbYXR0ciQkMV07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYmdQb3MubWF0Y2goLyUkfDBweC8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3BhbiA8IGRpZmYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaW1FbFthdHRyJCQxXSA9IGRpbVthdHRyJCQxXSArIGRpZmYgLSBzcGFuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzcGFuID4gZGlmZikge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJnUG9zRmxvYXQgPSBwYXJzZUZsb2F0KGJnUG9zKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiZ1Bvc0Zsb2F0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5wcm9wc1twcm9wXS5zdGVwcyA9IHN0ZXBzLm1hcChmdW5jdGlvbiAoc3RlcCkgeyByZXR1cm4gc3RlcCAtIChzcGFuIC0gZGlmZikgLyAoMTAwIC8gYmdQb3NGbG9hdCk7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgZGltID0gRGltZW5zaW9ucy5jb3ZlcihpbWFnZSwgZGltRWwpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRTaXplOiAoKGRpbS53aWR0aCkgKyBcInB4IFwiICsgKGRpbS5oZWlnaHQpICsgXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRSZXBlYXQ6ICduby1yZXBlYXQnXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgcmVzZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgZWFjaCh0aGlzLmdldENzcygwKSwgZnVuY3Rpb24gKF8sIHByb3ApIHsgcmV0dXJuIGNzcyh0aGlzJDEuJGVsLCBwcm9wLCAnJyk7IH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0Q3NzOiBmdW5jdGlvbihwZXJjZW50KSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcztcbiAgICAgICAgICAgICAgICB2YXIgcHJvcHMgPSByZWYucHJvcHM7XG4gICAgICAgICAgICAgICAgdmFyIHRyYW5zbGF0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhwcm9wcykucmVkdWNlKGZ1bmN0aW9uIChjc3MkJDEsIHByb3ApIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gcHJvcHNbcHJvcF07XG4gICAgICAgICAgICAgICAgICAgIHZhciBzdGVwcyA9IHJlZi5zdGVwcztcbiAgICAgICAgICAgICAgICAgICAgdmFyIHVuaXQgPSByZWYudW5pdDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9IHJlZi5wb3M7XG4gICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGdldFZhbHVlKHN0ZXBzLCBwZXJjZW50KTtcblxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb3ApIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJhbnNmb3Jtc1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAneCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd5JzpcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2xhdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWYkMSA9IFsneCcsICd5J10ubWFwKGZ1bmN0aW9uIChkaXIpIHsgcmV0dXJuIHByb3AgPT09IGRpclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHZhbHVlICsgdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzW2Rpcl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0VmFsdWUocHJvcHNbZGlyXS5zdGVwcywgcGVyY2VudCkgKyBwcm9wc1tkaXJdLnVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMDsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHZhciB4ID0gcmVmJDFbMF07XG4gICAgICAgICAgICAgICAgICAgIHZhciB5ID0gcmVmJDFbMV07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVkID0gY3NzJCQxLnRyYW5zZm9ybSArPSBcIiB0cmFuc2xhdGUzZChcIiArIHggKyBcIiwgXCIgKyB5ICsgXCIsIDApXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyb3RhdGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyQkMS50cmFuc2Zvcm0gKz0gXCIgcm90YXRlKFwiICsgdmFsdWUgKyBcImRlZylcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NjYWxlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MkJDEudHJhbnNmb3JtICs9IFwiIHNjYWxlKFwiICsgdmFsdWUgKyBcIilcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmcgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JneSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiZ3gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyQkMVsoXCJiYWNrZ3JvdW5kLXBvc2l0aW9uLVwiICsgKHByb3BbMl0pKV0gPSBcImNhbGMoXCIgKyBwb3MgKyBcIiArIFwiICsgKHZhbHVlICsgdW5pdCkgKyBcIilcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbG9yJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JhY2tncm91bmRDb2xvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdib3JkZXJDb2xvcic6XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVmJDIgPSBnZXRTdGVwKHN0ZXBzLCBwZXJjZW50KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXJ0ID0gcmVmJDJbMF07XG4gICAgICAgICAgICAgICAgICAgIHZhciBlbmQgPSByZWYkMlsxXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSByZWYkMlsyXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyQkMVtwcm9wXSA9IFwicmdiYShcIiArIChzdGFydC5tYXAoZnVuY3Rpb24gKHZhbHVlLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlICsgcCAqIChlbmRbaV0gLSB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gMyA/IHRvRmxvYXQodmFsdWUpIDogcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuam9pbignLCcpKSArIFwiKVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDU1MgRmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdibHVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MkJDEuZmlsdGVyICs9IFwiIGJsdXIoXCIgKyB2YWx1ZSArIFwicHgpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdodWUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyQkMS5maWx0ZXIgKz0gXCIgaHVlLXJvdGF0ZShcIiArIHZhbHVlICsgXCJkZWcpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb3BhY2l0eSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzJCQxLmZpbHRlciArPSBcIiBvcGFjaXR5KFwiICsgdmFsdWUgKyBcIiUpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmF5c2NhbGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW52ZXJ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NhdHVyYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NlcGlhJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MkJDEuZmlsdGVyICs9IFwiIFwiICsgcHJvcCArIFwiKFwiICsgdmFsdWUgKyBcIiUpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzJCQxW3Byb3BdID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3NzJCQxO1xuXG4gICAgICAgICAgICAgICAgfSwge3RyYW5zZm9ybTogJycsIGZpbHRlcjogJyd9KTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBwYXJzZUNvbG9yKGVsLCBjb2xvcikge1xuICAgICAgICByZXR1cm4gY3NzKGNzcyhlbCwgJ2NvbG9yJywgY29sb3IpLCAnY29sb3InKS5zcGxpdCgvWygpLF0vZykuc2xpY2UoMSwgLTEpLmNvbmNhdCgxKS5zbGljZSgwLCA0KS5tYXAoZnVuY3Rpb24gKG4pIHsgcmV0dXJuIHRvRmxvYXQobik7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFN0ZXAoc3RlcHMsIHBlcmNlbnQpIHtcbiAgICAgICAgdmFyIGNvdW50ID0gc3RlcHMubGVuZ3RoIC0gMTtcbiAgICAgICAgdmFyIGluZGV4JCQxID0gTWF0aC5taW4oTWF0aC5mbG9vcihjb3VudCAqIHBlcmNlbnQpLCBjb3VudCAtIDEpO1xuICAgICAgICB2YXIgc3RlcCA9IHN0ZXBzLnNsaWNlKGluZGV4JCQxLCBpbmRleCQkMSArIDIpO1xuXG4gICAgICAgIHN0ZXAucHVzaChwZXJjZW50ID09PSAxID8gMSA6IHBlcmNlbnQgJSAoMSAvIGNvdW50KSAqIGNvdW50KTtcblxuICAgICAgICByZXR1cm4gc3RlcDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRWYWx1ZShzdGVwcywgcGVyY2VudCkge1xuICAgICAgICB2YXIgcmVmID0gZ2V0U3RlcChzdGVwcywgcGVyY2VudCk7XG4gICAgICAgIHZhciBzdGFydCA9IHJlZlswXTtcbiAgICAgICAgdmFyIGVuZCA9IHJlZlsxXTtcbiAgICAgICAgdmFyIHAgPSByZWZbMl07XG4gICAgICAgIHJldHVybiAoaXNOdW1iZXIoc3RhcnQpXG4gICAgICAgICAgICAgICAgPyBzdGFydCArIE1hdGguYWJzKHN0YXJ0IC0gZW5kKSAqIHAgKiAoc3RhcnQgPCBlbmQgPyAxIDogLTEpXG4gICAgICAgICAgICAgICAgOiArZW5kXG4gICAgICAgICkudG9GaXhlZCgyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb3ZlcnMoZWwpIHtcbiAgICAgICAgdmFyIHJlZiA9IGVsLnN0eWxlO1xuICAgICAgICB2YXIgYmFja2dyb3VuZFNpemUgPSByZWYuYmFja2dyb3VuZFNpemU7XG4gICAgICAgIHZhciBjb3ZlcnMgPSBjc3MoY3NzKGVsLCAnYmFja2dyb3VuZFNpemUnLCAnJyksICdiYWNrZ3JvdW5kU2l6ZScpID09PSAnY292ZXInO1xuICAgICAgICBlbC5zdHlsZS5iYWNrZ3JvdW5kU2l6ZSA9IGJhY2tncm91bmRTaXplO1xuICAgICAgICByZXR1cm4gY292ZXJzO1xuICAgIH1cblxuICAgIHZhciBQYXJhbGxheCQxID0ge1xuXG4gICAgICAgIG1peGluczogW1BhcmFsbGF4XSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgdGFyZ2V0OiBTdHJpbmcsXG4gICAgICAgICAgICB2aWV3cG9ydDogTnVtYmVyLFxuICAgICAgICAgICAgZWFzaW5nOiBOdW1iZXIsXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdGFyZ2V0OiBmYWxzZSxcbiAgICAgICAgICAgIHZpZXdwb3J0OiAxLFxuICAgICAgICAgICAgZWFzaW5nOiAxLFxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIHRhcmdldDogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQgJiYgcXVlcnkodGFyZ2V0LCAkZWwpIHx8ICRlbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBlcmNlbnQgPSByZWYucGVyY2VudDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldjogcGVyY2VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQ6IGVhc2UkMShzY3JvbGxlZE92ZXIodGhpcy50YXJnZXQpIC8gKHRoaXMudmlld3BvcnQgfHwgMSksIHRoaXMuZWFzaW5nKVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24ocmVmLCByZWYkMSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcHJldiA9IHJlZi5wcmV2O1xuICAgICAgICAgICAgICAgICAgICB2YXIgcGVyY2VudCA9IHJlZi5wZXJjZW50O1xuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gcmVmLmFjdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSByZWYkMS50eXBlO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgIT09ICdzY3JvbGwnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXYgIT09IHBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgdGhpcy5nZXRDc3MocGVyY2VudCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ3Njcm9sbCcsICdsb2FkJywgJ3Jlc2l6ZSddXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGVhc2UkMShwZXJjZW50LCBlYXNpbmcpIHtcbiAgICAgICAgcmV0dXJuIGNsYW1wKHBlcmNlbnQgKiAoMSAtIChlYXNpbmcgLSBlYXNpbmcgKiBwZXJjZW50KSkpO1xuICAgIH1cblxuICAgIHZhciBTbGlkZXJSZWFjdGl2ZSA9IHtcblxuICAgICAgICB1cGRhdGU6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YWNrLmxlbmd0aCB8fCB0aGlzLmRyYWdnaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXgkJDEgPSB0aGlzLmdldFZhbGlkSW5kZXgoKTtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuc2xpZGVzLCB0aGlzLmNsc0FjdGl2ZSwgdGhpcy5jbHNBY3RpdmF0ZWQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coaW5kZXgkJDEpO1xuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdXG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gVHJhbnNpdGlvbmVyJDEgKHByZXYsIG5leHQsIGRpciwgcmVmKSB7XG4gICAgICAgIHZhciBjZW50ZXIgPSByZWYuY2VudGVyO1xuICAgICAgICB2YXIgZWFzaW5nID0gcmVmLmVhc2luZztcbiAgICAgICAgdmFyIGxpc3QgPSByZWYubGlzdDtcblxuXG4gICAgICAgIHZhciBkZWZlcnJlZCA9IG5ldyBEZWZlcnJlZCgpO1xuXG4gICAgICAgIHZhciBmcm9tID0gcHJldlxuICAgICAgICAgICAgPyBnZXRMZWZ0KHByZXYsIGxpc3QsIGNlbnRlcilcbiAgICAgICAgICAgIDogZ2V0TGVmdChuZXh0LCBsaXN0LCBjZW50ZXIpICsgbmV4dC5vZmZzZXRXaWR0aCAqIGRpcjtcbiAgICAgICAgdmFyIHRvID0gbmV4dFxuICAgICAgICAgICAgPyBnZXRMZWZ0KG5leHQsIGxpc3QsIGNlbnRlcilcbiAgICAgICAgICAgIDogZnJvbSArIHByZXYub2Zmc2V0V2lkdGggKiBkaXIgKiAoaXNSdGwgPyAtMSA6IDEpO1xuXG4gICAgICAgIHJldHVybiB7XG5cbiAgICAgICAgICAgIGRpcjogZGlyLFxuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbihkdXJhdGlvbiwgcGVyY2VudCwgbGluZWFyKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBwZXJjZW50ID09PSB2b2lkIDAgKSBwZXJjZW50ID0gMDtcblxuXG4gICAgICAgICAgICAgICAgdmFyIHRpbWluZyA9IGxpbmVhciA/ICdsaW5lYXInIDogZWFzaW5nO1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uIC09IE1hdGgucm91bmQoZHVyYXRpb24gKiBjbGFtcChwZXJjZW50LCAtMSwgMSkpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUocGVyY2VudCk7XG5cbiAgICAgICAgICAgICAgICBwcmV2ICYmIHRoaXMudXBkYXRlVHJhbnNsYXRlcygpO1xuICAgICAgICAgICAgICAgIHBlcmNlbnQgPSBwcmV2ID8gcGVyY2VudCA6IGNsYW1wKHBlcmNlbnQsIDAsIDEpO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJVcGRhdGUkMSh0aGlzLmdldEl0ZW1JbigpLCAnaXRlbWluJywge3BlcmNlbnQ6IHBlcmNlbnQsIGR1cmF0aW9uOiBkdXJhdGlvbiwgdGltaW5nOiB0aW1pbmcsIGRpcjogZGlyfSk7XG4gICAgICAgICAgICAgICAgcHJldiAmJiB0cmlnZ2VyVXBkYXRlJDEodGhpcy5nZXRJdGVtSW4odHJ1ZSksICdpdGVtb3V0Jywge3BlcmNlbnQ6IDEgLSBwZXJjZW50LCBkdXJhdGlvbjogZHVyYXRpb24sIHRpbWluZzogdGltaW5nLCBkaXI6IGRpcn0pO1xuXG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvblxuICAgICAgICAgICAgICAgICAgICAuc3RhcnQobGlzdCwge3RyYW5zZm9ybTogdHJhbnNsYXRlKC10byAqIChpc1J0bCA/IC0xIDogMSksICdweCcpfSwgZHVyYXRpb24sIHRpbWluZylcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oZGVmZXJyZWQucmVzb2x2ZSwgbm9vcCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFRyYW5zaXRpb24uc3RvcChsaXN0KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwobGlzdCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICByZXNldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgY3NzKGxpc3QsICd0cmFuc2Zvcm0nLCAnJyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBmb3J3YXJkOiBmdW5jdGlvbihkdXJhdGlvbiwgcGVyY2VudCkge1xuICAgICAgICAgICAgICAgIGlmICggcGVyY2VudCA9PT0gdm9pZCAwICkgcGVyY2VudCA9IHRoaXMucGVyY2VudCgpO1xuXG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwobGlzdCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvdyhkdXJhdGlvbiwgcGVyY2VudCwgdHJ1ZSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQpIHtcblxuICAgICAgICAgICAgICAgIHZhciBkaXN0YW5jZSA9IHRoaXMuZ2V0RGlzdGFuY2UoKSAqIGRpciAqIChpc1J0bCA/IC0xIDogMSk7XG5cbiAgICAgICAgICAgICAgICBjc3MobGlzdCwgJ3RyYW5zZm9ybScsIHRyYW5zbGF0ZShjbGFtcChcbiAgICAgICAgICAgICAgICAgICAgLXRvICsgKGRpc3RhbmNlIC0gZGlzdGFuY2UgKiBwZXJjZW50KSxcbiAgICAgICAgICAgICAgICAgICAgLWdldFdpZHRoKGxpc3QpLFxuICAgICAgICAgICAgICAgICAgICBsaXN0Lm9mZnNldFdpZHRoXG4gICAgICAgICAgICAgICAgKSAqIChpc1J0bCA/IC0xIDogMSksICdweCcpKTtcblxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHJhbnNsYXRlcygpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgICAgICAgICAgICAgcGVyY2VudCA9IGNsYW1wKHBlcmNlbnQsIC0xLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlclVwZGF0ZSQxKHRoaXMuZ2V0SXRlbUluKCksICdpdGVtdHJhbnNsYXRlaW4nLCB7cGVyY2VudDogcGVyY2VudCwgZGlyOiBkaXJ9KTtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlclVwZGF0ZSQxKHRoaXMuZ2V0SXRlbUluKHRydWUpLCAnaXRlbXRyYW5zbGF0ZW91dCcsIHtwZXJjZW50OiAxIC0gcGVyY2VudCwgZGlyOiBkaXJ9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBlcmNlbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLmFicygoY3NzKGxpc3QsICd0cmFuc2Zvcm0nKS5zcGxpdCgnLCcpWzRdICogKGlzUnRsID8gLTEgOiAxKSArIGZyb20pIC8gKHRvIC0gZnJvbSkpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0RGlzdGFuY2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLmFicyh0byAtIGZyb20pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0SXRlbUluOiBmdW5jdGlvbihvdXQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIG91dCA9PT0gdm9pZCAwICkgb3V0ID0gZmFsc2U7XG5cblxuICAgICAgICAgICAgICAgIHZhciBhY3RpdmVzID0gdGhpcy5nZXRBY3RpdmVzKCk7XG4gICAgICAgICAgICAgICAgdmFyIGFsbCA9IHNvcnRCeShzbGlkZXMobGlzdCksICdvZmZzZXRMZWZ0Jyk7XG4gICAgICAgICAgICAgICAgdmFyIGkgPSBpbmRleChhbGwsIGFjdGl2ZXNbZGlyICogKG91dCA/IC0xIDogMSkgPiAwID8gYWN0aXZlcy5sZW5ndGggLSAxIDogMF0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIH5pICYmIGFsbFtpICsgKHByZXYgJiYgIW91dCA/IGRpciA6IDApXTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0QWN0aXZlczogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgbGVmdCA9IGdldExlZnQocHJldiB8fCBuZXh0LCBsaXN0LCBjZW50ZXIpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNvcnRCeShzbGlkZXMobGlzdCkuZmlsdGVyKGZ1bmN0aW9uIChzbGlkZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2xpZGVMZWZ0ID0gZ2V0RWxMZWZ0KHNsaWRlLCBsaXN0KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNsaWRlTGVmdCA+PSBsZWZ0ICYmIHNsaWRlTGVmdCArIHNsaWRlLm9mZnNldFdpZHRoIDw9IGxpc3Qub2Zmc2V0V2lkdGggKyBsZWZ0O1xuICAgICAgICAgICAgICAgIH0pLCAnb2Zmc2V0TGVmdCcpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB1cGRhdGVUcmFuc2xhdGVzOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHZhciBhY3RpdmVzID0gdGhpcy5nZXRBY3RpdmVzKCk7XG5cbiAgICAgICAgICAgICAgICBzbGlkZXMobGlzdCkuZm9yRWFjaChmdW5jdGlvbiAoc2xpZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlzQWN0aXZlID0gaW5jbHVkZXMoYWN0aXZlcywgc2xpZGUpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXJVcGRhdGUkMShzbGlkZSwgKFwiaXRlbXRyYW5zbGF0ZVwiICsgKGlzQWN0aXZlID8gJ2luJyA6ICdvdXQnKSksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQ6IGlzQWN0aXZlID8gMSA6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXI6IHNsaWRlLm9mZnNldExlZnQgPD0gbmV4dC5vZmZzZXRMZWZ0ID8gMSA6IC0xXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH07XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRMZWZ0KGVsLCBsaXN0LCBjZW50ZXIpIHtcblxuICAgICAgICB2YXIgbGVmdCA9IGdldEVsTGVmdChlbCwgbGlzdCk7XG5cbiAgICAgICAgcmV0dXJuIGNlbnRlclxuICAgICAgICAgICAgPyBsZWZ0IC0gY2VudGVyRWwoZWwsIGxpc3QpXG4gICAgICAgICAgICA6IE1hdGgubWluKGxlZnQsIGdldE1heChsaXN0KSk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRNYXgobGlzdCkge1xuICAgICAgICByZXR1cm4gTWF0aC5tYXgoMCwgZ2V0V2lkdGgobGlzdCkgLSBsaXN0Lm9mZnNldFdpZHRoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRXaWR0aChsaXN0KSB7XG4gICAgICAgIHJldHVybiBzbGlkZXMobGlzdCkucmVkdWNlKGZ1bmN0aW9uIChyaWdodCwgZWwpIHsgcmV0dXJuIGVsLm9mZnNldFdpZHRoICsgcmlnaHQ7IH0sIDApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldE1heFdpZHRoKGxpc3QpIHtcbiAgICAgICAgcmV0dXJuIHNsaWRlcyhsaXN0KS5yZWR1Y2UoZnVuY3Rpb24gKHJpZ2h0LCBlbCkgeyByZXR1cm4gTWF0aC5tYXgocmlnaHQsIGVsLm9mZnNldFdpZHRoKTsgfSwgMCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2VudGVyRWwoZWwsIGxpc3QpIHtcbiAgICAgICAgcmV0dXJuIGxpc3Qub2Zmc2V0V2lkdGggLyAyIC0gZWwub2Zmc2V0V2lkdGggLyAyO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEVsTGVmdChlbCwgbGlzdCkge1xuICAgICAgICByZXR1cm4gKGVsLm9mZnNldExlZnQgKyAoaXNSdGwgPyBlbC5vZmZzZXRXaWR0aCAtIGxpc3Qub2Zmc2V0V2lkdGggOiAwKSkgKiAoaXNSdGwgPyAtMSA6IDEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRyaWdnZXJVcGRhdGUkMShlbCwgdHlwZSwgZGF0YSQkMSkge1xuICAgICAgICB0cmlnZ2VyKGVsLCBjcmVhdGVFdmVudCh0eXBlLCBmYWxzZSwgZmFsc2UsIGRhdGEkJDEpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzbGlkZXMobGlzdCkge1xuICAgICAgICByZXR1cm4gdG9Ob2RlcyhsaXN0LmNoaWxkcmVuKTtcbiAgICB9XG5cbiAgICB2YXIgU2xpZGVyJDEgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3MsIFNsaWRlciwgU2xpZGVyUmVhY3RpdmVdLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBjZW50ZXI6IEJvb2xlYW4sXG4gICAgICAgICAgICBzZXRzOiBCb29sZWFuLFxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNlbnRlcjogZmFsc2UsXG4gICAgICAgICAgICBzZXRzOiBmYWxzZSxcbiAgICAgICAgICAgIGF0dHJJdGVtOiAndWstc2xpZGVyLWl0ZW0nLFxuICAgICAgICAgICAgc2VsTGlzdDogJy51ay1zbGlkZXItaXRlbXMnLFxuICAgICAgICAgICAgc2VsTmF2OiAnLnVrLXNsaWRlci1uYXYnLFxuICAgICAgICAgICAgY2xzQ29udGFpbmVyOiAndWstc2xpZGVyLWNvbnRhaW5lcicsXG4gICAgICAgICAgICBUcmFuc2l0aW9uZXI6IFRyYW5zaXRpb25lciQxXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgYXZnV2lkdGg6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXRXaWR0aCh0aGlzLmxpc3QpIC8gdGhpcy5sZW5ndGg7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBmaW5pdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBmaW5pdGUgPSByZWYuZmluaXRlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbml0ZSB8fCBnZXRXaWR0aCh0aGlzLmxpc3QpIDwgdGhpcy5saXN0Lm9mZnNldFdpZHRoICsgZ2V0TWF4V2lkdGgodGhpcy5saXN0KSArIHRoaXMuY2VudGVyO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgbWF4SW5kZXg6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZmluaXRlIHx8IHRoaXMuY2VudGVyICYmICF0aGlzLnNldHMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jZW50ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0c1t0aGlzLnNldHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY3NzKHRoaXMuc2xpZGVzLCAnb3JkZXInLCAnJyk7XG5cbiAgICAgICAgICAgICAgICB2YXIgbWF4ID0gZ2V0TWF4KHRoaXMubGlzdCk7XG4gICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLmxlbmd0aDtcblxuICAgICAgICAgICAgICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldEVsTGVmdCh0aGlzJDEubGlzdC5jaGlsZHJlbltpXSwgdGhpcyQxLmxpc3QpIDwgbWF4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5taW4oaSArIDEsIHRoaXMkMS5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2V0czogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmFyIHNldHMgPSByZWYuc2V0cztcblxuXG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gdGhpcy5saXN0Lm9mZnNldFdpZHRoIC8gKHRoaXMuY2VudGVyID8gMiA6IDEpO1xuXG4gICAgICAgICAgICAgICAgdmFyIGxlZnQgPSAwO1xuICAgICAgICAgICAgICAgIHZhciBsZWZ0Q2VudGVyID0gd2lkdGgkJDE7XG4gICAgICAgICAgICAgICAgdmFyIHNsaWRlTGVmdCA9IDA7XG5cbiAgICAgICAgICAgICAgICBzZXRzID0gc2V0cyAmJiB0aGlzLnNsaWRlcy5yZWR1Y2UoZnVuY3Rpb24gKHNldHMsIHNsaWRlLCBpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldChzbGlkZSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzbGlkZVdpZHRoID0gcmVmLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2xpZGVSaWdodCA9IHNsaWRlTGVmdCArIHNsaWRlV2lkdGg7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNsaWRlUmlnaHQgPiBsZWZ0KSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcyQxLmNlbnRlciAmJiBpID4gdGhpcyQxLm1heEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMkMS5tYXhJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbmNsdWRlcyhzZXRzLCBpKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNtcCA9IHRoaXMkMS5zbGlkZXNbaSArIDFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEuY2VudGVyICYmIGNtcCAmJiBzbGlkZVdpZHRoIDwgbGVmdENlbnRlciAtIG9mZnNldChjbXApLndpZHRoIC8gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0Q2VudGVyIC09IHNsaWRlV2lkdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdENlbnRlciA9IHdpZHRoJCQxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRzLnB1c2goaSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBzbGlkZUxlZnQgKyB3aWR0aCQkMSArICh0aGlzJDEuY2VudGVyID8gc2xpZGVXaWR0aCAvIDIgOiAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHNsaWRlTGVmdCArPSBzbGlkZVdpZHRoO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRzO1xuXG4gICAgICAgICAgICAgICAgfSwgW10pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNldHMgJiYgc2V0cy5sZW5ndGggJiYgc2V0cztcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdHJhbnNpdGlvbk9wdGlvbnM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGNlbnRlcjogdGhpcy5jZW50ZXIsXG4gICAgICAgICAgICAgICAgICAgIGxpc3Q6IHRoaXMubGlzdFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzQ29udGFpbmVyLCAhJCgoXCIuXCIgKyAodGhpcy5jbHNDb250YWluZXIpKSwgdGhpcy4kZWwpKTtcbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICAkJCgoXCJbXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl0sW2RhdGEtXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl1cIiksIHRoaXMuJGVsKS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXgkJDEgPSBkYXRhKGVsLCB0aGlzJDEuYXR0ckl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEubWF4SW5kZXggJiYgdG9nZ2xlQ2xhc3MoZWwsICd1ay1oaWRkZW4nLCBpc051bWVyaWMoaW5kZXgkJDEpICYmICh0aGlzJDEuc2V0cyAmJiAhaW5jbHVkZXModGhpcyQxLnNldHMsIHRvRmxvYXQoaW5kZXgkJDEpKSB8fCBpbmRleCQkMSA+IHRoaXMkMS5tYXhJbmRleCkpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiB7XG5cbiAgICAgICAgICAgIGJlZm9yZWl0ZW1zaG93OiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5kcmFnZ2luZyAmJiB0aGlzLnNldHMgJiYgdGhpcy5zdGFjay5sZW5ndGggPCAyICYmICFpbmNsdWRlcyh0aGlzLnNldHMsIHRoaXMuaW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZXggPSB0aGlzLmdldFZhbGlkSW5kZXgoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgZGlmZiA9IE1hdGguYWJzKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGV4XG4gICAgICAgICAgICAgICAgICAgIC0gdGhpcy5wcmV2SW5kZXhcbiAgICAgICAgICAgICAgICAgICAgKyAodGhpcy5kaXIgPiAwICYmIHRoaXMuaW5kZXggPCB0aGlzLnByZXZJbmRleCB8fCB0aGlzLmRpciA8IDAgJiYgdGhpcy5pbmRleCA+IHRoaXMucHJldkluZGV4ID8gKHRoaXMubWF4SW5kZXggKyAxKSAqIHRoaXMuZGlyIDogMClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRyYWdnaW5nICYmIGRpZmYgPiAxKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaWZmOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5zdGFjay5zcGxpY2UoMSwgMCwgdGhpcyQxLmRpciA+IDAgPyAnbmV4dCcgOiAncHJldmlvdXMnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuZHVyYXRpb24gPSBzcGVlZFVwKHRoaXMuYXZnV2lkdGggLyB0aGlzLnZlbG9jaXR5KVxuICAgICAgICAgICAgICAgICAgICAqICgoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpciA8IDAgfHwgIXRoaXMuc2xpZGVzW3RoaXMucHJldkluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5zbGlkZXNbdGhpcy5pbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuc2xpZGVzW3RoaXMucHJldkluZGV4XVxuICAgICAgICAgICAgICAgICAgICApLm9mZnNldFdpZHRoIC8gdGhpcy5hdmdXaWR0aCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJlb3JkZXIoKTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaXRlbXNob3c6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICFpc1VuZGVmaW5lZCh0aGlzLnByZXZJbmRleCkgJiYgYWRkQ2xhc3ModGhpcy5fZ2V0VHJhbnNpdGlvbmVyKCkuZ2V0SXRlbUluKCksIHRoaXMuY2xzQWN0aXZlKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGl0ZW1zaG93bjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZlcyA9IHRoaXMuX2dldFRyYW5zaXRpb25lcih0aGlzLmluZGV4KS5nZXRBY3RpdmVzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zbGlkZXMuZm9yRWFjaChmdW5jdGlvbiAoc2xpZGUpIHsgcmV0dXJuIHRvZ2dsZUNsYXNzKHNsaWRlLCB0aGlzJDEuY2xzQWN0aXZlLCBpbmNsdWRlcyhhY3RpdmVzLCBzbGlkZSkpOyB9KTtcbiAgICAgICAgICAgICAgICAoIXRoaXMuc2V0cyB8fCBpbmNsdWRlcyh0aGlzLnNldHMsIHRvRmxvYXQodGhpcy5pbmRleCkpKSAmJiB0aGlzLnNsaWRlcy5mb3JFYWNoKGZ1bmN0aW9uIChzbGlkZSkgeyByZXR1cm4gdG9nZ2xlQ2xhc3Moc2xpZGUsIHRoaXMkMS5jbHNBY3RpdmF0ZWQsIGluY2x1ZGVzKGFjdGl2ZXMsIHNsaWRlKSk7IH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICByZW9yZGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgY3NzKHRoaXMuc2xpZGVzLCAnb3JkZXInLCAnJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maW5pdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBpbmRleCQkMSA9IHRoaXMuZGlyID4gMCAmJiB0aGlzLnNsaWRlc1t0aGlzLnByZXZJbmRleF0gPyB0aGlzLnByZXZJbmRleCA6IHRoaXMuaW5kZXg7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNsaWRlcy5mb3JFYWNoKGZ1bmN0aW9uIChzbGlkZSwgaSkgeyByZXR1cm4gY3NzKHNsaWRlLCAnb3JkZXInLCB0aGlzJDEuZGlyID4gMCAmJiBpIDwgaW5kZXgkJDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzJDEuZGlyIDwgMCAmJiBpID49IHRoaXMkMS5pbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gLTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICAgICAgICAgICk7IH1cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNlbnRlcikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIG5leHQgPSB0aGlzLnNsaWRlc1tpbmRleCQkMV07XG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gdGhpcy5saXN0Lm9mZnNldFdpZHRoIC8gMiAtIG5leHQub2Zmc2V0V2lkdGggLyAyO1xuICAgICAgICAgICAgICAgIHZhciBqID0gMDtcblxuICAgICAgICAgICAgICAgIHdoaWxlICh3aWR0aCQkMSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNsaWRlSW5kZXggPSB0aGlzJDEuZ2V0SW5kZXgoLS1qICsgaW5kZXgkJDEsIGluZGV4JCQxKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNsaWRlID0gdGhpcyQxLnNsaWRlc1tzbGlkZUluZGV4XTtcblxuICAgICAgICAgICAgICAgICAgICBjc3Moc2xpZGUsICdvcmRlcicsIHNsaWRlSW5kZXggPiBpbmRleCQkMSA/IC0yIDogLTEpO1xuICAgICAgICAgICAgICAgICAgICB3aWR0aCQkMSAtPSBzbGlkZS5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldFZhbGlkSW5kZXg6IGZ1bmN0aW9uKGluZGV4JCQxLCBwcmV2SW5kZXgpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcbiAgICAgICAgICAgICAgICBpZiAoIGluZGV4JCQxID09PSB2b2lkIDAgKSBpbmRleCQkMSA9IHRoaXMuaW5kZXg7XG4gICAgICAgICAgICAgICAgaWYgKCBwcmV2SW5kZXggPT09IHZvaWQgMCApIHByZXZJbmRleCA9IHRoaXMucHJldkluZGV4O1xuXG5cbiAgICAgICAgICAgICAgICBpbmRleCQkMSA9IHRoaXMuZ2V0SW5kZXgoaW5kZXgkJDEsIHByZXZJbmRleCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2V0cykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXgkJDE7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIHByZXY7XG5cbiAgICAgICAgICAgICAgICBkbyB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGluY2x1ZGVzKHRoaXMkMS5zZXRzLCBpbmRleCQkMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmRleCQkMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHByZXYgPSBpbmRleCQkMTtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXgkJDEgPSB0aGlzJDEuZ2V0SW5kZXgoaW5kZXgkJDEgKyB0aGlzJDEuZGlyLCBwcmV2SW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgfSB3aGlsZSAoaW5kZXgkJDEgIT09IHByZXYpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4JCQxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgU2xpZGVyUGFyYWxsYXggPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbUGFyYWxsYXhdLFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHNlbEl0ZW06ICchbGknXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgaXRlbTogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgc2VsSXRlbSA9IHJlZi5zZWxJdGVtO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5KHNlbEl0ZW0sICRlbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2l0ZW1zaG93bicsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB0aGlzLmdldENzcyguNSkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdpdGVtaW4gaXRlbW91dCcsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSByZWYudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZl9kZXRhaWwgPSByZWYuZGV0YWlsO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcGVyY2VudCA9IHJlZl9kZXRhaWwucGVyY2VudDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGR1cmF0aW9uID0gcmVmX2RldGFpbC5kdXJhdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpbWluZyA9IHJlZl9kZXRhaWwudGltaW5nO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGlyID0gcmVmX2RldGFpbC5kaXI7XG5cblxuICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLmNhbmNlbCh0aGlzLiRlbCk7XG4gICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgdGhpcy5nZXRDc3MoZ2V0Q3VycmVudCh0eXBlLCBkaXIsIHBlcmNlbnQpKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5zdGFydCh0aGlzLiRlbCwgdGhpcy5nZXRDc3MoaXNJbih0eXBlKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAuNVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkaXIgPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwXG4gICAgICAgICAgICAgICAgICAgICksIGR1cmF0aW9uLCB0aW1pbmcpLmNhdGNoKG5vb3ApO1xuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICd0cmFuc2l0aW9uY2FuY2VsZWQgdHJhbnNpdGlvbmVuZCcsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwodGhpcy4kZWwpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdpdGVtdHJhbnNsYXRlaW4gaXRlbXRyYW5zbGF0ZW91dCcsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSByZWYudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZl9kZXRhaWwgPSByZWYuZGV0YWlsO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcGVyY2VudCA9IHJlZl9kZXRhaWwucGVyY2VudDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRpciA9IHJlZl9kZXRhaWwuZGlyO1xuXG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKHRoaXMuJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB0aGlzLmdldENzcyhnZXRDdXJyZW50KHR5cGUsIGRpciwgcGVyY2VudCkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGlzSW4odHlwZSkge1xuICAgICAgICByZXR1cm4gZW5kc1dpdGgodHlwZSwgJ2luJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Q3VycmVudCh0eXBlLCBkaXIsIHBlcmNlbnQpIHtcblxuICAgICAgICBwZXJjZW50IC89IDI7XG5cbiAgICAgICAgcmV0dXJuICFpc0luKHR5cGUpXG4gICAgICAgICAgICA/IGRpciA8IDBcbiAgICAgICAgICAgICAgICA/IHBlcmNlbnRcbiAgICAgICAgICAgICAgICA6IDEgLSBwZXJjZW50XG4gICAgICAgICAgICA6IGRpciA8IDBcbiAgICAgICAgICAgICAgICA/IDEgLSBwZXJjZW50XG4gICAgICAgICAgICAgICAgOiBwZXJjZW50O1xuICAgIH1cblxuICAgIHZhciBBbmltYXRpb25zJDIgPSBhc3NpZ24oe30sIEFuaW1hdGlvbnMsIHtcblxuICAgICAgICBmYWRlOiB7XG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiAwLCB6SW5kZXg6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7ekluZGV4OiAtMX1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAxIC0gY3NzKGN1cnJlbnQsICdvcGFjaXR5Jyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMSAtIHBlcmNlbnQsIHpJbmRleDogMH0sXG4gICAgICAgICAgICAgICAgICAgIHt6SW5kZXg6IC0xfVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBzY2FsZToge1xuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMCwgdHJhbnNmb3JtOiBzY2FsZTNkKDEgKyAuNSksIHpJbmRleDogMH0sXG4gICAgICAgICAgICAgICAgICAgIHt6SW5kZXg6IC0xfVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBwZXJjZW50OiBmdW5jdGlvbihjdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDEgLSBjc3MoY3VycmVudCwgJ29wYWNpdHknKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24ocGVyY2VudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiAxIC0gcGVyY2VudCwgdHJhbnNmb3JtOiBzY2FsZTNkKDEgKyAuNSAqIHBlcmNlbnQpLCB6SW5kZXg6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7ekluZGV4OiAtMX1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgcHVsbDoge1xuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbihkaXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlyIDwgMFxuICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgzMCksIHpJbmRleDogLTF9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKCksIHpJbmRleDogMH0gXVxuICAgICAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTAwKSwgekluZGV4OiAwfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgpLCB6SW5kZXg6IC0xfVxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCwgbmV4dCwgZGlyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpciA8IDBcbiAgICAgICAgICAgICAgICAgICAgPyAxIC0gdHJhbnNsYXRlZChuZXh0KVxuICAgICAgICAgICAgICAgICAgICA6IHRyYW5zbGF0ZWQoY3VycmVudCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQsIGRpcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBkaXIgPCAwXG4gICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKDMwICogcGVyY2VudCksIHpJbmRleDogLTF9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKC0xMDAgKiAoMSAtIHBlcmNlbnQpKSwgekluZGV4OiAwfSBdXG4gICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKC1wZXJjZW50ICogMTAwKSwgekluZGV4OiAwfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgzMCAqICgxIC0gcGVyY2VudCkpLCB6SW5kZXg6IC0xfVxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgcHVzaDoge1xuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbihkaXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlyIDwgMFxuICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDApLCB6SW5kZXg6IDB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKCksIHpJbmRleDogLTF9IF1cbiAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTMwKSwgekluZGV4OiAtMX0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoKSwgekluZGV4OiAwfVxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCwgbmV4dCwgZGlyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpciA+IDBcbiAgICAgICAgICAgICAgICAgICAgPyAxIC0gdHJhbnNsYXRlZChuZXh0KVxuICAgICAgICAgICAgICAgICAgICA6IHRyYW5zbGF0ZWQoY3VycmVudCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQsIGRpcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBkaXIgPCAwXG4gICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKHBlcmNlbnQgKiAxMDApLCB6SW5kZXg6IDB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKC0zMCAqICgxIC0gcGVyY2VudCkpLCB6SW5kZXg6IC0xfSBdXG4gICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKC0zMCAqIHBlcmNlbnQpLCB6SW5kZXg6IC0xfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDAgKiAoMSAtIHBlcmNlbnQpKSwgekluZGV4OiAwfVxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH0pO1xuXG4gICAgdmFyIFNsaWRlc2hvdyQxID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzLCBTbGlkZXNob3csIFNsaWRlclJlYWN0aXZlXSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgcmF0aW86IFN0cmluZyxcbiAgICAgICAgICAgIG1pbkhlaWdodDogQm9vbGVhbixcbiAgICAgICAgICAgIG1heEhlaWdodDogQm9vbGVhbixcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICByYXRpbzogJzE2OjknLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiBmYWxzZSxcbiAgICAgICAgICAgIG1heEhlaWdodDogZmFsc2UsXG4gICAgICAgICAgICBzZWxMaXN0OiAnLnVrLXNsaWRlc2hvdy1pdGVtcycsXG4gICAgICAgICAgICBhdHRySXRlbTogJ3VrLXNsaWRlc2hvdy1pdGVtJyxcbiAgICAgICAgICAgIHNlbE5hdjogJy51ay1zbGlkZXNob3ctbmF2JyxcbiAgICAgICAgICAgIEFuaW1hdGlvbnM6IEFuaW1hdGlvbnMkMlxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICByZWFkOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLnJhdGlvLnNwbGl0KCc6JykubWFwKE51bWJlcik7XG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gcmVmWzBdO1xuICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWZbMV07XG5cbiAgICAgICAgICAgICAgICBoZWlnaHQkJDEgPSBoZWlnaHQkJDEgKiB0aGlzLiRlbC5vZmZzZXRXaWR0aCAvIHdpZHRoJCQxO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWluSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCQkMSA9IE1hdGgubWF4KHRoaXMubWluSGVpZ2h0LCBoZWlnaHQkJDEpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1heEhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQkJDEgPSBNYXRoLm1pbih0aGlzLm1heEhlaWdodCwgaGVpZ2h0JCQxKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge2hlaWdodDogaGVpZ2h0JCQxfTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgaGd0ID0gcmVmLmhlaWdodDtcblxuICAgICAgICAgICAgICAgIGhlaWdodCh0aGlzLmxpc3QsIE1hdGguZmxvb3IoaGd0KSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgb2JqJDE7XG5cbiAgICB2YXIgU29ydGFibGUgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3MsIEFuaW1hdGVdLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBncm91cDogU3RyaW5nLFxuICAgICAgICAgICAgdGhyZXNob2xkOiBOdW1iZXIsXG4gICAgICAgICAgICBjbHNJdGVtOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNQbGFjZWhvbGRlcjogU3RyaW5nLFxuICAgICAgICAgICAgY2xzRHJhZzogU3RyaW5nLFxuICAgICAgICAgICAgY2xzRHJhZ1N0YXRlOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNCYXNlOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNOb0RyYWc6IFN0cmluZyxcbiAgICAgICAgICAgIGNsc0VtcHR5OiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNDdXN0b206IFN0cmluZyxcbiAgICAgICAgICAgIGhhbmRsZTogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZ3JvdXA6IGZhbHNlLFxuICAgICAgICAgICAgdGhyZXNob2xkOiA1LFxuICAgICAgICAgICAgY2xzSXRlbTogJ3VrLXNvcnRhYmxlLWl0ZW0nLFxuICAgICAgICAgICAgY2xzUGxhY2Vob2xkZXI6ICd1ay1zb3J0YWJsZS1wbGFjZWhvbGRlcicsXG4gICAgICAgICAgICBjbHNEcmFnOiAndWstc29ydGFibGUtZHJhZycsXG4gICAgICAgICAgICBjbHNEcmFnU3RhdGU6ICd1ay1kcmFnJyxcbiAgICAgICAgICAgIGNsc0Jhc2U6ICd1ay1zb3J0YWJsZScsXG4gICAgICAgICAgICBjbHNOb0RyYWc6ICd1ay1zb3J0YWJsZS1ub2RyYWcnLFxuICAgICAgICAgICAgY2xzRW1wdHk6ICd1ay1zb3J0YWJsZS1lbXB0eScsXG4gICAgICAgICAgICBjbHNDdXN0b206ICcnLFxuICAgICAgICAgICAgaGFuZGxlOiBmYWxzZVxuICAgICAgICB9LFxuXG4gICAgICAgIGluaXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgIFsnaW5pdCcsICdzdGFydCcsICdtb3ZlJywgJ2VuZCddLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgICAgIHZhciBmbiA9IHRoaXMkMVtrZXldO1xuICAgICAgICAgICAgICAgIHRoaXMkMVtrZXldID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnNjcm9sbFkgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSBnZXRQb3MkMShlKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHggPSByZWYueDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSByZWYueTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnBvcyA9IHt4OiB4LCB5OiB5fTtcblxuICAgICAgICAgICAgICAgICAgICBmbihlKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiAoIG9iaiQxID0ge30sIG9iaiQxW3BvaW50ZXJEb3duXSA9ICdpbml0Jywgb2JqJDEgKSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xzRW1wdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzRW1wdHksICF0aGlzLiRlbC5jaGlsZHJlbi5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5kcmFnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBvZmZzZXQodGhpcy5kcmFnLCB7dG9wOiB0aGlzLnBvcy55ICsgdGhpcy5vcmlnaW4udG9wLCBsZWZ0OiB0aGlzLnBvcy54ICsgdGhpcy5vcmlnaW4ubGVmdH0pO1xuXG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldCh0aGlzLmRyYWcpO1xuICAgICAgICAgICAgICAgIHZhciB0b3AgPSByZWYudG9wO1xuICAgICAgICAgICAgICAgIHZhciBib3R0b20gPSB0b3AgKyB0aGlzLmRyYWcub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgICAgIHZhciBzY3JvbGw7XG5cbiAgICAgICAgICAgICAgICBpZiAodG9wID4gMCAmJiB0b3AgPCB0aGlzLnNjcm9sbFkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsID0gdGhpcy5zY3JvbGxZIC0gNTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJvdHRvbSA8IGhlaWdodChkb2N1bWVudCkgJiYgYm90dG9tID4gaGVpZ2h0KHdpbmRvdykgKyB0aGlzLnNjcm9sbFkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsID0gdGhpcy5zY3JvbGxZICsgNTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzY3JvbGwgJiYgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiB3aW5kb3cuc2Nyb2xsKHdpbmRvdy5wYWdlWE9mZnNldCwgc2Nyb2xsKTsgfSwgNSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDtcbiAgICAgICAgICAgICAgICB2YXIgYnV0dG9uID0gZS5idXR0b247XG4gICAgICAgICAgICAgICAgdmFyIGRlZmF1bHRQcmV2ZW50ZWQgPSBlLmRlZmF1bHRQcmV2ZW50ZWQ7XG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRvTm9kZXModGhpcy4kZWwuY2hpbGRyZW4pLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHdpdGhpbih0YXJnZXQsIGVsKTsgfSk7XG4gICAgICAgICAgICAgICAgdmFyIHBsYWNlaG9sZGVyID0gcmVmWzBdO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFwbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgICAgICB8fCBpc0lucHV0KGUudGFyZ2V0KVxuICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLmhhbmRsZSAmJiAhd2l0aGluKHRhcmdldCwgdGhpcy5oYW5kbGUpXG4gICAgICAgICAgICAgICAgICAgIHx8IGJ1dHRvbiA+IDBcbiAgICAgICAgICAgICAgICAgICAgfHwgd2l0aGluKHRhcmdldCwgKFwiLlwiICsgKHRoaXMuY2xzTm9EcmFnKSkpXG4gICAgICAgICAgICAgICAgICAgIHx8IGRlZmF1bHRQcmV2ZW50ZWRcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMudG91Y2hlZCA9IFt0aGlzXTtcbiAgICAgICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmlnaW4gPSBhc3NpZ24oe3RhcmdldDogdGFyZ2V0LCBpbmRleDogaW5kZXgocGxhY2Vob2xkZXIpfSwgdGhpcy5wb3MpO1xuXG4gICAgICAgICAgICAgICAgb24oZG9jdW1lbnQsIHBvaW50ZXJNb3ZlLCB0aGlzLm1vdmUpO1xuICAgICAgICAgICAgICAgIG9uKGRvY3VtZW50LCBwb2ludGVyVXAsIHRoaXMuZW5kKTtcbiAgICAgICAgICAgICAgICBvbih3aW5kb3csICdzY3JvbGwnLCB0aGlzLnNjcm9sbCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudGhyZXNob2xkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnQoZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzdGFydDogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnID0gYXBwZW5kKHRoaXMuJGNvbnRhaW5lciwgdGhpcy5wbGFjZWhvbGRlci5vdXRlckhUTUwucmVwbGFjZSgvXjxsaS9pLCAnPGRpdicpLnJlcGxhY2UoL2xpPiQvaSwgJ2Rpdj4nKSk7XG5cbiAgICAgICAgICAgICAgICBjc3ModGhpcy5kcmFnLCBhc3NpZ24oe1xuICAgICAgICAgICAgICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMucGxhY2Vob2xkZXIub2Zmc2V0V2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogdGhpcy5wbGFjZWhvbGRlci5vZmZzZXRIZWlnaHRcbiAgICAgICAgICAgICAgICB9LCBjc3ModGhpcy5wbGFjZWhvbGRlciwgWydwYWRkaW5nTGVmdCcsICdwYWRkaW5nUmlnaHQnLCAncGFkZGluZ1RvcCcsICdwYWRkaW5nQm90dG9tJ10pKSk7XG4gICAgICAgICAgICAgICAgYXR0cih0aGlzLmRyYWcsICd1ay1uby1ib290JywgJycpO1xuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuZHJhZywgdGhpcy5jbHNEcmFnLCB0aGlzLmNsc0N1c3RvbSk7XG5cbiAgICAgICAgICAgICAgICBoZWlnaHQodGhpcy5kcmFnLmZpcnN0RWxlbWVudENoaWxkLCBoZWlnaHQodGhpcy5wbGFjZWhvbGRlci5maXJzdEVsZW1lbnRDaGlsZCkpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldCh0aGlzLnBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgICB2YXIgbGVmdCA9IHJlZi5sZWZ0O1xuICAgICAgICAgICAgICAgIHZhciB0b3AgPSByZWYudG9wO1xuICAgICAgICAgICAgICAgIGFzc2lnbih0aGlzLm9yaWdpbiwge2xlZnQ6IGxlZnQgLSB0aGlzLnBvcy54LCB0b3A6IHRvcCAtIHRoaXMucG9zLnl9KTtcblxuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMucGxhY2Vob2xkZXIsIHRoaXMuY2xzUGxhY2Vob2xkZXIpO1xuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLmNoaWxkcmVuLCB0aGlzLmNsc0l0ZW0pO1xuICAgICAgICAgICAgICAgIGFkZENsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgdGhpcy5jbHNEcmFnU3RhdGUpO1xuXG4gICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ3N0YXJ0JywgW3RoaXMsIHRoaXMucGxhY2Vob2xkZXJdKTtcblxuICAgICAgICAgICAgICAgIHRoaXMubW92ZShlKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIG1vdmU6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5kcmFnKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKHRoaXMucG9zLnggLSB0aGlzLm9yaWdpbi54KSA+IHRoaXMudGhyZXNob2xkIHx8IE1hdGguYWJzKHRoaXMucG9zLnkgLSB0aGlzLm9yaWdpbi55KSA+IHRoaXMudGhyZXNob2xkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0KGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcblxuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnR5cGUgPT09ICdtb3VzZW1vdmUnID8gZS50YXJnZXQgOiBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHRoaXMucG9zLnggLSBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQsIHRoaXMucG9zLnkgLSBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCk7XG5cbiAgICAgICAgICAgICAgICB2YXIgc29ydGFibGUgPSB0aGlzLmdldFNvcnRhYmxlKHRhcmdldCk7XG4gICAgICAgICAgICAgICAgdmFyIHByZXZpb3VzID0gdGhpcy5nZXRTb3J0YWJsZSh0aGlzLnBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgICB2YXIgbW92ZSA9IHNvcnRhYmxlICE9PSBwcmV2aW91cztcblxuICAgICAgICAgICAgICAgIGlmICghc29ydGFibGUgfHwgd2l0aGluKHRhcmdldCwgdGhpcy5wbGFjZWhvbGRlcikgfHwgbW92ZSAmJiAoIXNvcnRhYmxlLmdyb3VwIHx8IHNvcnRhYmxlLmdyb3VwICE9PSBwcmV2aW91cy5ncm91cCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRhcmdldCA9IHNvcnRhYmxlLiRlbCA9PT0gdGFyZ2V0LnBhcmVudE5vZGUgJiYgdGFyZ2V0IHx8IHRvTm9kZXMoc29ydGFibGUuJGVsLmNoaWxkcmVuKS5maWx0ZXIoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIHdpdGhpbih0YXJnZXQsIGVsZW1lbnQpOyB9KVswXTtcblxuICAgICAgICAgICAgICAgIGlmIChtb3ZlKSB7XG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzLnJlbW92ZSh0aGlzLnBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHNvcnRhYmxlLmluc2VydCh0aGlzLnBsYWNlaG9sZGVyLCB0YXJnZXQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFpbmNsdWRlcyh0aGlzLnRvdWNoZWQsIHNvcnRhYmxlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvdWNoZWQucHVzaChzb3J0YWJsZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzY3JvbGw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciBzY3JvbGwgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gICAgICAgICAgICAgICAgaWYgKHNjcm9sbCAhPT0gdGhpcy5zY3JvbGxZKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zLnkgKz0gc2Nyb2xsIC0gdGhpcy5zY3JvbGxZO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFkgPSBzY3JvbGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBlbmQ6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgIG9mZihkb2N1bWVudCwgcG9pbnRlck1vdmUsIHRoaXMubW92ZSk7XG4gICAgICAgICAgICAgICAgb2ZmKGRvY3VtZW50LCBwb2ludGVyVXAsIHRoaXMuZW5kKTtcbiAgICAgICAgICAgICAgICBvZmYod2luZG93LCAnc2Nyb2xsJywgdGhpcy5zY3JvbGwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRyYWcpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZS50eXBlICE9PSAnbW91c2V1cCcgJiYgd2l0aGluKGUudGFyZ2V0LCAnYVtocmVmXScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gY2xvc2VzdChlLnRhcmdldCwgJ2FbaHJlZl0nKS5ocmVmO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHByZXZlbnRDbGljaygpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHNvcnRhYmxlID0gdGhpcy5nZXRTb3J0YWJsZSh0aGlzLnBsYWNlaG9sZGVyKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzID09PSBzb3J0YWJsZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcmlnaW4uaW5kZXggIT09IGluZGV4KHRoaXMucGxhY2Vob2xkZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnbW92ZWQnLCBbdGhpcywgdGhpcy5wbGFjZWhvbGRlcl0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcihzb3J0YWJsZS4kZWwsICdhZGRlZCcsIFtzb3J0YWJsZSwgdGhpcy5wbGFjZWhvbGRlcl0pO1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAncmVtb3ZlZCcsIFt0aGlzLCB0aGlzLnBsYWNlaG9sZGVyXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ3N0b3AnLCBbdGhpcywgdGhpcy5wbGFjZWhvbGRlcl0pO1xuXG4gICAgICAgICAgICAgICAgcmVtb3ZlKHRoaXMuZHJhZyk7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIHZhciBjbGFzc2VzID0gdGhpcy50b3VjaGVkLm1hcChmdW5jdGlvbiAoc29ydGFibGUpIHsgcmV0dXJuICgoc29ydGFibGUuY2xzUGxhY2Vob2xkZXIpICsgXCIgXCIgKyAoc29ydGFibGUuY2xzSXRlbSkpOyB9KS5qb2luKCcgJyk7XG4gICAgICAgICAgICAgICAgdGhpcy50b3VjaGVkLmZvckVhY2goZnVuY3Rpb24gKHNvcnRhYmxlKSB7IHJldHVybiByZW1vdmVDbGFzcyhzb3J0YWJsZS4kZWwuY2hpbGRyZW4sIGNsYXNzZXMpOyB9KTtcblxuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgdGhpcy5jbHNEcmFnU3RhdGUpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpbnNlcnQ6IGZ1bmN0aW9uKGVsZW1lbnQsIHRhcmdldCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbC5jaGlsZHJlbiwgdGhpcy5jbHNJdGVtKTtcblxuICAgICAgICAgICAgICAgIHZhciBpbnNlcnQgPSBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXdpdGhpbihlbGVtZW50LCB0aGlzJDEuJGVsKSB8fCBpc1ByZWRlY2Vzc29yKGVsZW1lbnQsIHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUodGFyZ2V0LCBlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIodGFyZ2V0LCBlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHRoaXMkMS4kZWwsIGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYW5pbWF0ZShpbnNlcnQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGluc2VydCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbihlbGVtZW50KSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXdpdGhpbihlbGVtZW50LCB0aGlzLiRlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFuaW1hdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFuaW1hdGUoZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVtb3ZlKGVsZW1lbnQpOyB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmUoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBnZXRTb3J0YWJsZTogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50ICYmICh0aGlzLiRnZXRDb21wb25lbnQoZWxlbWVudCwgJ3NvcnRhYmxlJykgfHwgdGhpcy5nZXRTb3J0YWJsZShlbGVtZW50LnBhcmVudE5vZGUpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaXNQcmVkZWNlc3NvcihlbGVtZW50LCB0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQucGFyZW50Tm9kZSA9PT0gdGFyZ2V0LnBhcmVudE5vZGUgJiYgaW5kZXgoZWxlbWVudCkgPiBpbmRleCh0YXJnZXQpO1xuICAgIH1cblxuICAgIHZhciBvYmokMjtcblxuICAgIHZhciBhY3RpdmVzID0gW107XG5cbiAgICB2YXIgVG9vbHRpcCA9IHtcblxuICAgICAgICBhdHRyczogdHJ1ZSxcblxuICAgICAgICBhcmdzOiAndGl0bGUnLFxuXG4gICAgICAgIG1peGluczogW0NvbnRhaW5lciwgVG9nZ2xhYmxlLCBQb3NpdGlvbl0sXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGRlbGF5OiBOdW1iZXIsXG4gICAgICAgICAgICB0aXRsZTogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgcG9zOiAndG9wJyxcbiAgICAgICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgICAgIGRlbGF5OiAwLFxuICAgICAgICAgICAgYW5pbWF0aW9uOiBbJ3VrLWFuaW1hdGlvbi1zY2FsZS11cCddLFxuICAgICAgICAgICAgZHVyYXRpb246IDEwMCxcbiAgICAgICAgICAgIGNsczogJ3VrLWFjdGl2ZScsXG4gICAgICAgICAgICBjbHNQb3M6ICd1ay10b29sdGlwJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGJlZm9yZUNvbm5lY3Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy5faGFzVGl0bGUgPSBoYXNBdHRyKHRoaXMuJGVsLCAndGl0bGUnKTtcbiAgICAgICAgICAgIGF0dHIodGhpcy4kZWwsIHt0aXRsZTogJycsICdhcmlhLWV4cGFuZGVkJzogZmFsc2V9KTtcbiAgICAgICAgfSxcblxuICAgICAgICBkaXNjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICBhdHRyKHRoaXMuJGVsLCB7dGl0bGU6IHRoaXMuX2hhc1RpdGxlID8gdGhpcy50aXRsZSA6IG51bGwsICdhcmlhLWV4cGFuZGVkJzogbnVsbH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlcyhhY3RpdmVzLCB0aGlzKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYWN0aXZlcy5mb3JFYWNoKGZ1bmN0aW9uIChhY3RpdmUpIHsgcmV0dXJuIGFjdGl2ZS5oaWRlKCk7IH0pO1xuICAgICAgICAgICAgICAgIGFjdGl2ZXMucHVzaCh0aGlzKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3VuYmluZCA9IG9uKGRvY3VtZW50LCAnY2xpY2snLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gIXdpdGhpbihlLnRhcmdldCwgdGhpcyQxLiRlbCkgJiYgdGhpcyQxLmhpZGUoKTsgfSk7XG5cbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zaG93VGltZXIpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50b29sdGlwID0gYXBwZW5kKHRoaXMuY29udGFpbmVyLCAoXCI8ZGl2IGNsYXNzPVxcXCJcIiArICh0aGlzLmNsc1BvcykgKyBcIlxcXCIgYXJpYS1oaWRkZW4+PGRpdiBjbGFzcz1cXFwiXCIgKyAodGhpcy5jbHNQb3MpICsgXCItaW5uZXJcXFwiPlwiICsgKHRoaXMudGl0bGUpICsgXCI8L2Rpdj48L2Rpdj5cIikpO1xuXG4gICAgICAgICAgICAgICAgYXR0cih0aGlzLiRlbCwgJ2FyaWEtZXhwYW5kZWQnLCB0cnVlKTtcblxuICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25BdCh0aGlzLnRvb2x0aXAsIHRoaXMuJGVsKTtcblxuICAgICAgICAgICAgICAgIHRoaXMub3JpZ2luID0gdGhpcy5nZXRBeGlzKCkgPT09ICd5JyA/ICgoZmxpcFBvc2l0aW9uKHRoaXMuZGlyKSkgKyBcIi1cIiArICh0aGlzLmFsaWduKSkgOiAoKHRoaXMuYWxpZ24pICsgXCItXCIgKyAoZmxpcFBvc2l0aW9uKHRoaXMuZGlyKSkpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93VGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzJDEudG9nZ2xlRWxlbWVudCh0aGlzJDEudG9vbHRpcCwgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmhpZGVUaW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1Zpc2libGUodGhpcyQxLiRlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH0sIDE1MCk7XG5cbiAgICAgICAgICAgICAgICB9LCB0aGlzLmRlbGF5KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhpZGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGluZGV4JCQxID0gYWN0aXZlcy5pbmRleE9mKHRoaXMpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF+aW5kZXgkJDEgfHwgbWF0Y2hlcyh0aGlzLiRlbCwgJ2lucHV0JykgJiYgdGhpcy4kZWwgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGFjdGl2ZXMuc3BsaWNlKGluZGV4JCQxLCAxKTtcblxuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNob3dUaW1lcik7XG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmhpZGVUaW1lcik7XG4gICAgICAgICAgICAgICAgYXR0cih0aGlzLiRlbCwgJ2FyaWEtZXhwYW5kZWQnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVFbGVtZW50KHRoaXMudG9vbHRpcCwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcCAmJiByZW1vdmUodGhpcy50b29sdGlwKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXAgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl91bmJpbmQoKTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiAoIG9iaiQyID0ge30sIG9iaiQyWyhcImZvY3VzIFwiICsgcG9pbnRlckVudGVyICsgXCIgXCIgKyBwb2ludGVyRG93bildID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZS50eXBlICE9PSBwb2ludGVyRG93biB8fCAhaXNUb3VjaChlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBvYmokMi5ibHVyID0gJ2hpZGUnLCBvYmokMltwb2ludGVyTGVhdmVdID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzVG91Y2goZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgb2JqJDIgKVxuXG4gICAgfTtcblxuICAgIHZhciBVcGxvYWQgPSB7XG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGFsbG93OiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNEcmFnb3ZlcjogU3RyaW5nLFxuICAgICAgICAgICAgY29uY3VycmVudDogTnVtYmVyLFxuICAgICAgICAgICAgbWF4U2l6ZTogTnVtYmVyLFxuICAgICAgICAgICAgbWV0aG9kOiBTdHJpbmcsXG4gICAgICAgICAgICBtaW1lOiBTdHJpbmcsXG4gICAgICAgICAgICBtc2dJbnZhbGlkTWltZTogU3RyaW5nLFxuICAgICAgICAgICAgbXNnSW52YWxpZE5hbWU6IFN0cmluZyxcbiAgICAgICAgICAgIG1zZ0ludmFsaWRTaXplOiBTdHJpbmcsXG4gICAgICAgICAgICBtdWx0aXBsZTogQm9vbGVhbixcbiAgICAgICAgICAgIG5hbWU6IFN0cmluZyxcbiAgICAgICAgICAgIHBhcmFtczogT2JqZWN0LFxuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgdXJsOiBTdHJpbmcsXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgYWxsb3c6IGZhbHNlLFxuICAgICAgICAgICAgY2xzRHJhZ292ZXI6ICd1ay1kcmFnb3ZlcicsXG4gICAgICAgICAgICBjb25jdXJyZW50OiAxLFxuICAgICAgICAgICAgbWF4U2l6ZTogMCxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgbWltZTogZmFsc2UsXG4gICAgICAgICAgICBtc2dJbnZhbGlkTWltZTogJ0ludmFsaWQgRmlsZSBUeXBlOiAlcycsXG4gICAgICAgICAgICBtc2dJbnZhbGlkTmFtZTogJ0ludmFsaWQgRmlsZSBOYW1lOiAlcycsXG4gICAgICAgICAgICBtc2dJbnZhbGlkU2l6ZTogJ0ludmFsaWQgRmlsZSBTaXplOiAlcyBLaWxvYnl0ZXMgTWF4JyxcbiAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgIG5hbWU6ICdmaWxlc1tdJyxcbiAgICAgICAgICAgIHBhcmFtczoge30sXG4gICAgICAgICAgICB0eXBlOiAnJyxcbiAgICAgICAgICAgIHVybDogJycsXG4gICAgICAgICAgICBhYm9ydDogbm9vcCxcbiAgICAgICAgICAgIGJlZm9yZUFsbDogbm9vcCxcbiAgICAgICAgICAgIGJlZm9yZVNlbmQ6IG5vb3AsXG4gICAgICAgICAgICBjb21wbGV0ZTogbm9vcCxcbiAgICAgICAgICAgIGNvbXBsZXRlQWxsOiBub29wLFxuICAgICAgICAgICAgZXJyb3I6IG5vb3AsXG4gICAgICAgICAgICBmYWlsOiBub29wLFxuICAgICAgICAgICAgbG9hZDogbm9vcCxcbiAgICAgICAgICAgIGxvYWRFbmQ6IG5vb3AsXG4gICAgICAgICAgICBsb2FkU3RhcnQ6IG5vb3AsXG4gICAgICAgICAgICBwcm9ncmVzczogbm9vcFxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czoge1xuXG4gICAgICAgICAgICBjaGFuZ2U6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgIGlmICghbWF0Y2hlcyhlLnRhcmdldCwgJ2lucHV0W3R5cGU9XCJmaWxlXCJdJykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldC5maWxlcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZChlLnRhcmdldC5maWxlcyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZS50YXJnZXQudmFsdWUgPSAnJztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGRyb3A6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICBzdG9wKGUpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHRyYW5zZmVyID0gZS5kYXRhVHJhbnNmZXI7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRyYW5zZmVyIHx8ICF0cmFuc2Zlci5maWxlcykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzRHJhZ292ZXIpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWQodHJhbnNmZXIuZmlsZXMpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZHJhZ2VudGVyOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgc3RvcChlKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGRyYWdvdmVyOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgc3RvcChlKTtcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgdGhpcy5jbHNEcmFnb3Zlcik7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBkcmFnbGVhdmU6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICBzdG9wKGUpO1xuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0RyYWdvdmVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgdXBsb2FkOiBmdW5jdGlvbihmaWxlcykge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBpZiAoIWZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ3VwbG9hZCcsIFtmaWxlc10pO1xuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEubWF4U2l6ZSAmJiB0aGlzJDEubWF4U2l6ZSAqIDEwMDAgPCBmaWxlc1tpXS5zaXplKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuZmFpbCh0aGlzJDEubXNnSW52YWxpZFNpemUucmVwbGFjZSgnJXMnLCB0aGlzJDEubWF4U2l6ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5hbGxvdyAmJiAhbWF0Y2godGhpcyQxLmFsbG93LCBmaWxlc1tpXS5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmZhaWwodGhpcyQxLm1zZ0ludmFsaWROYW1lLnJlcGxhY2UoJyVzJywgdGhpcyQxLmFsbG93KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLm1pbWUgJiYgIW1hdGNoKHRoaXMkMS5taW1lLCBmaWxlc1tpXS50eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmZhaWwodGhpcyQxLm1zZ0ludmFsaWRNaW1lLnJlcGxhY2UoJyVzJywgdGhpcyQxLm1pbWUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVzID0gW2ZpbGVzWzBdXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmJlZm9yZUFsbCh0aGlzLCBmaWxlcyk7XG5cbiAgICAgICAgICAgICAgICB2YXIgY2h1bmtzID0gY2h1bmsoZmlsZXMsIHRoaXMuY29uY3VycmVudCk7XG4gICAgICAgICAgICAgICAgdmFyIHVwbG9hZCA9IGZ1bmN0aW9uIChmaWxlcykge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBkYXRhJCQxID0gbmV3IEZvcm1EYXRhKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgZmlsZXMuZm9yRWFjaChmdW5jdGlvbiAoZmlsZSkgeyByZXR1cm4gZGF0YSQkMS5hcHBlbmQodGhpcyQxLm5hbWUsIGZpbGUpOyB9KTtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcyQxLnBhcmFtcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSQkMS5hcHBlbmQoa2V5LCB0aGlzJDEucGFyYW1zW2tleV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYWpheCh0aGlzJDEudXJsLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhJCQxLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiB0aGlzJDEubWV0aG9kLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiB0aGlzJDEudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZVNlbmQ6IGZ1bmN0aW9uIChlbnYpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4aHIgPSBlbnYueGhyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhoci51cGxvYWQgJiYgb24oeGhyLnVwbG9hZCwgJ3Byb2dyZXNzJywgdGhpcyQxLnByb2dyZXNzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2xvYWRTdGFydCcsICdsb2FkJywgJ2xvYWRFbmQnLCAnYWJvcnQnXS5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7IHJldHVybiBvbih4aHIsIHR5cGUudG9Mb3dlckNhc2UoKSwgdGhpcyQxW3R5cGVdKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuYmVmb3JlU2VuZChlbnYpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoeGhyKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuY29tcGxldGUoeGhyKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaHVua3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZChjaHVua3Muc2hpZnQoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmNvbXBsZXRlQWxsKHhocik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHRoaXMkMS5lcnJvcihlLm1lc3NhZ2UpOyB9XG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgdXBsb2FkKGNodW5rcy5zaGlmdCgpKTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBtYXRjaChwYXR0ZXJuLCBwYXRoKSB7XG4gICAgICAgIHJldHVybiBwYXRoLm1hdGNoKG5ldyBSZWdFeHAoKFwiXlwiICsgKHBhdHRlcm4ucmVwbGFjZSgvXFwvL2csICdcXFxcLycpLnJlcGxhY2UoL1xcKlxcKi9nLCAnKFxcXFwvW15cXFxcL10rKSonKS5yZXBsYWNlKC9cXCovZywgJ1teXFxcXC9dKycpLnJlcGxhY2UoLygoPyFcXFxcKSlcXD8vZywgJyQxLicpKSArIFwiJFwiKSwgJ2knKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2h1bmsoZmlsZXMsIHNpemUpIHtcbiAgICAgICAgdmFyIGNodW5rcyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSArPSBzaXplKSB7XG4gICAgICAgICAgICB2YXIgY2h1bmsgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2l6ZTsgaisrKSB7XG4gICAgICAgICAgICAgICAgY2h1bmsucHVzaChmaWxlc1tpICsgal0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2h1bmtzLnB1c2goY2h1bmspO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjaHVua3M7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RvcChlKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBVSWtpdC5jb21wb25lbnQoJ2NvdW50ZG93bicsIENvdW50ZG93bik7XG4gICAgVUlraXQuY29tcG9uZW50KCdmaWx0ZXInLCBGaWx0ZXIpO1xuICAgIFVJa2l0LmNvbXBvbmVudCgnbGlnaHRib3gnLCBMaWdodGJveCk7XG4gICAgVUlraXQuY29tcG9uZW50KCdsaWdodGJveFBhbmVsJywgTGlnaHRib3hQYW5lbCk7XG4gICAgVUlraXQuY29tcG9uZW50KCdub3RpZmljYXRpb24nLCBOb3RpZmljYXRpb24pO1xuICAgIFVJa2l0LmNvbXBvbmVudCgncGFyYWxsYXgnLCBQYXJhbGxheCQxKTtcbiAgICBVSWtpdC5jb21wb25lbnQoJ3NsaWRlcicsIFNsaWRlciQxKTtcbiAgICBVSWtpdC5jb21wb25lbnQoJ3NsaWRlclBhcmFsbGF4JywgU2xpZGVyUGFyYWxsYXgpO1xuICAgIFVJa2l0LmNvbXBvbmVudCgnc2xpZGVzaG93JywgU2xpZGVzaG93JDEpO1xuICAgIFVJa2l0LmNvbXBvbmVudCgnc2xpZGVzaG93UGFyYWxsYXgnLCBTbGlkZXJQYXJhbGxheCk7XG4gICAgVUlraXQuY29tcG9uZW50KCdzb3J0YWJsZScsIFNvcnRhYmxlKTtcbiAgICBVSWtpdC5jb21wb25lbnQoJ3Rvb2x0aXAnLCBUb29sdGlwKTtcbiAgICBVSWtpdC5jb21wb25lbnQoJ3VwbG9hZCcsIFVwbG9hZCk7XG5cbiAgICB7XG4gICAgICAgIGJvb3QoVUlraXQpO1xuICAgIH1cblxuICAgIHJldHVybiBVSWtpdDtcblxufSkpKTtcbiJdfQ==
diff --git a/static/js/script.js.map b/static/js/script.js.map
new file mode 100644
index 00000000..97dd2dee
--- /dev/null
+++ b/static/js/script.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["500.js","fouc.js","jquery/jquery-3.3.1.js","moment/moment-timezone.js","moment/moment.js","typewriter/typewriter.js","uikit/uikit.js","countdown.js","jams.js","revision_diff.js","wiki.js"],"names":["error_typewriter","app","document","getElementById","typewriter","Typewriter","loop","deleteSpeed","typingSpeed","devMode","onclick","current_class","getAttribute","setAttribute","stop","appendText","pauseFor","typeString","deleteChars","changeSettings","window","_RequestMethod","_Path","_Code","_ErrorMsg","start","getScript","url","integrity","cross_origin","script","createElement","type","src","defer","undefined","crossOrigin","getElementsByTagName","appendChild","setClass","selector","my_class","querySelector","className","removeClass","element","reg","RegExp","replace","global","factory","module","exports","w","Error","this","noGlobal","arr","getProto","Object","getPrototypeOf","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","call","support","isFunction","obj","nodeType","isWindow","preservedScriptAttributes","noModule","DOMEval","code","doc","node","i","text","head","parentNode","removeChild","toType","jQuery","context","fn","init","rtrim","isArrayLike","length","prototype","jquery","constructor","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","options","name","copy","copyIsArray","clone","target","deep","isPlainObject","Array","isArray","expando","Math","random","isReady","error","msg","noop","proto","Ctor","isEmptyObject","globalEval","trim","makeArray","results","inArray","second","grep","invert","matches","callbackExpect","arg","value","guid","Symbol","iterator","split","toLowerCase","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","pop","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","disabledAncestor","addCombinator","disabled","dir","next","childNodes","e","els","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","id","getElementsByClassName","qsa","test","nodeName","toSelector","join","testContext","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","documentElement","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","tmp","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","val","specified","escape","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","rsingleTag","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","sibling","targets","l","closest","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","object","flag","createOptions","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","removeEventListener","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","getData","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","setter","clearQueue","count","pnum","source","rcssNum","cssExpand","isHiddenWithinTree","style","display","css","swap","old","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","body","showHide","show","values","hide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","optgroup","tbody","tfoot","colgroup","caption","th","div","rhtml","buildFragment","scripts","selection","ignored","wrap","fragment","createDocumentFragment","nodes","htmlPrefilter","createTextNode","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","on","types","one","origFn","event","off","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","preventDefault","stopPropagation","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","Event","enumerable","originalEvent","writable","load","noBubble","trigger","blur","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","stopImmediatePropagation","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","rboxStyle","curCSS","computed","width","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","round","parseFloat","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","emptyStyle","finalPropName","cssProps","capName","vendorPropName","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","Tween","easing","cssHooks","opacity","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","zoom","origName","isCustomProp","setProperty","isFinite","getClientRects","getBoundingClientRect","left","margin","padding","border","prefix","suffix","expand","expanded","parts","propHooks","run","percent","eased","duration","pos","step","fx","scrollTop","scrollLeft","linear","p","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","height","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","bind","complete","timer","anim","*","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","parseInt","for","class","addClass","classes","curValue","clazz","finalValue","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","isTrigger","parentWindow","simulate","triggerHandler","attaches","nonce","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","offsetHeight","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","text script","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","hover","fnOver","fnOut","unbind","delegate","undelegate","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","define","amd","_jQuery","_$","$","noConflict","require","moment","cachedGuess","zones","links","names","guesses","momentVersion","version","major","minor","charCodeToInt","unpackBase60","whole","fractional","multiplier","out","sign","arrayToInt","array","mapIndices","indices","unpack","offsets","untils","Infinity","intToUntil","abbrs","population","Zone","packedString","_set","OffsetAt","at","timeString","toTimeString","abbr","getTimezoneOffset","ZoneScore","zone","offsetScore","abbrScore","findChange","low","mid","sortZoneScores","addToGuesses","guessesForUserOffsets","guessesOffset","offsetsLength","filteredGuesses","rebuildGuess","intlName","Intl","DateTimeFormat","resolvedOptions","timeZone","normalizeName","logError","zoneScore","change","startYear","getFullYear","userOffsets","zoneScores","getZone","scoreOffsetAt","addZone","packed","normalized","caller","link","addLink","aliases","alias","normal0","normal1","needsOffset","isUnixTimestamp","_f","_a","_tzm","tz","utc","isMoment","unpacked","_index","timestamp","offsetNext","offsetPrev","moveAmbiguousForward","moveInvalidForward","mom","utcOffset","offsetAt","abs","dataVersion","_zones","_links","_names","zoneExists","didShowError","guess","ignoreCache","abbrWrap","_z","defaultZone","updateOffset","keepTime","_isUTC","_d","zoneName","zoneAbbr","setDefault","momentProperties","hookCallback","some","isObject","isUndefined","isNumber","isDate","res","hasOwnProp","valueOf","createUTC","format","locale","strict","createLocalOrUTC","getParsingFlags","_pf","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","rfc2822","weekdayMismatch","isValid","_isValid","flags","parsedParts","isNowValid","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","fun","copyConfig","from","_isAMomentObject","_i","_l","_offset","_locale","updateInProgress","Moment","config","absFloor","number","floor","toInt","argumentForCoercion","coercedNumber","compareArrays","array1","array2","dontConvert","min","lengthDiff","diffs","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","deprecations","deprecateSimple","Function","mergeConfigs","parentConfig","childConfig","Locale","addUnitAlias","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","zeroFill","targetLength","forceSign","absNumber","zerosToFill","pow","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","localeData","formatMoment","expandFormat","output","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","regexes","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","regexEscape","p1","p2","p3","p4","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","year","isLeapYear","y","parseTwoDigitYear","getSetYear","makeGetSet","set$1","month","date","daysInMonth","x","modMonth","o","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","MONTHS_IN_FORMAT","defaultLocaleMonths","defaultLocaleMonthsShort","setMonth","dayOfMonth","getSetMonth","defaultMonthsShortRegex","defaultMonthsRegex","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","d","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","computeWeekdaysParse","minp","shortp","longp","minPieces","day","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos1","pos2","globalLocale","getSetHour","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","h","hh","dd","M","MM","yy","meridiemParse","locales","localeFamilies","normalizeLocale","loadLocale","oldLocale","_abbr","getSetGlobalLocale","getLocale","defineLocale","_config","parentLocale","forEach","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","defaults","c","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","currentDateArray","weekYear","weekdayOverflow","GG","W","E","createLocal","_week","curWeek","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ms","setFullYear","getDay","setUTCMinutes","getUTCMinutes","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromRFC2822","parsedArray","weekdayStr","parsedInput","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","hour","isPm","meridiemHour","meridiemFixWrap","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromStringAndArray","createFromInputFallback","configFromString","minute","millisecond","configFromObject","configFromInput","isUTC","getOwnPropertyNames","k","isObjectEmpty","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","years","quarters","quarter","weeks","days","milliseconds","unitHasDecimal","isDurationValid","_milliseconds","_days","_months","_bubble","isDuration","absRound","separator","offsetFromString","chunkOffset","cloneWithOffset","model","setTime","local","getDateOffset","isUtc","aspNetRegex","isoRegex","createDuration","diffRes","parseIso","isBefore","positiveMomentsDifference","momentsDifference","inp","isAfter","createAdder","direction","period","addSubtract","isAdding","invalid","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","dayOfYearData","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetSecond","parseMs","getSetMillisecond","preParsePostFormat","formats","sod","startOf","calendarFormat","asFloat","zoneDelta","endOf","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","u","getPrioritizedUnits","isoWeekday","toObject","toDate","toISOString","keepOffset","toJSON","unix","creationData","isoWeek","isoWeeks","weekInfo","isoWeeksInYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","dates","isDSTShifted","_isDSTShifted","proto$1","get$1","field","listMonthsImpl","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","isFormat","_monthsShort","monthName","_monthsParseExact","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","weekdayName","_weekdaysParseExact","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","_fullWeekdaysParse","charAt","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","makeGetter","thresholds","abs$1","toISOString$1","Y","D","toFixed","total","totalSign","ymSign","daysSign","hmsSign","proto$2","monthsFromDays","withSuffix","posNegDuration","relativeTime$1","toIsoString","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","lastTime","vendors","cancelAnimationFrame","currTime","timeToCall","_settings","cursorAnimationPaused","opacityIncreasing","currentOpacity","delayedQue","delayItemsCount","eventQue","calledEvents","eventRunning","delayExecution","fps","typingFrameCount","stringToTypeHTMLArray","currentTypedCharacters","typing","usedIDs","charAmountToDelete","userOptions","eventLoopRerun","default_options","strings","cursorClassName","cursor","animateCursor","blinkSpeed","charSpanClassName","wrapperClassName","autoStart","_setupOptions","_setupTypwriterWrapper","_startCursorAnimation","typeOutAllStrings","TypewriterPrototype","_addToEventQue","_stopEventLoop","_startEventLoop","rerun","_rerunCalledEvents","string_chars","_getCharacters","_typeCharacters","deleteAll","_deleteChars","amount","_pauseFor","characters_array","_getStringsAsCharsArray","_randomInteger","new_settings","_changeSettings","stringify","changeBlinkSpeed","new_speed","changeTypingSpeed","changeDeleteSpeed","_resetEventLoop","_deletingCharIdsAnimation","_deletingCharAnimationFrame","log","delete_speed","typewriter_wrapper_class_name","current_typed_char_ids","char_amount_to_delete","last_typed_char_index","get_last_typed_char","char_to_delete_el","new_options","merged_options","attrname","first_event","_eventQueAnimation","event_name","typewriter_wrapper","_convertCharsToHTML","_typingAnimation","_typingAnimationFrame","total_items","typing_speed","item_to_type","chars","chars_html_wrap_array","char_class_name","chars_array","char_element","char_id","_generateUniqueID","strings_array_check","strings_string_check","strings_chars_array","_cursorAnimationFrame","opacity_amount","cursor_el","_cursorAnimation","_appendText","items","cursor_class_name","cursor_element","_pauseCursorAnimation","_restartCursorAnimation","_randomID","possible","temp_id","UIkit","hyphenateCache","hyphenateRe","hyphenate","str","camelizeRe","camelize","toUpper","ucfirst","strPrototype","startsWithFn","startsWith","search","lastIndexOf","endsWithFn","endsWith","includesFn","includesStr","includes","includesArray","isString","isDocument","isJQuery","isNode","Node","isNodeCollection","NodeList","HTMLCollection","isBoolean","toBoolean","toNumber","Number","toFloat","toNode","arrayProto","toNodes","Boolean","toList","toMs","assign","cb","sortBy","clamp","intersectRect","r1","r2","bottom","pointInRect","point","Dimensions","ratio","dimensions","aProp","contain","maxDimensions","this$1","cover","hasAttr","hasAttribute","filterAttr","attribute","replacement","query","isContextSelector","queryAll","findAll","_query","queryFn","removes","contextSanitizeRe","ctx","selectors$1","previousElementSibling","contextSelectorRe","elProto","Element","matchesFn","closestFn","ancestor","escapeFn","CSS","voidElements","area","br","embed","hr","img","keygen","menuitem","meta","track","wbr","isVoidElement","tagName","isVisible","selInput","isInput","within","ref","getArgs","listener","useCapture","toEventTarget","condition","toEventTargets","reduce","notCanceled","dispatchEvent","createEvent","initCustomEvent","isEventTarget","EventTarget","preventClick","Promise$1","Promise","PromiseFn","PENDING","setImmediate","executor","r","iterable","resolver","race","env","getImage","srcset","sizes","Image","unbind1","unbind2","getIndex","finite","hasChildNodes","insertNodes","called","reason","onResolved","fragmentRe","singleTagRe","insertAdjacentHTML","nextElementSibling","apply$1","removeClasses","cls","replaceClass","classList","force","getArgs$1","supports","Force","Multiple","animation-iteration-count","column-count","fill-opacity","flex-grow","flex-shrink","font-weight","line-height","z-index","property","propName","getStyle","removeProperty","pseudoElt","vars","getCssVar","prefixedName","transition","timing","transition-property","transition-duration","transition-timing-function","Transition","cancel","animationPrefix","clsCancelAnimation","origin","arguments$1","hasReset","in","isHtml","$$","dirs","positionAt","elAttach","targetAttach","elOffset","targetOffset","flip","boundary","getPos","flipped","dim","getDimensions","targetDim","moveTo","getOffsets","window$1","align","alignFlip","elemOffset","centerOffset","centerTargetOffset","newVal","coordinates","currentOffset","innerHeight","innerWidth","docEl","propName$$1","boxModelAdjust","attach","factor","flipPosition","isInView","topOffset","leftOffset","relativeToViewport","offsetPosition","elTop","elLeft","scrolledOver","heightOffset","document$1","elHeight","vp","vh","offsetTop","offsetLeft","isRtl","hasTouchEvents","hasPointerEvents","PointerEvent","hasTouch","DocumentTouch","navigator","maxTouchPoints","pointerDown","pointerMove","pointerUp","pointerEnter","pointerLeave","fastdom","reads","writes","read","task","scheduleFlush","write","clear","remove$1","flush","runTasks","scheduled","tasks","item","MouseTracker","slope","positions","ticking","movesTo","position$$1","prevPos","points","strats","mergeFnData","parentVal","childVal","vm","created","beforeConnect","connected","beforeDisconnect","disconnected","destroy","update","methods","defaultStrat","mergeOptions","child","extends","mixins","mergeKey","key$1","parseOptions","Player","post","cmd","contentWindow","postMessage","isVideo","isYoutube","isVimeo","isHTML5","isIFrame","enableApi","poller","youtube","vimeo","setInterval","data$$1","player_id","clearInterval","play","pause","mute","muted","clickTimeout","swipeTimeout","tapTimeout","clicked","touch","cancelAll","getPos$1","getType","x1","y1","x2","y2","touching","isTouch","getComponentName","_init","util","freeze","DATA","_isReady","_callUpdate","use","plugin","installed","mixin","component","Sub","create","path","globalAPI","_callHook","$options","_callConnected","_connected","_initProps","_initEvents","_initObserver","_callReady","_callDisconnected","_observer","disconnect","_unbindEvents","_resetComputeds","updates","_frames","hooksAPI","getProps","coerce","prop$1","registerComputed","_computeds","$props","$el","registerEvent","capture","filter$$1","selfFilter","_events","notIn","every","toMedia","ref$1","index$$1","normalizeData","_uid","_initData","_initMethods","_initComputeds","$mount","$name","exclude","MutationObserver","$reset","observe","attributeFilter","stateAPI","components","argsArray","functional","instance","getComponent","$destroy","install","_initialized","getComponents","connect","name$1","componentAPI","$emit","removeEl","$create","$update","$getComponent","defineProperties","$container","getOwnPropertyDescriptor","instanceAPI","Class","Togglable","queued","initProps","paddingTop","paddingBottom","marginTop","marginBottom","hideProps","hasAnimation","hasTransition","toggleElement","animate$$1","_toggleElement","toggled","isToggled","untoggled","scroll","toggleNow","updateAria","_toggleHeight","_toggleAnimation","_toggleImmediate","_toggle","changed","inner","lastElementChild","currentHeight","endHeight","Accordion","collapsible","multiple","clsOpen","isItem","_wrapper","Alert","close","selClose","Core","started","passive","hoverSelector","registered","Video","automute","autoplay","inView","preload","player","Cover","height$$1","width$$1","clientWidth","clientHeight","loadedmetadata","Position","clsPos","offset$$1","axis","getAxis","Drop","mode","boundaryAlign","delayShow","delayHide","clsDrop","hoverIdle","tracker","clearTimers","isActive","tryShow","isDelaying","showTimer","isParentOf","hideTimer","isChildOf","drop","alignTo","Dropdown","FormCustom","files","Gif","inview","Margin","firstColumn","rows","getRows","stacks","row","getOffset","leftDim","Grid","masonry","parallax","clsStack","translates","sum","maxColumnHeight","scrolled","HeightMatch","minHeight","boxSizing","heights","HeightViewport","offsetBottom","viewport","svgs","SVG","icon","assign$$1","svg","getSvg","symbols","symbolRe","parseSymbols","isEqualNode","svgEl","decodeURIComponent","icons","spinner","totop","marker","close-icon","close-large","navbar-toggle-icon","overlay-icon","pagination-next","pagination-previous","search-icon","search-large","search-navbar","slidenav-next","slidenav-next-large","slidenav-previous","slidenav-previous-large","Icon","added","cmp","isIcon","getIcon","applyRtl","IconComponent","Slidenav","Search","Close","Spinner","Img","dataSrc","dataSrcset","dataSizes","dataWidth","dataHeight","cacheKey","isImg","toPx","storage","setSrcAttrs","color","matches$$1","sizesRe","matchMedia","size","substring","sizeRe","additionRe","urlCache","canvas","getContext","fillStyle","fillRect","toDataURL","getPlaceholderImage","currentSrc","sessionStorage","active$1","Leader","fill","media","clsWrapper","clsHide","attrFill","wrapper","Container","Modal","selPanel","escClose","bgClose","overlay","panel","transitionElement","transitionDuration","registerEvents","clsPage","scrollbarWidth","found","getActive","Modal$1","modal","dialog","alert","labels","confirm","resolved","prompt","ok","Nav","Navbar","dropdown","dropbar","dropbarMode","dropbarAnchor","dropdowns","getDropdown","transitionTo","newHeight","oldHeight","clip","Offcanvas","clsContainer","clsFlip","clsContent","clsContentAnimation","clsSidebarAnimation","clsMode","clsOverlay","OverflowAuto","Responsive","Scroll","docHeight","winHeight","startY","currentY","Scrollspy","repeat","inViewClass","elData","toggles","ScrollspyNav","Sticky","clsActive","clsInactive","clsFixed","clsBelow","selTarget","widthElement","showOnUp","placeholder","bottomOffset","parseProp","inactive","scrollY","propOffset","Switcher","swiping","attrItem","connects","getSelection","hasPrev","Tab","Toggle","core","Countdown","timespan","digits","digit","style$1","targetClass","Animate","action","sheet","insertRule","propsFrom","oldScrollY","propsTo","getPositionWithMargin","pointerEvents","Filter","selActive","actives","isEqualList","setState","getState","mergeState","attr$$1","stateFilter","ref_sort","stateSort","stateOrder","getFilter","group","matchFilter","apply$$1","getSelector","sorted","localeCompare","sortItems","filterBy","listA","listB","Animations","slide","transform","translate","translated","scale3d","Animations$1","fade","triggerUpdate","Slider","autoplayInterval","pauseOnHover","startAutoplay","stopAutoplay","isHovering","preventCatch","slidesSelector","drag","_transitioner","getDistance","dragging","prevIndex","unbindMove","move","distance","slides","dis","nextIndex","_getDistance","itemShown","edge","_translate","_show","dirChange","selNav","nav","navItemSelector","navItems","maxIndex","updateNav","getValidIndex","clsActivated","velocity","Transitioner","transitionOptions","speedUp","selList","itemshown","queueIndex","getDirection","_getTransitioner","transitioner","Slideshow","Animations$$1","itemshow itemhide itemshown itemhidden","itemshow","beforeitemshow","itemhidden","LightboxPanel","delayControls","videoAutoplay","template","hideControls","getItem","loadItem","alt","setItem","setError","video","poster","videoWidth","videoHeight","setIframe","getIframe","encodeURI","withCredentials","ref_response","showControls","controlsTimer","Lightbox","lightboxPanel","_destroy","containers","Notification","clsClose","clsMsg","notification","closeAll","immediate","removeFn","props$1","Parallax","bgPos","isColor","isCssProp","steps","covers","down","bgProps","bg","backgroundSize","_image","dimEl","naturalWidth","naturalHeight","span","bgPosFloat","backgroundRepeat","getCss","css$$1","getValue","ref$2","getStep","Parallax$1","ease$1","SliderReactive","getLeft","center","getElLeft","centerEl","getMax","getWidth","triggerUpdate$1","Slider$1","sets","updateTranslates","getItemIn","getActives","slideLeft","avgWidth","leftCenter","slideWidth","reorder","slideIndex","SliderParallax","selItem","ref_detail","getCurrent","isIn","obj$1","obj$2","Animations$2","pull","Slideshow$1","maxHeight","hgt","Sortable","clsItem","clsPlaceholder","clsDrag","clsDragState","clsBase","clsNoDrag","clsEmpty","clsCustom","touched","outerHTML","elementFromPoint","sortable","getSortable","previous","isPredecessor","Tooltip","title","_hasTitle","aria-expanded","_unbind","tooltip","Upload","allow","clsDragover","concurrent","maxSize","mime","msgInvalidMime","msgInvalidName","msgInvalidSize","beforeAll","completeAll","loadEnd","loadStart","upload","transfer","dataTransfer","dragenter","dragover","dragleave","chunks","chunk","FormData","mutations","applyMutation","childList","subtree","characterData","mutation","addedNodes","removedNodes","i$1","applyChildList","attributeName","applyAttribute","boot","startjam","endjam","goal","heading","refreshCountdown","reload","JamActions","[object Object]","csrf_token","X-CSRFToken","jam","send_json","form","question","participant","revision_diff","revisions","id_reg","getRevisionId","getRevision","onchange","rev","aft","bef","radioButtonChecked","sidebar"],"mappings":"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","file":"script.js","sourcesContent":["\"use strict\";\n\n/* exported error_typewriter */\n\nfunction error_typewriter() {\n const app = document.getElementById(\"error\");\n\n const typewriter = new Typewriter(app, {\n \"loop\": false,\n \"deleteSpeed\": 40,\n \"typingSpeed\": \"natural\",\n \"devMode\": false\n });\n\n function closeWindow() {\n const app = document.getElementById(\"win\");\n const current_class = app.getAttribute(\"class\");\n app.setAttribute(\"class\", `${current_class } uk-animation-scale-up uk-animation-reverse`);\n typewriter.stop();\n }\n\n document.getElementById(\"terminal-close\").onclick = closeWindow;\n\n typewriter.appendText(\"Python 3.6.4 (default, Jan 5 2018, 02:35:40)\\n\")\n .appendText(\"[GCC 7.2.1 20171224] on darwin\\n\")\n .appendText(\"Type \\\"help\\\", \\\"copyright\\\", \\\"credits\\\" or \\\"license\\\" for more information.\\n\")\n .appendText(\">>> \")\n .pauseFor(1000)\n .typeString(\"impor requests\")\n .deleteChars(9)\n .typeString(\"t requests\\n\")\n .appendText(\">>> \")\n .pauseFor(750)\n .changeSettings({\"typingSpeed\": \"natural\"})\n .typeString(`response = requests.${ window._RequestMethod }('https://pythim`)\n .deleteChars(2)\n .typeString(\"ondiscord.con/\")\n .deleteChars(2)\n .typeString(`m${ window._Path }')\\n`)\n .pauseFor(1000)\n .appendText(`&lt;Response [${ window._Code }]&gt;\\n>>> `)\n .typeString(\"# hmmmm\")\n .pauseFor(1000)\n .deleteChars(7)\n .pauseFor(1000)\n .typeString(\"response.text\\n\")\n .appendText(`${ window._ErrorMsg }\\n>>> `)\n .start();\n}\n","\"use strict\";\n\nfunction getScript(url, integrity, cross_origin) {\n const script = document.createElement(\"script\");\n script.type = \"text/javascript\";\n script.src = url;\n script.defer = true;\n\n if (integrity !== undefined) {\n script.integrity = integrity;\n }\n\n if (cross_origin !== undefined) {\n script.crossOrigin = cross_origin;\n }\n\n document.getElementsByTagName(\"head\")[0].appendChild(script);\n}\n\nfunction setClass(selector, my_class) {\n const element = document.querySelector(selector);\n // console.log(element);\n element.className = my_class;\n}\n\nfunction removeClass(selector, my_class) {\n const element = document.querySelector(selector);\n const reg = new RegExp(`(^| )${my_class}($| )`, \"g\");\n element.className = element.className.replace(reg, \" \");\n}\n\n// hide the html when the page loads, but only if js is turned on.\nsetClass(\"html\", \"prevent-fouc\");\n\n// when the DOM has finished loading, unhide the html\ndocument.onreadystatechange = function () {\n if (document.readyState === \"interactive\") {\n removeClass(\"html\", \"prevent-fouc\");\n getScript(\n \"https://pro.fontawesome.com/releases/v5.0.13/js/all.js\", // URL\n \"sha384-d84LGg2pm9KhR4mCAs3N29GQ4OYNy+K+FBHX8WhimHpPm86c839++MDABegrZ3gn\", // Integrity\n \"anonymous\" // Cross-origin\n );\n getScript(\n \"https://cdnjs.cloudflare.com/ajax/libs/ace/1.3.3/ace.js\"\n );\n getScript(\n \"https://cdn.jsdelivr.net/npm/flatpickr\"\n );\n }\n};\n","/*!\n * jQuery JavaScript Library v3.3.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2018-01-20T17:24Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML <object> elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, doc, node ) {\n\t\tdoc = doc || document;\n\n\t\tvar i,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\t\t\t\tif ( node[ i ] ) {\n\t\t\t\t\tscript[ i ] = node[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.3.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && Array.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\n\t\t/* eslint-disable no-unused-vars */\n\t\t// See https://github.com/eslint/eslint/issues/6125\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tDOMEval( code );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.3\n * https://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-08-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tdisabledAncestor = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && (\"form\" in elem || \"label\" in elem);\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tdisabledAncestor( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n if ( nodeName( elem, \"iframe\" ) ) {\n return elem.contentDocument;\n }\n\n // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n // Treat the template element as a regular one in browsers that\n // don't support it.\n if ( nodeName( elem, \"template\" ) ) {\n elem = elem.content || elem;\n }\n\n return jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tjQuery.contains( elem.ownerDocument, elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, contains, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( contains ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\nvar documentElement = document.documentElement;\n\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 only\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), doc, node );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1></$2>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = div.offsetWidth === 36 || \"absolute\";\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t},\n\n\tcssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style;\n\n// Return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( name ) {\n\n\t// Shortcut for names that are not vendor prefixed\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a property mapped along what jQuery.cssProps suggests or to\n// a vendor prefixed property.\nfunction finalPropName( name ) {\n\tvar ret = jQuery.cssProps[ name ];\n\tif ( !ret ) {\n\t\tret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;\n\t}\n\treturn ret;\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\t\t) );\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\t\tval = curCSS( elem, dimension, styles ),\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox;\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\t// Check for style in case a browser which returns unreliable values\n\t// for getComputedStyle silently falls back to the reliable elem.style\n\tvalueIsBorderBox = valueIsBorderBox &&\n\t\t( support.boxSizingReliable() || val === elem.style[ dimension ] );\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\tif ( val === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) {\n\n\t\tval = elem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ];\n\n\t\t// offsetWidth/offsetHeight provide border-box values\n\t\tvalueIsBorderBox = true;\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\tif ( type === \"number\" ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\t\t\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra && boxModelAdjustment(\n\t\t\t\t\telem,\n\t\t\t\t\tdimension,\n\t\t\t\t\textra,\n\t\t\t\t\tisBorderBox,\n\t\t\t\t\tstyles\n\t\t\t\t);\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && support.scrollboxSize() === styles.position ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 &&\n\t\t\t\t( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\t\t\"throws\": true\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" ).prop( {\n\t\t\t\t\tcharset: s.scriptCharset,\n\t\t\t\t\tsrc: s.url\n\t\t\t\t} ).on(\n\t\t\t\t\t\"load error\",\n\t\t\t\t\tcallback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n} );\n\njQuery.fn.extend( {\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t}\n} );\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( !noGlobal ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","//! moment-timezone.js\n//! version : 0.5.17\n//! Copyright (c) JS Foundation and other contributors\n//! license : MIT\n//! github.com/moment/moment-timezone\n\n(function (root, factory) {\n\t\"use strict\";\n\n\t/*global define*/\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(['moment'], factory); // AMD\n\t} else if (typeof module === 'object' && module.exports) {\n\t\tmodule.exports = factory(require('moment')); // Node\n\t} else {\n\t\tfactory(root.moment); // Browser\n\t}\n}(this, function (moment) {\n\t\"use strict\";\n\n\t// Do not load moment-timezone a second time.\n\t// if (moment.tz !== undefined) {\n\t// \tlogError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);\n\t// \treturn moment;\n\t// }\n\n\tvar VERSION = \"0.5.17\",\n\t\tzones = {},\n\t\tlinks = {},\n\t\tnames = {},\n\t\tguesses = {},\n\t\tcachedGuess,\n\n\t\tmomentVersion = moment.version.split('.'),\n\t\tmajor = +momentVersion[0],\n\t\tminor = +momentVersion[1];\n\n\t// Moment.js version check\n\tif (major < 2 || (major === 2 && minor < 6)) {\n\t\tlogError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');\n\t}\n\n\t/************************************\n\t\tUnpacking\n\t************************************/\n\n\tfunction charCodeToInt(charCode) {\n\t\tif (charCode > 96) {\n\t\t\treturn charCode - 87;\n\t\t} else if (charCode > 64) {\n\t\t\treturn charCode - 29;\n\t\t}\n\t\treturn charCode - 48;\n\t}\n\n\tfunction unpackBase60(string) {\n\t\tvar i = 0,\n\t\t\tparts = string.split('.'),\n\t\t\twhole = parts[0],\n\t\t\tfractional = parts[1] || '',\n\t\t\tmultiplier = 1,\n\t\t\tnum,\n\t\t\tout = 0,\n\t\t\tsign = 1;\n\n\t\t// handle negative numbers\n\t\tif (string.charCodeAt(0) === 45) {\n\t\t\ti = 1;\n\t\t\tsign = -1;\n\t\t}\n\n\t\t// handle digits before the decimal\n\t\tfor (i; i < whole.length; i++) {\n\t\t\tnum = charCodeToInt(whole.charCodeAt(i));\n\t\t\tout = 60 * out + num;\n\t\t}\n\n\t\t// handle digits after the decimal\n\t\tfor (i = 0; i < fractional.length; i++) {\n\t\t\tmultiplier = multiplier / 60;\n\t\t\tnum = charCodeToInt(fractional.charCodeAt(i));\n\t\t\tout += num * multiplier;\n\t\t}\n\n\t\treturn out * sign;\n\t}\n\n\tfunction arrayToInt (array) {\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tarray[i] = unpackBase60(array[i]);\n\t\t}\n\t}\n\n\tfunction intToUntil (array, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tarray[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds\n\t\t}\n\n\t\tarray[length - 1] = Infinity;\n\t}\n\n\tfunction mapIndices (source, indices) {\n\t\tvar out = [], i;\n\n\t\tfor (i = 0; i < indices.length; i++) {\n\t\t\tout[i] = source[indices[i]];\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction unpack (string) {\n\t\tvar data = string.split('|'),\n\t\t\toffsets = data[2].split(' '),\n\t\t\tindices = data[3].split(''),\n\t\t\tuntils = data[4].split(' ');\n\n\t\tarrayToInt(offsets);\n\t\tarrayToInt(indices);\n\t\tarrayToInt(untils);\n\n\t\tintToUntil(untils, indices.length);\n\n\t\treturn {\n\t\t\tname : data[0],\n\t\t\tabbrs : mapIndices(data[1].split(' '), indices),\n\t\t\toffsets : mapIndices(offsets, indices),\n\t\t\tuntils : untils,\n\t\t\tpopulation : data[5] | 0\n\t\t};\n\t}\n\n\t/************************************\n\t\tZone object\n\t************************************/\n\n\tfunction Zone (packedString) {\n\t\tif (packedString) {\n\t\t\tthis._set(unpack(packedString));\n\t\t}\n\t}\n\n\tZone.prototype = {\n\t\t_set : function (unpacked) {\n\t\t\tthis.name = unpacked.name;\n\t\t\tthis.abbrs = unpacked.abbrs;\n\t\t\tthis.untils = unpacked.untils;\n\t\t\tthis.offsets = unpacked.offsets;\n\t\t\tthis.population = unpacked.population;\n\t\t},\n\n\t\t_index : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\tuntils = this.untils,\n\t\t\t\ti;\n\n\t\t\tfor (i = 0; i < untils.length; i++) {\n\t\t\t\tif (target < untils[i]) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tparse : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\toffsets = this.offsets,\n\t\t\t\tuntils = this.untils,\n\t\t\t\tmax = untils.length - 1,\n\t\t\t\toffset, offsetNext, offsetPrev, i;\n\n\t\t\tfor (i = 0; i < max; i++) {\n\t\t\t\toffset = offsets[i];\n\t\t\t\toffsetNext = offsets[i + 1];\n\t\t\t\toffsetPrev = offsets[i ? i - 1 : i];\n\n\t\t\t\tif (offset < offsetNext && tz.moveAmbiguousForward) {\n\t\t\t\t\toffset = offsetNext;\n\t\t\t\t} else if (offset > offsetPrev && tz.moveInvalidForward) {\n\t\t\t\t\toffset = offsetPrev;\n\t\t\t\t}\n\n\t\t\t\tif (target < untils[i] - (offset * 60000)) {\n\t\t\t\t\treturn offsets[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn offsets[max];\n\t\t},\n\n\t\tabbr : function (mom) {\n\t\t\treturn this.abbrs[this._index(mom)];\n\t\t},\n\n\t\toffset : function (mom) {\n\t\t\tlogError(\"zone.offset has been deprecated in favor of zone.utcOffset\");\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t},\n\n\t\tutcOffset : function (mom) {\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t}\n\t};\n\n\t/************************************\n\t\tCurrent Timezone\n\t************************************/\n\n\tfunction OffsetAt(at) {\n\t\tvar timeString = at.toTimeString();\n\t\tvar abbr = timeString.match(/\\([a-z ]+\\)/i);\n\t\tif (abbr && abbr[0]) {\n\t\t\t// 17:56:31 GMT-0600 (CST)\n\t\t\t// 17:56:31 GMT-0600 (Central Standard Time)\n\t\t\tabbr = abbr[0].match(/[A-Z]/g);\n\t\t\tabbr = abbr ? abbr.join('') : undefined;\n\t\t} else {\n\t\t\t// 17:56:31 CST\n\t\t\t// 17:56:31 GMT+0800 (台北標準時間)\n\t\t\tabbr = timeString.match(/[A-Z]{3,5}/g);\n\t\t\tabbr = abbr ? abbr[0] : undefined;\n\t\t}\n\n\t\tif (abbr === 'GMT') {\n\t\t\tabbr = undefined;\n\t\t}\n\n\t\tthis.at = +at;\n\t\tthis.abbr = abbr;\n\t\tthis.offset = at.getTimezoneOffset();\n\t}\n\n\tfunction ZoneScore(zone) {\n\t\tthis.zone = zone;\n\t\tthis.offsetScore = 0;\n\t\tthis.abbrScore = 0;\n\t}\n\n\tZoneScore.prototype.scoreOffsetAt = function (offsetAt) {\n\t\tthis.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);\n\t\tif (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {\n\t\t\tthis.abbrScore++;\n\t\t}\n\t};\n\n\tfunction findChange(low, high) {\n\t\tvar mid, diff;\n\n\t\twhile ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {\n\t\t\tmid = new OffsetAt(new Date(low.at + diff));\n\t\t\tif (mid.offset === low.offset) {\n\t\t\t\tlow = mid;\n\t\t\t} else {\n\t\t\t\thigh = mid;\n\t\t\t}\n\t\t}\n\n\t\treturn low;\n\t}\n\n\tfunction userOffsets() {\n\t\tvar startYear = new Date().getFullYear() - 2,\n\t\t\tlast = new OffsetAt(new Date(startYear, 0, 1)),\n\t\t\toffsets = [last],\n\t\t\tchange, next, i;\n\n\t\tfor (i = 1; i < 48; i++) {\n\t\t\tnext = new OffsetAt(new Date(startYear, i, 1));\n\t\t\tif (next.offset !== last.offset) {\n\t\t\t\tchange = findChange(last, next);\n\t\t\t\toffsets.push(change);\n\t\t\t\toffsets.push(new OffsetAt(new Date(change.at + 6e4)));\n\t\t\t}\n\t\t\tlast = next;\n\t\t}\n\n\t\tfor (i = 0; i < 4; i++) {\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));\n\t\t}\n\n\t\treturn offsets;\n\t}\n\n\tfunction sortZoneScores (a, b) {\n\t\tif (a.offsetScore !== b.offsetScore) {\n\t\t\treturn a.offsetScore - b.offsetScore;\n\t\t}\n\t\tif (a.abbrScore !== b.abbrScore) {\n\t\t\treturn a.abbrScore - b.abbrScore;\n\t\t}\n\t\treturn b.zone.population - a.zone.population;\n\t}\n\n\tfunction addToGuesses (name, offsets) {\n\t\tvar i, offset;\n\t\tarrayToInt(offsets);\n\t\tfor (i = 0; i < offsets.length; i++) {\n\t\t\toffset = offsets[i];\n\t\t\tguesses[offset] = guesses[offset] || {};\n\t\t\tguesses[offset][name] = true;\n\t\t}\n\t}\n\n\tfunction guessesForUserOffsets (offsets) {\n\t\tvar offsetsLength = offsets.length,\n\t\t\tfilteredGuesses = {},\n\t\t\tout = [],\n\t\t\ti, j, guessesOffset;\n\n\t\tfor (i = 0; i < offsetsLength; i++) {\n\t\t\tguessesOffset = guesses[offsets[i].offset] || {};\n\t\t\tfor (j in guessesOffset) {\n\t\t\t\tif (guessesOffset.hasOwnProperty(j)) {\n\t\t\t\t\tfilteredGuesses[j] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (i in filteredGuesses) {\n\t\t\tif (filteredGuesses.hasOwnProperty(i)) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction rebuildGuess () {\n\n\t\t// use Intl API when available and returning valid time zone\n\t\ttry {\n\t\t\tvar intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\t\t\tif (intlName && intlName.length > 3) {\n\t\t\t\tvar name = names[normalizeName(intlName)];\n\t\t\t\tif (name) {\n\t\t\t\t\treturn name;\n\t\t\t\t}\n\t\t\t\tlogError(\"Moment Timezone found \" + intlName + \" from the Intl api, but did not have that data loaded.\");\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// Intl unavailable, fall back to manual guessing.\n\t\t}\n\n\t\tvar offsets = userOffsets(),\n\t\t\toffsetsLength = offsets.length,\n\t\t\tguesses = guessesForUserOffsets(offsets),\n\t\t\tzoneScores = [],\n\t\t\tzoneScore, i, j;\n\n\t\tfor (i = 0; i < guesses.length; i++) {\n\t\t\tzoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);\n\t\t\tfor (j = 0; j < offsetsLength; j++) {\n\t\t\t\tzoneScore.scoreOffsetAt(offsets[j]);\n\t\t\t}\n\t\t\tzoneScores.push(zoneScore);\n\t\t}\n\n\t\tzoneScores.sort(sortZoneScores);\n\n\t\treturn zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;\n\t}\n\n\tfunction guess (ignoreCache) {\n\t\tif (!cachedGuess || ignoreCache) {\n\t\t\tcachedGuess = rebuildGuess();\n\t\t}\n\t\treturn cachedGuess;\n\t}\n\n\t/************************************\n\t\tGlobal Methods\n\t************************************/\n\n\tfunction normalizeName (name) {\n\t\treturn (name || '').toLowerCase().replace(/\\//g, '_');\n\t}\n\n\tfunction addZone (packed) {\n\t\tvar i, name, split, normalized;\n\n\t\tif (typeof packed === \"string\") {\n\t\t\tpacked = [packed];\n\t\t}\n\n\t\tfor (i = 0; i < packed.length; i++) {\n\t\t\tsplit = packed[i].split('|');\n\t\t\tname = split[0];\n\t\t\tnormalized = normalizeName(name);\n\t\t\tzones[normalized] = packed[i];\n\t\t\tnames[normalized] = name;\n\t\t\taddToGuesses(normalized, split[2].split(' '));\n\t\t}\n\t}\n\n\tfunction getZone (name, caller) {\n\t\tname = normalizeName(name);\n\n\t\tvar zone = zones[name];\n\t\tvar link;\n\n\t\tif (zone instanceof Zone) {\n\t\t\treturn zone;\n\t\t}\n\n\t\tif (typeof zone === 'string') {\n\t\t\tzone = new Zone(zone);\n\t\t\tzones[name] = zone;\n\t\t\treturn zone;\n\t\t}\n\n\t\t// Pass getZone to prevent recursion more than 1 level deep\n\t\tif (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {\n\t\t\tzone = zones[name] = new Zone();\n\t\t\tzone._set(link);\n\t\t\tzone.name = names[name];\n\t\t\treturn zone;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction getNames () {\n\t\tvar i, out = [];\n\n\t\tfor (i in names) {\n\t\t\tif (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out.sort();\n\t}\n\n\tfunction addLink (aliases) {\n\t\tvar i, alias, normal0, normal1;\n\n\t\tif (typeof aliases === \"string\") {\n\t\t\taliases = [aliases];\n\t\t}\n\n\t\tfor (i = 0; i < aliases.length; i++) {\n\t\t\talias = aliases[i].split('|');\n\n\t\t\tnormal0 = normalizeName(alias[0]);\n\t\t\tnormal1 = normalizeName(alias[1]);\n\n\t\t\tlinks[normal0] = normal1;\n\t\t\tnames[normal0] = alias[0];\n\n\t\t\tlinks[normal1] = normal0;\n\t\t\tnames[normal1] = alias[1];\n\t\t}\n\t}\n\n\tfunction loadData (data) {\n\t\taddZone(data.zones);\n\t\taddLink(data.links);\n\t\ttz.dataVersion = data.version;\n\t}\n\n\tfunction zoneExists (name) {\n\t\tif (!zoneExists.didShowError) {\n\t\t\tzoneExists.didShowError = true;\n\t\t\t\tlogError(\"moment.tz.zoneExists('\" + name + \"') has been deprecated in favor of !moment.tz.zone('\" + name + \"')\");\n\t\t}\n\t\treturn !!getZone(name);\n\t}\n\n\tfunction needsOffset (m) {\n\t\tvar isUnixTimestamp = (m._f === 'X' || m._f === 'x');\n\t\treturn !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);\n\t}\n\n\tfunction logError (message) {\n\t\tif (typeof console !== 'undefined' && typeof console.error === 'function') {\n\t\t\tconsole.error(message);\n\t\t}\n\t}\n\n\t/************************************\n\t\tmoment.tz namespace\n\t************************************/\n\n\tfunction tz (input) {\n\t\tvar args = Array.prototype.slice.call(arguments, 0, -1),\n\t\t\tname = arguments[arguments.length - 1],\n\t\t\tzone = getZone(name),\n\t\t\tout = moment.utc.apply(null, args);\n\n\t\tif (zone && !moment.isMoment(input) && needsOffset(out)) {\n\t\t\tout.add(zone.parse(out), 'minutes');\n\t\t}\n\n\t\tout.tz(name);\n\n\t\treturn out;\n\t}\n\n\ttz.version = VERSION;\n\ttz.dataVersion = '';\n\ttz._zones = zones;\n\ttz._links = links;\n\ttz._names = names;\n\ttz.add = addZone;\n\ttz.link = addLink;\n\ttz.load = loadData;\n\ttz.zone = getZone;\n\ttz.zoneExists = zoneExists; // deprecated in 0.1.0\n\ttz.guess = guess;\n\ttz.names = getNames;\n\ttz.Zone = Zone;\n\ttz.unpack = unpack;\n\ttz.unpackBase60 = unpackBase60;\n\ttz.needsOffset = needsOffset;\n\ttz.moveInvalidForward = true;\n\ttz.moveAmbiguousForward = false;\n\n\t/************************************\n\t\tInterface with Moment.js\n\t************************************/\n\n\tvar fn = moment.fn;\n\n\tmoment.tz = tz;\n\n\tmoment.defaultZone = null;\n\n\tmoment.updateOffset = function (mom, keepTime) {\n\t\tvar zone = moment.defaultZone,\n\t\t\toffset;\n\n\t\tif (mom._z === undefined) {\n\t\t\tif (zone && needsOffset(mom) && !mom._isUTC) {\n\t\t\t\tmom._d = moment.utc(mom._a)._d;\n\t\t\t\tmom.utc().add(zone.parse(mom), 'minutes');\n\t\t\t}\n\t\t\tmom._z = zone;\n\t\t}\n\t\tif (mom._z) {\n\t\t\toffset = mom._z.utcOffset(mom);\n\t\t\tif (Math.abs(offset) < 16) {\n\t\t\t\toffset = offset / 60;\n\t\t\t}\n\t\t\tif (mom.utcOffset !== undefined) {\n\t\t\t\tmom.utcOffset(-offset, keepTime);\n\t\t\t} else {\n\t\t\t\tmom.zone(offset, keepTime);\n\t\t\t}\n\t\t}\n\t};\n\n\tfn.tz = function (name, keepTime) {\n\t\tif (name) {\n\t\t\tthis._z = getZone(name);\n\t\t\tif (this._z) {\n\t\t\t\tmoment.updateOffset(this, keepTime);\n\t\t\t} else {\n\t\t\t\tlogError(\"Moment Timezone has no data for \" + name + \". See http://momentjs.com/timezone/docs/#/data-loading/.\");\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif (this._z) { return this._z.name; }\n\t};\n\n\tfunction abbrWrap (old) {\n\t\treturn function () {\n\t\t\tif (this._z) { return this._z.abbr(this); }\n\t\t\treturn old.call(this);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap (old) {\n\t\treturn function () {\n\t\t\tthis._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfn.zoneName = abbrWrap(fn.zoneName);\n\tfn.zoneAbbr = abbrWrap(fn.zoneAbbr);\n\tfn.utc = resetZoneWrap(fn.utc);\n\n\tmoment.tz.setDefault = function(name) {\n\t\tif (major < 2 || (major === 2 && minor < 9)) {\n\t\t\tlogError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');\n\t\t}\n\t\tmoment.defaultZone = name ? getZone(name) : null;\n\t\treturn moment;\n\t};\n\n\t// Cloning a moment should include the _z property.\n\tvar momentProperties = moment.momentProperties;\n\tif (Object.prototype.toString.call(momentProperties) === '[object Array]') {\n\t\t// moment 2.8.1+\n\t\tmomentProperties.push('_z');\n\t\tmomentProperties.push('_a');\n\t} else if (momentProperties) {\n\t\t// moment 2.7.0\n\t\tmomentProperties._z = null;\n\t}\n\n\t// INJECT DATA\n\n\treturn moment;\n}));","//! moment.js\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks () {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback (callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return (Object.getOwnPropertyNames(obj).length === 0);\n } else {\n var k;\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n\n function map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null,\n rfc2822 : false,\n weekdayMismatch : false\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n var updateInProgress = false;\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n }\n\n function absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' + (/\\d{1,2}/).source);\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n };\n\n function calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n var defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n };\n\n function longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate () {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal (number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n };\n\n function relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n }\n\n function pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n var formatFunctions = {};\n\n var formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var match1 = /\\d/; // 0 - 9\n var match2 = /\\d\\d/; // 00 - 99\n var match3 = /\\d{3}/; // 000 - 999\n var match4 = /\\d{4}/; // 0000 - 9999\n var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n var match1to2 = /\\d\\d?/; // 0 - 99\n var match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\n var match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\n var match1to3 = /\\d{1,3}/; // 0 - 999\n var match1to4 = /\\d{1,4}/; // 0 - 9999\n var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n var matchUnsigned = /\\d+/; // 0 - inf\n var matchSigned = /[+-]?\\d+/; // -inf - inf\n\n var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n var matchWord = /[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;\n\n var regexes = {};\n\n function addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0;\n var MONTH = 1;\n var DATE = 2;\n var HOUR = 3;\n var MINUTE = 4;\n var SECOND = 5;\n var MILLISECOND = 6;\n var WEEK = 7;\n var WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear () {\n return isLeapYear(this.year());\n }\n\n function makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function set$1 (mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n }\n else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n\n function stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths (m, format) {\n if (!m) {\n return isArray(this._months) ? this._months :\n this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort (m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort :\n this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n }\n\n var defaultMonthsShortRegex = matchWord;\n function monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n\n var defaultMonthsRegex = matchWord;\n function monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n }\n\n function computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n\n function createDate (y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date = new Date(y, m, d, h, M, s, ms);\n\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n return date;\n }\n\n function createUTCDate (y) {\n var date = new Date(Date.UTC.apply(null, arguments));\n\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n };\n\n function localeFirstDayOfWeek () {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear () {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays (m, format) {\n if (!m) {\n return isArray(this._weekdays) ? this._weekdays :\n this._weekdays['standalone'];\n }\n return isArray(this._weekdays) ? this._weekdays[m.day()] :\n this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort (m) {\n return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin (m) {\n return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n var defaultWeekdaysRegex = matchWord;\n function weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n var defaultWeekdaysShortRegex = matchWord;\n function weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n var defaultWeekdaysMinRegex = matchWord;\n function weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n\n function computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n function meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n function localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n\n // MOMENTS\n\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n var getSetHour = makeGetSet('Hours', true);\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {};\n var localeFamilies = {};\n var globalLocale;\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n var aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {}\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n else {\n if ((typeof console !== 'undefined') && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, config) {\n if (config !== null) {\n var locale, parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale, tmpLocale, parentConfig = baseConfig;\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray (config) {\n var i, date, input = [], currentDate, expectedWeekday, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from begining of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to begining of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\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)?)?$/;\n var basicIsoRegex = /^\\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)?)?$/;\n\n var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n var isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n ];\n\n // iso time formats and regexes\n var isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n ];\n\n var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n // date from iso format\n function configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n var rfc2822 = /^(?:(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}))$/;\n\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10)\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n var obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n };\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10);\n var m = hm % 100, h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i));\n if (match) {\n var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from iso format or fallback\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n\n function meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n }\n\n function createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n var prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +(new Date());\n };\n\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n function isDurationValid(m) {\n for (var key in m) {\n if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n var unitHasDecimal = false;\n for (var i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration (obj) {\n return obj instanceof Duration;\n }\n\n function absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // FORMATTING\n\n function offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset (input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal () {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n var isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : (match[1] === '+') ? 1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {milliseconds: 0, months: 0};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add');\n var subtract = createAdder(-1, 'subtract');\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n }\n\n function calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n\n function clone () {\n return new Moment(this);\n }\n\n function isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween (from, to, units, inclusivity) {\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));\n }\n\n function isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units || 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n\n function isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input,units);\n }\n\n function isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input,units);\n }\n\n function diff (input, units, asFloat) {\n var that,\n zoneDelta,\n output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year': output = monthDiff(this, that) / 12; break;\n case 'month': output = monthDiff(this, that); break;\n case 'quarter': output = monthDiff(this, that) / 3; break;\n case 'second': output = (this - that) / 1e3; break; // 1000\n case 'minute': output = (this - that) / 6e4; break; // 1000 * 60\n case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60\n case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst\n case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default: output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true;\n var m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData () {\n return this._locale;\n }\n\n function startOf (units) {\n units = normalizeUnits(units);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (units) {\n case 'year':\n this.month(0);\n /* falls through */\n case 'quarter':\n case 'month':\n this.date(1);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n this.hours(0);\n /* falls through */\n case 'hour':\n this.minutes(0);\n /* falls through */\n case 'minute':\n this.seconds(0);\n /* falls through */\n case 'second':\n this.milliseconds(0);\n }\n\n // weeks are a special case\n if (units === 'week') {\n this.weekday(0);\n }\n if (units === 'isoWeek') {\n this.isoWeekday(1);\n }\n\n // quarters are also special\n if (units === 'quarter') {\n this.month(Math.floor(this.month() / 3) * 3);\n }\n\n return this;\n }\n\n function endOf (units) {\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond') {\n return this;\n }\n\n // 'date' is an alias for 'day', so it should be considered as such.\n if (units === 'date') {\n units = 'day';\n }\n\n return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n }\n\n function valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n }\n\n function unix () {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate () {\n return new Date(this.valueOf());\n }\n\n function toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n\n function toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n\n function toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2 () {\n return isValid(this);\n }\n\n function parsingFlags () {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt () {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n }\n\n function getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n\n function getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ?\n (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n // MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n function createUnix (input) {\n return createLocal(input * 1000);\n }\n\n function createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\n var mathAbs = Math.abs;\n\n function abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n\n function monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n\n function as (units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n return units === 'month' ? months : months / 12;\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1 () {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms');\n var asSeconds = makeAs('s');\n var asMinutes = makeAs('m');\n var asHours = makeAs('h');\n var asDays = makeAs('d');\n var asWeeks = makeAs('w');\n var asMonths = makeAs('M');\n var asYears = makeAs('y');\n\n function clone$1 () {\n return createDuration(this);\n }\n\n function get$2 (units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds');\n var seconds = makeGetter('seconds');\n var minutes = makeGetter('minutes');\n var hours = makeGetter('hours');\n var days = makeGetter('days');\n var months = makeGetter('months');\n var years = makeGetter('years');\n\n function weeks () {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round;\n var thresholds = {\n ss: 44, // a few seconds to seconds\n s : 45, // seconds to minute\n m : 45, // minutes to hour\n h : 22, // hours to day\n d : 26, // days to month\n M : 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize (withSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return ((x > 0) - (x < 0)) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n var totalSign = total < 0 ? '-' : '';\n var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return totalSign + 'P' +\n (Y ? ymSign + Y + 'Y' : '') +\n (M ? ymSign + M + 'M' : '') +\n (D ? daysSign + D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? hmsSign + h + 'H' : '') +\n (m ? hmsSign + m + 'M' : '') +\n (s ? hmsSign + s + 'S' : '');\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang;\n\n // Side effect imports\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n // Side effect imports\n\n\n hooks.version = '2.22.2';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'YYYY-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM' // <input type=\"month\" />\n };\n\n return hooks;\n\n})));","/*\n * Title: Typewriter JS\n * Description: A native javascript plugin that can be used to create an elegent automatic typewriter animation effect on websites.\n * Author: Tameem Safi\n * Website: https://safi.me.uk\n * Version: 1.0.0\n */\n\n(function() {\n\n\t\"use strict\";\n\n\t// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n\t// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n\t// requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel\n\t// MIT license\n\t(function() {\n\t var lastTime = 0;\n\t var vendors = ['ms', 'moz', 'webkit', 'o'];\n\t for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\n\t window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];\n\t window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame']\n\t || window[vendors[x]+'CancelRequestAnimationFrame'];\n\t }\n\n\t if (!window.requestAnimationFrame)\n\t window.requestAnimationFrame = function(callback, element) {\n\t var currTime = new Date().getTime();\n\t var timeToCall = Math.max(0, 16 - (currTime - lastTime));\n\t var id = window.setTimeout(function() { callback(currTime + timeToCall); },\n\t timeToCall);\n\t lastTime = currTime + timeToCall;\n\t return id;\n\t };\n\n\t if (!window.cancelAnimationFrame)\n\t window.cancelAnimationFrame = function(id) {\n\t clearTimeout(id);\n\t };\n\t}());\n\n\twindow.Typewriter = function Typewriter(element, options) {\n\t\tthis._settings = {\n\t\t\tcursorAnimationPaused: false,\n\t\t\topacityIncreasing: false,\n\t\t\tcurrentOpacity: 1,\n\t\t\tdelayedQue: [],\n\t\t\tdelayItemsCount: 0,\n\t\t\teventQue: [],\n\t\t\tcalledEvents: [],\n\t\t\teventRunning: false,\n\t\t\ttimeout: false,\n\t\t\tdelayExecution: false,\n\t\t\tfps: (60/1000),\n\t\t\ttypingFrameCount: 0,\n\t\t\tstringToTypeHTMLArray: [],\n\t\t\tcurrentTypedCharacters: [],\n\t\t\ttyping: false,\n\t\t\tusedIDs: [],\n\t\t\tcharAmountToDelete: false,\n\t\t\tuserOptions: {},\n\t\t\teventLoopRerun: 0\n\t\t};\n\n\t\tif(!element) {\n\t\t\treturn console.error('Please choose an DOM element so that type writer can display itself.');\n\t\t}\n\n\t\t// if(!options.strings && !(options.strings instanceof Array || typeof options.strings === 'string')) {\n\t\t// \treturn console.error('Please enter an array of strings for the typewriter animation to work.');\n\t\t// }\n\n\t\tif(typeof options !== 'object') {\n\t\t\treturn console.error('Typewriter only accepts the options as an object.');\n\t\t}\n\n\t\tthis._settings.userOptions = options;\n\n\t\tthis.default_options = {\n\t\t\tstrings: false,\n\t\t\tcursorClassName: 'typewriter-cursor',\n\t\t\tcursor: '|',\n\t\t\tanimateCursor: true,\n\t\t\tblinkSpeed: 50,\n\t\t\ttypingSpeed: 'natural',\n\t\t\tdeleteSpeed: 'natural',\n\t\t\tcharSpanClassName: 'typewriter-char',\n\t\t\twrapperClassName: 'typewriter-wrapper',\n\t\t\tloop: false,\n\t\t\tautoStart: false,\n\t\t\tdevMode: false\n\t\t};\n\n\t\tthis.options = this._setupOptions(options);\n\n\t\tthis.el = element;\n\n\t\tthis._setupTypwriterWrapper();\n\n\t\tthis._startCursorAnimation();\n\n\t\tif(this.options.autoStart === true && this.options.strings) {\n\t\t\tthis.typeOutAllStrings();\n\t\t}\n\n\t};\n\n\tvar TypewriterPrototype = window.Typewriter.prototype;\n\n\tTypewriterPrototype.stop = function() {\n\t\tthis._addToEventQue(this._stopEventLoop)\n\t\treturn this;\n\t};\n\n\tTypewriterPrototype.start = function() {\n\t\tthis._startEventLoop();\n\t\treturn this;\n\t};\n\n\tTypewriterPrototype.rerun = function() {\n\t\tthis._addToEventQue(this._rerunCalledEvents);\n\t\treturn this;\n\t};\n\n\tTypewriterPrototype.typeString = function(string) {\n\t\tif(!string || typeof string != 'string') {\n\t\t\treturn console.error('Please enter a string as the paramater.');\n\t\t}\n\n\t\tvar string_chars = this._getCharacters(string);\n\n\t\tthis._addToEventQue([this._typeCharacters, [string_chars]]);\n\t\treturn this;\n\t};\n\n\tTypewriterPrototype.deleteAll = function() {\n\t\tthis._addToEventQue([this._deleteChars, ['all']]);\n\t\treturn this;\n\t};\n\n\tTypewriterPrototype.deleteChars = function(amount) {\n\t\tthis._addToEventQue([this._deleteChars, [amount]]);\n\t\treturn this;\n\t};\n\n\tTypewriterPrototype.pauseFor = function(ms) {\n\t\tthis._addToEventQue([this._pauseFor, [ms]]);\n\t\treturn this;\n\t};\n\n\tTypewriterPrototype.typeOutAllStrings = function() {\n\t\tvar characters_array = this._getStringsAsCharsArray();\n\n\t\tif(characters_array.length === 1) {\n\t\t\tthis._typeCharacters(characters_array[0]);\n\t\t} else {\n\t\t\tfor(var i = 0, length = characters_array.length; i < length; i++) {\n\t\t\t\tthis._addToEventQue([this._typeCharacters, [characters_array[i]]]);\n\t\t\t\tthis.pauseFor(this._randomInteger(1500, 2500));\n\t\t\t\tthis.deleteAll();\n\t\t\t\tthis.pauseFor(this._randomInteger(1500, 2500));\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\n\t};\n\n\tTypewriterPrototype.changeSettings = function(new_settings) {\n\t\tif(!new_settings && typeof new_settings !== 'object') {\n\t\t\treturn console.error('Typewriter will only accept an object as the settings.');\n\t\t}\n\n\t\tthis._addToEventQue([this._changeSettings, [JSON.stringify(new_settings)]]);\n\n\t\treturn this;\n\n\t};\n\n\tTypewriterPrototype.changeBlinkSpeed = function(new_speed) {\n\t\tif(!new_speed && typeof new_speed !== 'number') {\n\t\t\treturn console.error('Please enter a number for the new blink speed.');\n\t\t}\n\n\t\tthis.changeSettings({\n\t\t\tblinkSpeed: new_speed\n\t\t});\n\n\t\treturn this;\n\t};\n\n\tTypewriterPrototype.changeTypingSpeed = function(new_speed) {\n\t\tif(!new_speed && typeof new_speed !== 'number') {\n\t\t\treturn console.error('Please enter a number for the new typing speed.');\n\t\t}\n\n\t\tvar new_settings = {\n\t\t\ttypingSpeed: new_speed\n\t\t};\n\n\t\tthis.changeSettings({\n\t\t\ttypingSpeed: new_speed\n\t\t});\n\n\t\treturn this;\n\t};\n\n\tTypewriterPrototype.changeDeleteSpeed = function(new_speed) {\n\t\tif(!new_speed && typeof new_speed !== 'number') {\n\t\t\treturn console.error('Please enter a number for the new delete speed.');\n\t\t}\n\n\t\tthis.changeSettings({\n\t\t\tchangeDeleteSpeed: new_speed\n\t\t});\n\n\t\treturn this;\n\t};\n\n\tTypewriterPrototype._rerunCalledEvents = function() {\n\t\tif(this._settings.currentTypedCharacters.length > 0) {\n\t\t\tthis.deleteAll();\n\t\t\tthis._resetEventLoop('rerunCalledEvents');\n\t\t} else {\n\t\t\tthis._settings.eventQue = this._settings.calledEvents;\n\t\t\tthis._settings.calledEvents = [];\n\t\t\tthis.options = this._setupOptions(this._settings.userOptions);\n\t\t\tthis._settings.usedIDs = [];\n\t\t\tthis.charAmountToDelete = false;\n\t\t\tthis._startEventLoop();\n\t\t}\n\t};\n\n\tTypewriterPrototype._deleteChars = function(amount) {\n\n\n\t\tif(amount) {\n\t\t\tthis._settings.charAmountToDelete = amount;\n\t\t}\n\t\tthis._deletingCharIdsAnimation = window.requestAnimationFrame(this._deletingCharAnimationFrame.bind(this));\n\t\treturn this;\n\t};\n\n\tTypewriterPrototype._pauseFor = function(ms) {\n\t\tvar self = this;\n\t\tself._settings.eventRunning = true;\n\t\tsetTimeout(function() {\n\t\t\tself._resetEventLoop('pauseFor');\n\t\t}, ms);\n\t};\n\n\tTypewriterPrototype._changeSettings = function(new_settings) {\n\t\tthis.options = this._setupOptions(JSON.parse(new_settings[0]));\n\t\tthis._resetEventLoop('changeSettings');\n\n\t\tif(this.options.devMode) {\n\t\t\tconsole.log('New settings', this.options);\n\t\t}\n\n\t};\n\n\tTypewriterPrototype._deletingCharAnimationFrame = function() {\n\t\tvar self = this;\n\t\tvar delete_speed = this.options.deleteSpeed;\n\t\tvar typewriter_wrapper_class_name = self.options.wrapperClassName;\n\t\tvar current_typed_char_ids = self._settings.currentTypedCharacters;\n\t\tvar char_amount_to_delete = self._settings.charAmountToDelete;\n\n\t\tif(!self._settings.charAmountToDelete || self._settings.charAmountToDelete === 0 || current_typed_char_ids === 0) {\n\t\t\tself._resetEventLoop('deletingCharAnimationFrame');\n\t\t\treturn true;\n\t\t}\n\n\t\tif(delete_speed == 'natural') {\n\t\t\tdelete_speed = self._randomInteger(50, 150);\n\t\t}\n\n\t\tif(char_amount_to_delete == 'all') {\n\t\t\tchar_amount_to_delete = current_typed_char_ids.length;\n\t\t\tself._settings.charAmountToDelete = char_amount_to_delete;\n\t\t}\n\n\t\tsetTimeout(function() {\n\t\t\tif(self._settings.charAmountToDelete) {\n\t\t\t\tvar last_typed_char_index = current_typed_char_ids.length - 1;\n\t\t\t\tvar get_last_typed_char = current_typed_char_ids[last_typed_char_index];\n\n\t\t\t\tself._settings.currentTypedCharacters.splice(last_typed_char_index, 1);\n\n\t\t\t\tvar char_to_delete_el = document.getElementById(get_last_typed_char);\n\n\t\t\t\tif(char_to_delete_el) {\n\t\t\t\t\tvar typewriter_wrapper_el = self.el.querySelector('.' + typewriter_wrapper_class_name);\n\t\t\t\t\ttypewriter_wrapper_el.removeChild(char_to_delete_el);\n\t\t\t\t\tself._settings.charAmountToDelete = char_amount_to_delete - 1;\n\n\t\t\t\t\tif(self.options.devMode) {\n\t\t\t\t\t\tconsole.log('Deleted char with ID', get_last_typed_char);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tself._deletingCharIdsAnimation = window.requestAnimationFrame(self._deletingCharAnimationFrame.bind(self));\n\n\t\t}, delete_speed);\n\t};\n\n\tTypewriterPrototype._setupOptions = function(new_options) {\n\t var merged_options = {};\n\n\t for (var attrname in this.default_options) {\n\t \tmerged_options[attrname] = this.default_options[attrname];\n\t }\n\n\t if(this._settings.userOptions) {\n\t \tfor (var attrname in this._settings.userOptions) {\n\t\t \tmerged_options[attrname] = this._settings.userOptions[attrname];\n\t\t }\n\t }\n\n\t for (var attrname in new_options) {\n\t \tmerged_options[attrname] = new_options[attrname];\n\t }\n\n\t return merged_options;\n\t}\n\n\tTypewriterPrototype._addToEventQue = function(event) {\n\t\tthis._settings.eventQue.push(event);\n\t\tif(this._settings.eventQue.length > 0 && !this._settings.eventRunning && this.options.autoStart) {\n\t\t\tthis._startEventLoop();\n\t\t}\n\t};\n\n\tTypewriterPrototype._startEventLoop = function() {\n\t\tif(this.options.devMode) {\n\t\t\tconsole.log('Event loop started.');\n\t\t}\n\n\t\tif(!this._settings.eventRunning) {\n\n\t\t\tif(this._settings.eventQue.length > 0) {\n\t\t\t\tthis.eventLoopRerun = 0;\n\t\t\t\tvar first_event = this._settings.eventQue[0];\n\t\t\t\tif(typeof first_event == 'function') {\n\t\t\t\t\tthis._settings.eventRunning = true;\n\t\t\t\t\tthis._settings.calledEvents.push(first_event);\n\t\t\t\t\tthis._settings.eventQue.splice(0, 1);\n\t\t\t\t\tfirst_event.call(this);\n\t\t\t\t\tif(this.options.devMode) {\n\t\t\t\t\t\tconsole.log('Event started.');\n\t\t\t\t\t}\n\t\t\t\t} else if(first_event instanceof Array) {\n\t\t\t\t\tif(typeof first_event[0] == 'function' && first_event[1] instanceof Array) {\n\t\t\t\t\t\tthis._settings.eventRunning = true;\n\t\t\t\t\t\tthis._settings.calledEvents.push(first_event);\n\t\t\t\t\t\tthis._settings.eventQue.splice(0, 1);\n\t\t\t\t\t\tfirst_event[0].call(this, first_event[1]);\n\t\t\t\t\t\tif(this.options.devMode) {\n\t\t\t\t\t\t\tconsole.log('Event started.');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._eventQueAnimation = window.requestAnimationFrame(this._startEventLoop.bind(this));\n\t\t}\n\n\t\tif(!this._settings.eventRunning && this._settings.eventQue.length <= 0) {\n\t\t\tvar self = this;\n\t\t\tself._stopEventLoop();\n\t\t\tsetTimeout(function() {\n\t\t\t\tif(self.options.loop) {\n\t\t\t\t\tself.eventLoopRerun++;\n\t\t\t\t\tif(self.options.devMode) {\n\t\t\t\t\t\tconsole.log('Before Loop State', self._settings);\n\t\t\t\t\t}\n\t\t\t\t\tif(self.eventLoopRerun > 4) {\n\t\t\t\t\t\tconsole.error('Maximum amount of loop retries reached.');\n\t\t\t\t\t\tself._stopEventLoop();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif(self.options.devMode) {\n\t\t\t\t\t\t\tconsole.log('Looping events.');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself._rerunCalledEvents();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, 1000);\n\t\t\treturn;\n\t\t}\n\n\t};\n\n\tTypewriterPrototype._resetEventLoop = function(name) {\n\t\tvar event_name = name || 'Event';\n\t\tthis._settings.eventRunning = false;\n\t\tthis._startEventLoop();\n\t\tif(this.options.devMode) {\n\t\t\tconsole.log(event_name, 'Finished');\n\t\t}\n\t};\n\n\tTypewriterPrototype._stopEventLoop = function() {\n\t\twindow.cancelAnimationFrame(this._eventQueAnimation);\n\t\tif(this.options.devMode) {\n\t\t\tconsole.log('Event loop stopped.');\n\t\t}\n\t};\n\n\tTypewriterPrototype._setupTypwriterWrapper = function() {\n\t\tvar typewriter_wrapper_class_name = this.options.wrapperClassName;\n\t\tvar typewriter_wrapper = document.createElement('span');\n\t\ttypewriter_wrapper.className = typewriter_wrapper_class_name;\n\t\tthis.el.innerHTML = '';\n\t\tthis.el.appendChild(typewriter_wrapper);\n\t};\n\n\tTypewriterPrototype._typeCharacters = function(characters_array) {\n\t\tthis._settings.stringToTypeHTMLArray = this._convertCharsToHTML(characters_array);\n\t\tthis._typingAnimation = window.requestAnimationFrame(this._typingAnimationFrame.bind(this, characters_array.length));\n\t\treturn this;\n\t};\n\n\tTypewriterPrototype._typingAnimationFrame = function(total_items) {\n\t\tvar self = this;\n\t\tvar typing_speed = this.options.typingSpeed;\n\t\tvar typewriter_wrapper_class_name = self.options.wrapperClassName;\n\n\t\tif(self._settings.stringToTypeHTMLArray.length == 0) {\n\t\t\twindow.cancelAnimationFrame(self._typingAnimation);\n\t\t\tthis._resetEventLoop('typingAnimationFrame');\n\t\t\treturn true;\n\t\t}\n\n\t\tif(typing_speed == 'natural') {\n\t\t\ttyping_speed = this._randomInteger(50, 150);\n\t\t}\n\n\t\tsetTimeout(function() {\n\t\t\tvar el_inner_html = self.el.innerHTML;\n\t\t\tvar item_to_type = self._settings.stringToTypeHTMLArray[0];\n\t\t\tself.el.querySelector('.' + typewriter_wrapper_class_name).appendChild(item_to_type.el);\n\t\t\tself._settings.currentTypedCharacters.push(item_to_type.id);\n\t\t\tself._settings.stringToTypeHTMLArray.splice(0, 1);\n\t\t\tself._typingAnimation = window.requestAnimationFrame(self._typingAnimationFrame.bind(self, total_items));\n\t\t\tif(self.options.devMode) {\n\t\t\t\tconsole.log('Typed', item_to_type);\n\t\t\t}\n\t\t}, typing_speed);\n\t};\n\n\tTypewriterPrototype._convertCharsToHTML = function(chars) {\n\t\tvar chars_html_wrap_array = [];\n\t\tvar char_class_name = this.options.charSpanClassName;\n\t\tvar chars_array = chars[0];\n\n\t\tfor(var i = 0, length = chars_array.length; i < length; i++) {\n\t\t\tvar char_element = document.createElement('span');\n\t\t\tvar char_id = this._generateUniqueID();\n\t\t\tchar_element.id = char_id;\n\t\t\tchar_element.className = char_class_name + ' typewriter-item-' + i;\n\t\t\tchar_element.innerHTML = chars_array[i];\n\t\t\tchars_html_wrap_array.push({\n\t\t\t\tid: char_id,\n\t\t\t\tel: char_element\n\t\t\t});\n\t\t}\n\n\t\treturn chars_html_wrap_array;\n\t};\n\n\tTypewriterPrototype._getCharacters = function(string) {\n\t\tif(typeof string !== 'string') {\n\t\t\treturn false;\n\t\t}\n\t\treturn string.split(\"\");\n\t};\n\n\tTypewriterPrototype._getStringsAsCharsArray = function() {\n\t\tvar strings_array_check = this.options.strings instanceof Array;\n\t\tvar strings_string_check = typeof this.options.strings === 'string';\n\t\tif(!strings_array_check) {\n\t\t\tif(!strings_string_check) {\n\t\t\t\treturn console.error('Typewriter only accepts strings or an array of strings as the input.');\n\t\t\t}\n\t\t\treturn [this.options.strings.split(\"\")];\n\t\t}\n\n\t\tvar strings_chars_array = [];\n\n\t\tfor (var i = 0, length = this.options.strings.length; i < length; i++) {\n\t\t\tvar string_chars = this._getCharacters(this.options.strings[i]);\n\t\t\tif(!string_chars) {\n\t\t\t\tconsole.error('Please enter only strings.');\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tstrings_chars_array.push(string_chars);\n \t}\n\n \treturn strings_chars_array;\n\t};\n\n\tTypewriterPrototype._cursorAnimationFrame = function() {\n\t\tif(!this._settings.cursorAnimationPaused) {\n\t\t\tvar blink_speed = this.options.blinkSpeed;\n\t\t\tvar opacity_amount = (1/1000) * blink_speed;\n\n\t\t\tvar cursor_el = this.el.querySelector('.typewriter-cursor');\n\n\t\t\tif(this._settings.opacityIncreasing == true) {\n\t\t\t\tif(this._settings.currentOpacity >= 1) {\n\t\t\t\t\tthis._settings.opacityIncreasing = false;\n\t\t\t\t\tthis._settings.currentOpacity = 1;\n\t\t\t\t}\n\n\t\t\t\tthis._settings.currentOpacity += opacity_amount;\n\t\t\t}\n\n\t\t\tif(this._settings.opacityIncreasing == false) {\n\t\t\t\tif(this._settings.currentOpacity <= 0) {\n\t\t\t\t\tthis._settings.opacityIncreasing = true;\n\t\t\t\t\tthis._settings.currentOpacity = 0;\n\t\t\t\t}\n\n\t\t\t\tthis._settings.currentOpacity -= opacity_amount;\n\t\t\t}\n\n\t\t\tcursor_el.style.opacity = this._settings.currentOpacity;\n\t\t\tthis._cursorAnimation = window.requestAnimationFrame(this._cursorAnimationFrame.bind(this));\n\t\t}\n\t};\n\n\tTypewriterPrototype.appendText = function(text){\n\t this._addToEventQue([this._appendText, [text]])\n return this\n }\n\n\tTypewriterPrototype._appendText = function(text){\n var char_class_name = this.options.charSpanClassName;\n var char_element = document.createElement('span');\n var char_id = this._generateUniqueID();\n char_element.id = char_id;\n char_element.className = char_class_name + ' dom-appended'\n char_element.innerHTML = text\n var items = []\n items.push({\n id: char_id,\n el: char_element\n });\n\n this._settings.stringToTypeHTMLArray = items\n\n window.requestAnimationFrame(this._typingAnimationFrame.bind(this, 1));\n\n }\n\n\tTypewriterPrototype._startCursorAnimation = function() {\n\t\tvar cursor = this.options.cursor;\n\t\tvar cursor_class_name = this.options.cursorClassName;\n\n\t\tvar cursor_element = document.createElement('span');\n\t\tcursor_element.className = cursor_class_name;\n\t\tcursor_element.innerHTML = cursor;\n\n\t\tthis.el.appendChild(cursor_element);\n\t\tif(this.options.animateCursor) {\n\t\t\tthis._cursorAnimation = window.requestAnimationFrame(this._cursorAnimationFrame.bind(this));\n\t\t}\n\t};\n\n\tTypewriterPrototype._pauseCursorAnimation = function() {\n\t\tif(!this._settings.cursorAnimationPaused) {\n\t\t\twindow.cancelAnimationFrame(this._cursorAnimation);\n\t\t\tthis._settings.cursorAnimationPaused = true;\n\t\t}\n\t};\n\n\tTypewriterPrototype._restartCursorAnimation = function() {\n\t\tif(!this._settings.cursorAnimationPaused) {\n\t\t\treturn console.error('Cursor animation is already running.')\n\t\t}\n\n\t\tthis._settings.cursorAnimationPaused = false;\n\t\tthis._cursorAnimation = window.requestAnimationFrame(this._cursorAnimationFrame.bind(this));\n\t};\n\n\t/* Utils */\n\tTypewriterPrototype._randomInteger = function(min, max) {\n\t\treturn Math.floor(Math.random() * (max - min + 1)) + min;\n\t};\n\n\tTypewriterPrototype._randomID = function() {\n\t\tvar text = \"\";\n \tvar possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\n \tfor( var i=0; i < this._randomInteger(5, 15); i++ ) {\n \t\ttext += possible.charAt(Math.floor(Math.random() * possible.length));\n\t\t}\n \treturn text;\n\t};\n\n\tTypewriterPrototype._generateUniqueID = function() {\n\t\tvar temp_id = this._randomID();\n\t\tif(this._settings.usedIDs.indexOf(temp_id) == -1) {\n\t\t\tthis._settings.usedIDs.push(temp_id);\n\t\t\treturn temp_id;\n\t\t}\n\t\treturn this._generateUniqueID.call(this);\n\t};\n\n\n})();","/*! UIkit 3.0.0-rc.5 | http://www.getuikit.com | (c) 2014 - 2017 YOOtheme | MIT License */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define('uikit', factory) :\n (global.UIkit = factory());\n}(this, (function () { 'use strict';\n\n function bind(fn, context) {\n return function (a) {\n var l = arguments.length;\n return l ? l > 1 ? fn.apply(context, arguments) : fn.call(context, a) : fn.call(context);\n };\n }\n\n var ref = Object.prototype;\n var hasOwnProperty = ref.hasOwnProperty;\n\n function hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n }\n\n var hyphenateCache = {};\n var hyphenateRe = /([a-z\\d])([A-Z])/g;\n\n function hyphenate(str) {\n\n if (!(str in hyphenateCache)) {\n hyphenateCache[str] = str\n .replace(hyphenateRe, '$1-$2')\n .toLowerCase();\n }\n\n return hyphenateCache[str];\n }\n\n var camelizeRe = /-(\\w)/g;\n\n function camelize(str) {\n return str.replace(camelizeRe, toUpper);\n }\n\n function toUpper(_, c) {\n return c ? c.toUpperCase() : '';\n }\n\n function ucfirst(str) {\n return str.length ? toUpper(null, str.charAt(0)) + str.slice(1) : '';\n }\n\n var strPrototype = String.prototype;\n var startsWithFn = strPrototype.startsWith || function (search) { return this.lastIndexOf(search, 0) === 0; };\n\n function startsWith(str, search) {\n return startsWithFn.call(str, search);\n }\n\n var endsWithFn = strPrototype.endsWith || function (search) { return this.substr(-search.length) === search; };\n\n function endsWith(str, search) {\n return endsWithFn.call(str, search);\n }\n\n var includesFn = function (search) { return ~this.indexOf(search); };\n var includesStr = strPrototype.includes || includesFn;\n var includesArray = Array.prototype.includes || includesFn;\n\n function includes(obj, search) {\n return obj && (isString(obj) ? includesStr : includesArray).call(obj, search);\n }\n\n var isArray = Array.isArray;\n\n function isFunction(obj) {\n return typeof obj === 'function';\n }\n\n function isObject(obj) {\n return obj !== null && typeof obj === 'object';\n }\n\n function isPlainObject(obj) {\n return isObject(obj) && Object.getPrototypeOf(obj) === Object.prototype;\n }\n\n function isWindow(obj) {\n return isObject(obj) && obj === obj.window;\n }\n\n function isDocument(obj) {\n return isObject(obj) && obj.nodeType === 9;\n }\n\n function isJQuery(obj) {\n return isObject(obj) && !!obj.jquery;\n }\n\n function isNode(element) {\n return element instanceof Node || isObject(element) && element.nodeType === 1;\n }\n\n function isNodeCollection(element) {\n return element instanceof NodeList || element instanceof HTMLCollection;\n }\n\n function isBoolean(value) {\n return typeof value === 'boolean';\n }\n\n function isString(value) {\n return typeof value === 'string';\n }\n\n function isNumber(value) {\n return typeof value === 'number';\n }\n\n function isNumeric(value) {\n return isNumber(value) || isString(value) && !isNaN(value - parseFloat(value));\n }\n\n function isUndefined(value) {\n return value === void 0;\n }\n\n function toBoolean(value) {\n return isBoolean(value)\n ? value\n : value === 'true' || value === '1' || value === ''\n ? true\n : value === 'false' || value === '0'\n ? false\n : value;\n }\n\n function toNumber(value) {\n var number = Number(value);\n return !isNaN(number) ? number : false;\n }\n\n function toFloat(value) {\n return parseFloat(value) || 0;\n }\n\n function toNode(element) {\n return isNode(element) || isWindow(element) || isDocument(element)\n ? element\n : isNodeCollection(element) || isJQuery(element)\n ? element[0]\n : isArray(element)\n ? toNode(element[0])\n : null;\n }\n\n var arrayProto = Array.prototype;\n function toNodes(element) {\n return isNode(element)\n ? [element]\n : isNodeCollection(element)\n ? arrayProto.slice.call(element)\n : isArray(element)\n ? element.map(toNode).filter(Boolean)\n : isJQuery(element)\n ? element.toArray()\n : [];\n }\n\n function toList(value) {\n return isArray(value)\n ? value\n : isString(value)\n ? value.split(/,(?![^(]*\\))/).map(function (value) { return isNumeric(value)\n ? toNumber(value)\n : toBoolean(value.trim()); })\n : [value];\n }\n\n function toMs(time) {\n return !time\n ? 0\n : endsWith(time, 'ms')\n ? toFloat(time)\n : toFloat(time) * 1000;\n }\n\n function swap(value, a, b) {\n return value.replace(new RegExp((a + \"|\" + b), 'mg'), function (match) {\n return match === a ? b : a;\n });\n }\n\n var assign = Object.assign || function (target) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n target = Object(target);\n for (var i = 0; i < args.length; i++) {\n var source = args[i];\n if (source !== null) {\n for (var key in source) {\n if (hasOwn(source, key)) {\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n };\n\n function each(obj, cb) {\n for (var key in obj) {\n cb.call(obj[key], obj[key], key);\n }\n }\n\n function sortBy(collection, prop) {\n return collection.sort(function (a, b) { return a[prop] > b[prop]\n ? 1\n : b[prop] > a[prop]\n ? -1\n : 0; }\n );\n }\n\n function clamp(number, min, max) {\n if ( min === void 0 ) min = 0;\n if ( max === void 0 ) max = 1;\n\n return Math.min(Math.max(number, min), max);\n }\n\n function noop() {}\n\n function intersectRect(r1, r2) {\n return r1.left <= r2.right &&\n r2.left <= r1.right &&\n r1.top <= r2.bottom &&\n r2.top <= r1.bottom;\n }\n\n function pointInRect(point, rect) {\n return intersectRect({top: point.y, bottom: point.y, left: point.x, right: point.x}, rect);\n }\n\n var Dimensions = {\n\n ratio: function(dimensions, prop, value) {\n var obj;\n\n\n var aProp = prop === 'width' ? 'height' : 'width';\n\n return ( obj = {}, obj[aProp] = Math.round(value * dimensions[aProp] / dimensions[prop]), obj[prop] = value, obj );\n },\n\n contain: function(dimensions, maxDimensions) {\n var this$1 = this;\n\n dimensions = assign({}, dimensions);\n\n each(dimensions, function (_, prop) { return dimensions = dimensions[prop] > maxDimensions[prop]\n ? this$1.ratio(dimensions, prop, maxDimensions[prop])\n : dimensions; }\n );\n\n return dimensions;\n },\n\n cover: function(dimensions, maxDimensions) {\n var this$1 = this;\n\n dimensions = this.contain(dimensions, maxDimensions);\n\n each(dimensions, function (_, prop) { return dimensions = dimensions[prop] < maxDimensions[prop]\n ? this$1.ratio(dimensions, prop, maxDimensions[prop])\n : dimensions; }\n );\n\n return dimensions;\n }\n\n };\n\n function attr(element, name, value) {\n\n if (isObject(name)) {\n for (var key in name) {\n attr(element, key, name[key]);\n }\n return;\n }\n\n if (isUndefined(value)) {\n element = toNode(element);\n return element && element.getAttribute(name);\n } else {\n toNodes(element).forEach(function (element) {\n\n if (isFunction(value)) {\n value = value.call(element, attr(element, name));\n }\n\n if (value === null) {\n removeAttr(element, name);\n } else {\n element.setAttribute(name, value);\n }\n });\n }\n\n }\n\n function hasAttr(element, name) {\n return toNodes(element).some(function (element) { return element.hasAttribute(name); });\n }\n\n function removeAttr(element, name) {\n element = toNodes(element);\n name.split(' ').forEach(function (name) { return element.forEach(function (element) { return element.removeAttribute(name); }\n ); }\n );\n }\n\n function filterAttr(element, attribute, pattern, replacement) {\n attr(element, attribute, function (value) { return value ? value.replace(pattern, replacement) : value; });\n }\n\n function data(element, attribute) {\n for (var i = 0, attrs = [attribute, (\"data-\" + attribute)]; i < attrs.length; i++) {\n if (hasAttr(element, attrs[i])) {\n return attr(element, attrs[i]);\n }\n }\n }\n\n function query(selector, context) {\n return toNode(selector) || find(selector, isContextSelector(selector) ? context : document);\n }\n\n function queryAll(selector, context) {\n var nodes = toNodes(selector);\n return nodes.length && nodes || findAll(selector, isContextSelector(selector) ? context : document);\n }\n\n function find(selector, context) {\n return toNode(_query(selector, context, 'querySelector'));\n }\n\n function findAll(selector, context) {\n return toNodes(_query(selector, context, 'querySelectorAll'));\n }\n\n function _query(selector, context, queryFn) {\n if ( context === void 0 ) context = document;\n\n\n if (!selector || !isString(selector)) {\n return null;\n }\n\n selector = selector.replace(contextSanitizeRe, '$1 *');\n\n var removes;\n\n if (isContextSelector(selector)) {\n\n removes = [];\n\n selector = selector.split(',').map(function (selector, i) {\n\n var ctx = context;\n\n selector = selector.trim();\n\n if (selector[0] === '!') {\n\n var selectors = selector.substr(1).trim().split(' ');\n ctx = closest(context.parentNode, selectors[0]);\n selector = selectors.slice(1).join(' ').trim();\n\n }\n\n if (selector[0] === '-') {\n\n var selectors$1 = selector.substr(1).trim().split(' ');\n var prev = (ctx || context).previousElementSibling;\n ctx = matches(prev, selector.substr(1)) ? prev : null;\n selector = selectors$1.slice(1).join(' ');\n\n }\n\n if (!ctx) {\n return null;\n }\n\n if (!ctx.id) {\n ctx.id = \"uk-\" + (Date.now()) + i;\n removes.push(function () { return removeAttr(ctx, 'id'); });\n }\n\n return (\"#\" + (escape(ctx.id)) + \" \" + selector);\n\n }).filter(Boolean).join(',');\n\n context = document;\n\n }\n\n try {\n\n return context[queryFn](selector);\n\n } catch (e) {\n\n return null;\n\n } finally {\n\n removes && removes.forEach(function (remove) { return remove(); });\n\n }\n\n }\n\n var contextSelectorRe = /(^|,)\\s*[!>+~-]/;\n var contextSanitizeRe = /([!>+~-])(?=\\s+[!>+~-]|\\s*$)/g;\n\n function isContextSelector(selector) {\n return isString(selector) && selector.match(contextSelectorRe);\n }\n\n var elProto = Element.prototype;\n var matchesFn = elProto.matches || elProto.webkitMatchesSelector || elProto.msMatchesSelector;\n\n function matches(element, selector) {\n return toNodes(element).some(function (element) { return matchesFn.call(element, selector); });\n }\n\n var closestFn = elProto.closest || function (selector) {\n var ancestor = this;\n\n do {\n\n if (matches(ancestor, selector)) {\n return ancestor;\n }\n\n ancestor = ancestor.parentNode;\n\n } while (ancestor && ancestor.nodeType === 1);\n };\n\n function closest(element, selector) {\n\n if (startsWith(selector, '>')) {\n selector = selector.slice(1);\n }\n\n return isNode(element)\n ? element.parentNode && closestFn.call(element, selector)\n : toNodes(element).map(function (element) { return element.parentNode && closestFn.call(element, selector); }).filter(Boolean);\n }\n\n function parents(element, selector) {\n var elements = [];\n var parent = toNode(element).parentNode;\n\n while (parent && parent.nodeType === 1) {\n\n if (matches(parent, selector)) {\n elements.push(parent);\n }\n\n parent = parent.parentNode;\n }\n\n return elements;\n }\n\n var escapeFn = window.CSS && CSS.escape || function (css) { return css.replace(/([^\\x7f-\\uFFFF\\w-])/g, function (match) { return (\"\\\\\" + match); }); };\n function escape(css) {\n return isString(css) ? escapeFn.call(null, css) : '';\n }\n\n var voidElements = {\n area: true,\n base: true,\n br: true,\n col: true,\n embed: true,\n hr: true,\n img: true,\n input: true,\n keygen: true,\n link: true,\n menuitem: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true\n };\n function isVoidElement(element) {\n return toNodes(element).some(function (element) { return voidElements[element.tagName.toLowerCase()]; });\n }\n\n function isVisible(element) {\n return toNodes(element).some(function (element) { return element.offsetWidth || element.offsetHeight || element.getClientRects().length; });\n }\n\n var selInput = 'input,select,textarea,button';\n function isInput(element) {\n return toNodes(element).some(function (element) { return matches(element, selInput); });\n }\n\n function filter(element, selector) {\n return toNodes(element).filter(function (element) { return matches(element, selector); });\n }\n\n function within(element, selector) {\n return !isString(selector)\n ? element === selector || (isDocument(selector)\n ? selector.documentElement\n : toNode(selector)).contains(toNode(element)) // IE 11 document does not implement contains\n : matches(element, selector) || closest(element, selector);\n }\n\n function on() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n\n var ref = getArgs(args);\n var target = ref[0];\n var type = ref[1];\n var selector = ref[2];\n var listener = ref[3];\n var useCapture = ref[4];\n\n target = toEventTarget(target);\n\n if (selector) {\n listener = delegate(target, selector, listener);\n }\n\n if (listener.length > 1) {\n listener = detail(listener);\n }\n\n type.split(' ').forEach(function (type) { return target && target.addEventListener(type, listener, useCapture); });\n return function () { return off(target, type, listener, useCapture); };\n }\n\n function off(target, type, listener, useCapture) {\n if ( useCapture === void 0 ) useCapture = false;\n\n target = toEventTarget(target);\n target && type.split(' ').forEach(function (type) { return target.removeEventListener(type, listener, useCapture); });\n }\n\n function once() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n\n var ref = getArgs(args);\n var element = ref[0];\n var type = ref[1];\n var selector = ref[2];\n var listener = ref[3];\n var useCapture = ref[4];\n var condition = ref[5];\n var off = on(element, type, selector, function (e) {\n var result = !condition || condition(e);\n if (result) {\n off();\n listener(e, result);\n }\n }, useCapture);\n\n return off;\n }\n\n function trigger(target, event, detail) {\n return toEventTargets(target).reduce(function (notCanceled, target) { return notCanceled && target.dispatchEvent(createEvent(event, true, true, detail)); }\n , true);\n }\n\n function createEvent(e, bubbles, cancelable, detail) {\n if ( bubbles === void 0 ) bubbles = true;\n if ( cancelable === void 0 ) cancelable = false;\n\n if (isString(e)) {\n var event = document.createEvent('CustomEvent'); // IE 11\n event.initCustomEvent(e, bubbles, cancelable, detail);\n e = event;\n }\n\n return e;\n }\n\n function getArgs(args) {\n\n if (isString(args[0])) {\n args[0] = find(args[0]);\n }\n\n if (isFunction(args[2])) {\n args.splice(2, 0, false);\n }\n return args;\n }\n\n function delegate(element, selector, listener) {\n var this$1 = this;\n\n return function (e) {\n\n var target = e.target;\n var current = selector[0] === '>'\n ? findAll(selector, element).reverse().filter(function (element) { return within(target, element); })[0]\n : closest(target, selector);\n\n if (current) {\n e.delegate = element;\n e.current = current;\n\n listener.call(this$1, e);\n }\n };\n }\n\n function detail(listener) {\n return function (e) { return isArray(e.detail) ? listener.apply(void 0, [e].concat(e.detail)) : listener(e); };\n }\n\n function isEventTarget(target) {\n return 'EventTarget' in window\n ? target instanceof EventTarget\n : target && 'addEventListener' in target;\n }\n\n function toEventTarget(target) {\n return isEventTarget(target) ? target : toNode(target);\n }\n\n function toEventTargets(target) {\n return isEventTarget(target)\n ? [target]\n : isArray(target)\n ? target.map(toEventTarget).filter(Boolean)\n : toNodes(target);\n }\n\n function preventClick() {\n\n var timer = setTimeout(once(document, 'click', function (e) {\n\n e.preventDefault();\n e.stopImmediatePropagation();\n\n clearTimeout(timer);\n\n }, true));\n\n trigger(document, 'touchcancel');\n\n }\n\n /* global setImmediate */\n\n var Promise$1 = 'Promise' in window ? window.Promise : PromiseFn;\n\n var Deferred = function() {\n var this$1 = this;\n\n this.promise = new Promise$1(function (resolve, reject) {\n this$1.reject = reject;\n this$1.resolve = resolve;\n });\n };\n\n /**\n * Promises/A+ polyfill v1.1.4 (https://github.com/bramstein/promis)\n */\n\n var RESOLVED = 0;\n var REJECTED = 1;\n var PENDING = 2;\n\n var async = 'setImmediate' in window ? setImmediate : setTimeout;\n\n function PromiseFn(executor) {\n\n this.state = PENDING;\n this.value = undefined;\n this.deferred = [];\n\n var promise = this;\n\n try {\n executor(\n function (x) {\n promise.resolve(x);\n },\n function (r) {\n promise.reject(r);\n }\n );\n } catch (e) {\n promise.reject(e);\n }\n }\n\n PromiseFn.reject = function (r) {\n return new PromiseFn(function (resolve, reject) {\n reject(r);\n });\n };\n\n PromiseFn.resolve = function (x) {\n return new PromiseFn(function (resolve, reject) {\n resolve(x);\n });\n };\n\n PromiseFn.all = function all(iterable) {\n return new PromiseFn(function (resolve, reject) {\n var result = [];\n var count = 0;\n\n if (iterable.length === 0) {\n resolve(result);\n }\n\n function resolver(i) {\n return function (x) {\n result[i] = x;\n count += 1;\n\n if (count === iterable.length) {\n resolve(result);\n }\n };\n }\n\n for (var i = 0; i < iterable.length; i += 1) {\n PromiseFn.resolve(iterable[i]).then(resolver(i), reject);\n }\n });\n };\n\n PromiseFn.race = function race(iterable) {\n return new PromiseFn(function (resolve, reject) {\n for (var i = 0; i < iterable.length; i += 1) {\n PromiseFn.resolve(iterable[i]).then(resolve, reject);\n }\n });\n };\n\n var p = PromiseFn.prototype;\n\n p.resolve = function resolve(x) {\n var promise = this;\n\n if (promise.state === PENDING) {\n if (x === promise) {\n throw new TypeError('Promise settled with itself.');\n }\n\n var called = false;\n\n try {\n var then = x && x.then;\n\n if (x !== null && isObject(x) && isFunction(then)) {\n then.call(\n x,\n function (x) {\n if (!called) {\n promise.resolve(x);\n }\n called = true;\n },\n function (r) {\n if (!called) {\n promise.reject(r);\n }\n called = true;\n }\n );\n return;\n }\n } catch (e) {\n if (!called) {\n promise.reject(e);\n }\n return;\n }\n\n promise.state = RESOLVED;\n promise.value = x;\n promise.notify();\n }\n };\n\n p.reject = function reject(reason) {\n var promise = this;\n\n if (promise.state === PENDING) {\n if (reason === promise) {\n throw new TypeError('Promise settled with itself.');\n }\n\n promise.state = REJECTED;\n promise.value = reason;\n promise.notify();\n }\n };\n\n p.notify = function notify() {\n var this$1 = this;\n\n async(function () {\n if (this$1.state !== PENDING) {\n while (this$1.deferred.length) {\n var ref = this$1.deferred.shift();\n var onResolved = ref[0];\n var onRejected = ref[1];\n var resolve = ref[2];\n var reject = ref[3];\n\n try {\n if (this$1.state === RESOLVED) {\n if (isFunction(onResolved)) {\n resolve(onResolved.call(undefined, this$1.value));\n } else {\n resolve(this$1.value);\n }\n } else if (this$1.state === REJECTED) {\n if (isFunction(onRejected)) {\n resolve(onRejected.call(undefined, this$1.value));\n } else {\n reject(this$1.value);\n }\n }\n } catch (e) {\n reject(e);\n }\n }\n }\n });\n };\n\n p.then = function then(onResolved, onRejected) {\n var this$1 = this;\n\n return new PromiseFn(function (resolve, reject) {\n this$1.deferred.push([onResolved, onRejected, resolve, reject]);\n this$1.notify();\n });\n };\n\n p.catch = function (onRejected) {\n return this.then(undefined, onRejected);\n };\n\n function ajax(url, options) {\n return new Promise$1(function (resolve, reject) {\n\n var env = assign({\n data: null,\n method: 'GET',\n headers: {},\n xhr: new XMLHttpRequest(),\n beforeSend: noop,\n responseType: ''\n }, options);\n\n env.beforeSend(env);\n\n var xhr = env.xhr;\n\n for (var prop in env) {\n if (prop in xhr) {\n try {\n\n xhr[prop] = env[prop];\n\n } catch (e) {}\n }\n }\n\n xhr.open(env.method.toUpperCase(), url);\n\n for (var header in env.headers) {\n xhr.setRequestHeader(header, env.headers[header]);\n }\n\n on(xhr, 'load', function () {\n\n if (xhr.status === 0 || xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {\n resolve(xhr);\n } else {\n reject(assign(Error(xhr.statusText), {\n xhr: xhr,\n status: xhr.status\n }));\n }\n\n });\n\n on(xhr, 'error', function () { return reject(assign(Error('Network Error'), {xhr: xhr})); });\n on(xhr, 'timeout', function () { return reject(assign(Error('Network Timeout'), {xhr: xhr})); });\n\n xhr.send(env.data);\n });\n }\n\n function getImage(src, srcset, sizes) {\n\n return new Promise$1(function (resolve, reject) {\n var img = new Image();\n\n img.onerror = reject;\n img.onload = function () { return resolve(img); };\n\n img.src = src;\n srcset && (img.srcset = srcset);\n sizes && (img.sizes = sizes);\n });\n\n }\n\n function isReady() {\n return document.readyState === 'complete' || document.readyState !== 'loading' && !document.documentElement.doScroll;\n }\n\n function ready(fn) {\n\n if (isReady()) {\n fn();\n return;\n }\n\n var handle = function () {\n unbind1();\n unbind2();\n fn();\n };\n var unbind1 = on(document, 'DOMContentLoaded', handle);\n var unbind2 = on(window, 'load', handle);\n }\n\n function index(element, ref) {\n return ref\n ? toNodes(element).indexOf(toNode(ref))\n : toNodes((element = toNode(element)) && element.parentNode.children).indexOf(element);\n }\n\n function getIndex(i, elements, current, finite) {\n if ( current === void 0 ) current = 0;\n if ( finite === void 0 ) finite = false;\n\n\n elements = toNodes(elements);\n\n var length = elements.length;\n\n i = isNumeric(i)\n ? toNumber(i)\n : i === 'next'\n ? current + 1\n : i === 'previous'\n ? current - 1\n : index(elements, i);\n\n if (finite) {\n return clamp(i, 0, length - 1);\n }\n\n i %= length;\n\n return i < 0 ? i + length : i;\n }\n\n function empty(element) {\n element = toNode(element);\n element.innerHTML = '';\n return element;\n }\n\n function html(parent, html) {\n parent = toNode(parent);\n return isUndefined(html)\n ? parent.innerHTML\n : append(parent.hasChildNodes() ? empty(parent) : parent, html);\n }\n\n function prepend(parent, element) {\n\n parent = toNode(parent);\n\n if (!parent.hasChildNodes()) {\n return append(parent, element);\n } else {\n return insertNodes(element, function (element) { return parent.insertBefore(element, parent.firstChild); });\n }\n }\n\n function append(parent, element) {\n parent = toNode(parent);\n return insertNodes(element, function (element) { return parent.appendChild(element); });\n }\n\n function before(ref, element) {\n ref = toNode(ref);\n return insertNodes(element, function (element) { return ref.parentNode.insertBefore(element, ref); });\n }\n\n function after(ref, element) {\n ref = toNode(ref);\n return insertNodes(element, function (element) { return ref.nextSibling\n ? before(ref.nextSibling, element)\n : append(ref.parentNode, element); }\n );\n }\n\n function insertNodes(element, fn) {\n element = isString(element) ? fragment(element) : element;\n return element\n ? 'length' in element\n ? toNodes(element).map(fn)\n : fn(element)\n : null;\n }\n\n function remove(element) {\n toNodes(element).map(function (element) { return element.parentNode && element.parentNode.removeChild(element); });\n }\n\n function wrapAll(element, structure) {\n\n structure = toNode(before(element, structure));\n\n while (structure.firstChild) {\n structure = structure.firstChild;\n }\n\n append(structure, element);\n\n return structure;\n }\n\n function wrapInner(element, structure) {\n return toNodes(toNodes(element).map(function (element) { return element.hasChildNodes ? wrapAll(toNodes(element.childNodes), structure) : append(element, structure); }\n ));\n }\n\n function unwrap(element) {\n toNodes(element)\n .map(function (element) { return element.parentNode; })\n .filter(function (value, index, self) { return self.indexOf(value) === index; })\n .forEach(function (parent) {\n before(parent, parent.childNodes);\n remove(parent);\n });\n }\n\n var fragmentRe = /^\\s*<(\\w+|!)[^>]*>/;\n var singleTagRe = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/;\n\n function fragment(html) {\n\n var matches = singleTagRe.exec(html);\n if (matches) {\n return document.createElement(matches[1]);\n }\n\n var container = document.createElement('div');\n if (fragmentRe.test(html)) {\n container.insertAdjacentHTML('beforeend', html.trim());\n } else {\n container.textContent = html;\n }\n\n return container.childNodes.length > 1 ? toNodes(container.childNodes) : container.firstChild;\n\n }\n\n function apply(node, fn) {\n\n if (!node || node.nodeType !== 1) {\n return;\n }\n\n fn(node);\n node = node.firstElementChild;\n while (node) {\n apply(node, fn);\n node = node.nextElementSibling;\n }\n }\n\n function addClass(element) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n apply$1(element, args, 'add');\n }\n\n function removeClass(element) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n apply$1(element, args, 'remove');\n }\n\n function removeClasses(element, cls) {\n filterAttr(element, 'class', new RegExp((\"(^|\\\\s)\" + cls + \"(?!\\\\S)\"), 'g'), '');\n }\n\n function replaceClass(element) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n args[0] && removeClass(element, args[0]);\n args[1] && addClass(element, args[1]);\n }\n\n function hasClass(element, cls) {\n return toNodes(element).some(function (element) { return element.classList.contains(cls); });\n }\n\n function toggleClass(element) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n\n if (!args.length) {\n return;\n }\n\n args = getArgs$1(args);\n\n var force = !isString(args[args.length - 1]) ? args.pop() : []; // in iOS 9.3 force === undefined evaluates to false\n\n args = args.filter(Boolean);\n\n toNodes(element).forEach(function (ref) {\n var classList = ref.classList;\n\n for (var i = 0; i < args.length; i++) {\n supports.Force\n ? classList.toggle.apply(classList, [args[i]].concat(force))\n : (classList[(!isUndefined(force) ? force : !classList.contains(args[i])) ? 'add' : 'remove'](args[i]));\n }\n });\n\n }\n\n function apply$1(element, args, fn) {\n args = getArgs$1(args).filter(Boolean);\n\n args.length && toNodes(element).forEach(function (ref) {\n var classList = ref.classList;\n\n supports.Multiple\n ? classList[fn].apply(classList, args)\n : args.forEach(function (cls) { return classList[fn](cls); });\n });\n }\n\n function getArgs$1(args) {\n return args.reduce(function (args, arg) { return args.concat.call(args, isString(arg) && includes(arg, ' ') ? arg.trim().split(' ') : arg); }\n , []);\n }\n\n var supports = {};\n\n // IE 11\n (function () {\n\n var list = document.createElement('_').classList;\n if (list) {\n list.add('a', 'b');\n list.toggle('c', false);\n supports.Multiple = list.contains('b');\n supports.Force = !list.contains('c');\n }\n list = null;\n\n })();\n\n var cssNumber = {\n 'animation-iteration-count': true,\n 'column-count': true,\n 'fill-opacity': true,\n 'flex-grow': true,\n 'flex-shrink': true,\n 'font-weight': true,\n 'line-height': true,\n 'opacity': true,\n 'order': true,\n 'orphans': true,\n 'widows': true,\n 'z-index': true,\n 'zoom': true\n };\n\n function css(element, property, value) {\n\n return toNodes(element).map(function (element) {\n\n if (isString(property)) {\n\n property = propName(property);\n\n if (isUndefined(value)) {\n return getStyle(element, property);\n } else if (!value && value !== 0) {\n element.style.removeProperty(property);\n } else {\n element.style[property] = isNumeric(value) && !cssNumber[property] ? (value + \"px\") : value;\n }\n\n } else if (isArray(property)) {\n\n var styles = getStyles(element);\n\n return property.reduce(function (props, property) {\n props[property] = styles[propName(property)];\n return props;\n }, {});\n\n } else if (isObject(property)) {\n each(property, function (value, property) { return css(element, property, value); });\n }\n\n return element;\n\n })[0];\n\n }\n\n function getStyles(element, pseudoElt) {\n element = toNode(element);\n return element.ownerDocument.defaultView.getComputedStyle(element, pseudoElt);\n }\n\n function getStyle(element, property, pseudoElt) {\n return getStyles(element, pseudoElt)[property];\n }\n\n var vars = {};\n\n function getCssVar(name) {\n\n if (!(name in vars)) {\n\n /* usage in css: .var-name:before { content:\"xyz\" } */\n\n var element = append(document.documentElement, document.createElement('div'));\n\n addClass(element, (\"var-\" + name));\n\n try {\n\n vars[name] = getStyle(element, 'content', ':before').replace(/^[\"'](.*)[\"']$/, '$1');\n vars[name] = JSON.parse(vars[name]);\n\n } catch (e) {}\n\n document.documentElement.removeChild(element);\n\n }\n\n return vars[name];\n\n }\n\n var cssProps = {};\n\n function propName(name) {\n\n var ret = cssProps[name];\n if (!ret) {\n ret = cssProps[name] = vendorPropName(name) || name;\n }\n return ret;\n }\n\n var cssPrefixes = ['webkit', 'moz', 'ms'];\n var ref$1 = document.createElement('_');\n var style = ref$1.style;\n\n function vendorPropName(name) {\n\n name = hyphenate(name);\n\n if (name in style) {\n return name;\n }\n\n var i = cssPrefixes.length, prefixedName;\n\n while (i--) {\n prefixedName = \"-\" + (cssPrefixes[i]) + \"-\" + name;\n if (prefixedName in style) {\n return prefixedName;\n }\n }\n }\n\n function transition(element, props, duration, timing) {\n if ( duration === void 0 ) duration = 400;\n if ( timing === void 0 ) timing = 'linear';\n\n\n return Promise$1.all(toNodes(element).map(function (element) { return new Promise$1(function (resolve, reject) {\n\n for (var name in props) {\n var value = css(element, name);\n if (value === '') {\n css(element, name, value);\n }\n }\n\n var timer = setTimeout(function () { return trigger(element, 'transitionend'); }, duration);\n\n once(element, 'transitionend transitioncanceled', function (ref) {\n var type = ref.type;\n\n clearTimeout(timer);\n removeClass(element, 'uk-transition');\n css(element, {\n 'transition-property': '',\n 'transition-duration': '',\n 'transition-timing-function': ''\n });\n type === 'transitioncanceled' ? reject() : resolve();\n }, false, function (ref) {\n var target = ref.target;\n\n return element === target;\n });\n\n addClass(element, 'uk-transition');\n css(element, assign({\n 'transition-property': Object.keys(props).map(propName).join(','),\n 'transition-duration': (duration + \"ms\"),\n 'transition-timing-function': timing\n }, props));\n\n }); }\n ));\n\n }\n\n var Transition = {\n\n start: transition,\n\n stop: function(element) {\n trigger(element, 'transitionend');\n return Promise$1.resolve();\n },\n\n cancel: function(element) {\n trigger(element, 'transitioncanceled');\n },\n\n inProgress: function(element) {\n return hasClass(element, 'uk-transition');\n }\n\n };\n\n var animationPrefix = 'uk-animation-';\n var clsCancelAnimation = 'uk-cancel-animation';\n\n function animate(element, animation, duration, origin, out) {\n var arguments$1 = arguments;\n if ( duration === void 0 ) duration = 200;\n\n\n return Promise$1.all(toNodes(element).map(function (element) { return new Promise$1(function (resolve, reject) {\n\n if (hasClass(element, clsCancelAnimation)) {\n requestAnimationFrame(function () { return Promise$1.resolve().then(function () { return animate.apply(void 0, arguments$1).then(resolve, reject); }\n ); }\n );\n return;\n }\n\n var cls = animation + \" \" + animationPrefix + (out ? 'leave' : 'enter');\n\n if (startsWith(animation, animationPrefix)) {\n\n if (origin) {\n cls += \" uk-transform-origin-\" + origin;\n }\n\n if (out) {\n cls += \" \" + animationPrefix + \"reverse\";\n }\n\n }\n\n reset();\n\n once(element, 'animationend animationcancel', function (ref) {\n var type = ref.type;\n\n\n var hasReset = false;\n\n if (type === 'animationcancel') {\n reject();\n reset();\n } else {\n resolve();\n Promise$1.resolve().then(function () {\n hasReset = true;\n reset();\n });\n }\n\n requestAnimationFrame(function () {\n if (!hasReset) {\n addClass(element, clsCancelAnimation);\n\n requestAnimationFrame(function () { return removeClass(element, clsCancelAnimation); });\n }\n });\n\n }, false, function (ref) {\n var target = ref.target;\n\n return element === target;\n });\n\n css(element, 'animationDuration', (duration + \"ms\"));\n addClass(element, cls);\n\n function reset() {\n css(element, 'animationDuration', '');\n removeClasses(element, (animationPrefix + \"\\\\S*\"));\n }\n\n }); }\n ));\n\n }\n\n var inProgress = new RegExp((animationPrefix + \"(enter|leave)\"));\n var Animation = {\n\n in: function(element, animation, duration, origin) {\n return animate(element, animation, duration, origin, false);\n },\n\n out: function(element, animation, duration, origin) {\n return animate(element, animation, duration, origin, true);\n },\n\n inProgress: function(element) {\n return inProgress.test(attr(element, 'class'));\n },\n\n cancel: function(element) {\n trigger(element, 'animationcancel');\n }\n\n };\n\n function $(selector, context) {\n return !isString(selector)\n ? toNode(selector)\n : isHtml(selector)\n ? toNode(fragment(selector))\n : find(selector, context);\n }\n\n function $$(selector, context) {\n return !isString(selector)\n ? toNodes(selector)\n : isHtml(selector)\n ? toNodes(fragment(selector))\n : findAll(selector, context);\n }\n\n function isHtml(str) {\n return str[0] === '<' || str.match(/^\\s*</);\n }\n\n var dirs = {\n width: ['x', 'left', 'right'],\n height: ['y', 'top', 'bottom']\n };\n\n function positionAt(element, target, elAttach, targetAttach, elOffset, targetOffset, flip, boundary) {\n\n elAttach = getPos(elAttach);\n targetAttach = getPos(targetAttach);\n\n var flipped = {element: elAttach, target: targetAttach};\n\n if (!element || !target) {\n return flipped;\n }\n\n var dim = getDimensions(element);\n var targetDim = getDimensions(target);\n var position = targetDim;\n\n moveTo(position, elAttach, dim, -1);\n moveTo(position, targetAttach, targetDim, 1);\n\n elOffset = getOffsets(elOffset, dim.width, dim.height);\n targetOffset = getOffsets(targetOffset, targetDim.width, targetDim.height);\n\n elOffset['x'] += targetOffset['x'];\n elOffset['y'] += targetOffset['y'];\n\n position.left += elOffset['x'];\n position.top += elOffset['y'];\n\n boundary = getDimensions(boundary || window$1(element));\n\n if (flip) {\n each(dirs, function (ref, prop) {\n var dir = ref[0];\n var align = ref[1];\n var alignFlip = ref[2];\n\n\n if (!(flip === true || includes(flip, dir))) {\n return;\n }\n\n var elemOffset = elAttach[dir] === align\n ? -dim[prop]\n : elAttach[dir] === alignFlip\n ? dim[prop]\n : 0;\n\n var targetOffset = targetAttach[dir] === align\n ? targetDim[prop]\n : targetAttach[dir] === alignFlip\n ? -targetDim[prop]\n : 0;\n\n if (position[align] < boundary[align] || position[align] + dim[prop] > boundary[alignFlip]) {\n\n var centerOffset = dim[prop] / 2;\n var centerTargetOffset = targetAttach[dir] === 'center' ? -targetDim[prop] / 2 : 0;\n\n elAttach[dir] === 'center' && (\n apply(centerOffset, centerTargetOffset)\n || apply(-centerOffset, -centerTargetOffset)\n ) || apply(elemOffset, targetOffset);\n\n }\n\n function apply(elemOffset, targetOffset) {\n\n var newVal = position[align] + elemOffset + targetOffset - elOffset[dir] * 2;\n\n if (newVal >= boundary[align] && newVal + dim[prop] <= boundary[alignFlip]) {\n position[align] = newVal;\n\n ['element', 'target'].forEach(function (el) {\n flipped[el][dir] = !elemOffset\n ? flipped[el][dir]\n : flipped[el][dir] === dirs[prop][1]\n ? dirs[prop][2]\n : dirs[prop][1];\n });\n\n return true;\n }\n\n }\n\n });\n }\n\n offset(element, position);\n\n return flipped;\n }\n\n function offset(element, coordinates) {\n\n element = toNode(element);\n\n if (coordinates) {\n\n var currentOffset = offset(element);\n var pos = css(element, 'position');\n\n ['left', 'top'].forEach(function (prop) {\n if (prop in coordinates) {\n var value = css(element, prop);\n css(element, prop, coordinates[prop] - currentOffset[prop]\n + toFloat(pos === 'absolute' && value === 'auto'\n ? position(element)[prop]\n : value)\n );\n }\n });\n\n return;\n }\n\n return getDimensions(element);\n }\n\n function getDimensions(element) {\n\n element = toNode(element);\n\n var ref = window$1(element);\n var top = ref.pageYOffset;\n var left = ref.pageXOffset;\n\n if (isWindow(element)) {\n\n var height = element.innerHeight;\n var width = element.innerWidth;\n\n return {\n top: top,\n left: left,\n height: height,\n width: width,\n bottom: top + height,\n right: left + width,\n };\n }\n\n var style, hidden;\n\n if (!isVisible(element)) {\n style = attr(element, 'style');\n hidden = attr(element, 'hidden');\n\n attr(element, {\n style: ((style || '') + \";display:block !important;\"),\n hidden: null\n });\n }\n\n var rect = element.getBoundingClientRect();\n\n if (!isUndefined(style)) {\n attr(element, {style: style, hidden: hidden});\n }\n\n return {\n height: rect.height,\n width: rect.width,\n top: rect.top + top,\n left: rect.left + left,\n bottom: rect.bottom + top,\n right: rect.right + left,\n };\n }\n\n function position(element) {\n element = toNode(element);\n\n var parent = offsetParent(element);\n var parentOffset = parent === docEl(element) ? {top: 0, left: 0} : offset(parent);\n var ref = ['top', 'left'].reduce(function (props, prop) {\n var propName$$1 = ucfirst(prop);\n props[prop] -= parentOffset[prop]\n + (toFloat(css(element, (\"margin\" + propName$$1))) || 0)\n + (toFloat(css(parent, (\"border\" + propName$$1 + \"Width\"))) || 0);\n return props;\n }, offset(element));\n var top = ref.top;\n var left = ref.left;\n\n return {top: top, left: left};\n }\n\n function offsetParent(element) {\n\n var parent = toNode(element).offsetParent;\n\n while (parent && css(parent, 'position') === 'static') {\n parent = parent.offsetParent;\n }\n\n return parent || docEl(element);\n }\n\n var height = dimension('height');\n var width = dimension('width');\n\n function dimension(prop) {\n var propName$$1 = ucfirst(prop);\n return function (element, value) {\n\n element = toNode(element);\n\n if (isUndefined(value)) {\n\n if (isWindow(element)) {\n return element[(\"inner\" + propName$$1)];\n }\n\n if (isDocument(element)) {\n var doc = element.documentElement;\n return Math.max(doc[(\"offset\" + propName$$1)], doc[(\"scroll\" + propName$$1)]);\n }\n\n value = css(element, prop);\n value = value === 'auto' ? element[(\"offset\" + propName$$1)] : toFloat(value) || 0;\n\n return value - boxModelAdjust(prop, element);\n\n } else {\n\n css(element, prop, !value && value !== 0\n ? ''\n : +value + boxModelAdjust(prop, element) + 'px'\n );\n\n }\n\n };\n }\n\n function boxModelAdjust(prop, element) {\n return css(element, 'boxSizing') === 'border-box'\n ? dirs[prop].slice(1).map(ucfirst).reduce(function (value, prop) { return value\n + toFloat(css(element, (\"padding\" + prop)))\n + toFloat(css(element, (\"border\" + prop + \"Width\"))); }\n , 0)\n : 0;\n }\n\n function moveTo(position, attach, dim, factor) {\n each(dirs, function (ref, prop) {\n var dir = ref[0];\n var align = ref[1];\n var alignFlip = ref[2];\n\n if (attach[dir] === alignFlip) {\n position[align] += dim[prop] * factor;\n } else if (attach[dir] === 'center') {\n position[align] += dim[prop] * factor / 2;\n }\n });\n }\n\n function getPos(pos) {\n\n var x = /left|center|right/;\n var y = /top|center|bottom/;\n\n pos = (pos || '').split(' ');\n\n if (pos.length === 1) {\n pos = x.test(pos[0])\n ? pos.concat(['center'])\n : y.test(pos[0])\n ? ['center'].concat(pos)\n : ['center', 'center'];\n }\n\n return {\n x: x.test(pos[0]) ? pos[0] : 'center',\n y: y.test(pos[1]) ? pos[1] : 'center'\n };\n }\n\n function getOffsets(offsets, width, height) {\n\n var ref = (offsets || '').split(' ');\n var x = ref[0];\n var y = ref[1];\n\n return {\n x: x ? toFloat(x) * (endsWith(x, '%') ? width / 100 : 1) : 0,\n y: y ? toFloat(y) * (endsWith(y, '%') ? height / 100 : 1) : 0\n };\n }\n\n function flipPosition(pos) {\n switch (pos) {\n case 'left':\n return 'right';\n case 'right':\n return 'left';\n case 'top':\n return 'bottom';\n case 'bottom':\n return 'top';\n default:\n return pos;\n }\n }\n\n function isInView(element, topOffset, leftOffset, relativeToViewport) {\n if ( topOffset === void 0 ) topOffset = 0;\n if ( leftOffset === void 0 ) leftOffset = 0;\n\n\n if (!isVisible(element)) {\n return false;\n }\n\n element = toNode(element);\n var win = window$1(element);\n\n if (relativeToViewport) {\n\n return intersectRect(element.getBoundingClientRect(), {\n top: -topOffset,\n left: -leftOffset,\n bottom: topOffset + height(win),\n right: leftOffset + width(win)\n });\n\n } else {\n\n var ref = offsetPosition(element);\n var elTop = ref[0];\n var elLeft = ref[1];\n var top = win.pageYOffset;\n var left = win.pageXOffset;\n\n return intersectRect(\n {\n top: elTop,\n left: elLeft,\n bottom: elTop + element.offsetHeight,\n right: elTop + element.offsetWidth\n },\n {\n top: top - topOffset,\n left: left - leftOffset,\n bottom: top + topOffset + height(win),\n right: left + leftOffset + width(win)\n }\n );\n }\n\n }\n\n function scrolledOver(element, heightOffset) {\n if ( heightOffset === void 0 ) heightOffset = 0;\n\n\n if (!isVisible(element)) {\n return 0;\n }\n\n element = toNode(element);\n\n var win = window$1(element);\n var doc = document$1(element);\n var elHeight = element.offsetHeight + heightOffset;\n var ref = offsetPosition(element);\n var top = ref[0];\n var vp = height(win);\n var vh = vp + Math.min(0, top - vp);\n var diff = Math.max(0, vp - (height(doc) + heightOffset - (top + elHeight)));\n\n return clamp(((vh + win.pageYOffset - top) / ((vh + (elHeight - (diff < vp ? diff : 0))) / 100)) / 100);\n }\n\n function offsetPosition(element) {\n var offset = [0, 0];\n\n do {\n\n offset[0] += element.offsetTop;\n offset[1] += element.offsetLeft;\n\n if (css(element, 'position') === 'fixed') {\n var win = window$1(element);\n offset[0] += win.pageYOffset;\n offset[1] += win.pageXOffset;\n return offset;\n }\n\n } while ((element = element.offsetParent));\n\n return offset;\n }\n\n function window$1(element) {\n return isWindow(element) ? element : document$1(element).defaultView;\n }\n\n function document$1(element) {\n return toNode(element).ownerDocument;\n }\n\n function docEl(element) {\n return document$1(element).documentElement;\n }\n\n /* global DocumentTouch */\n\n var isRtl = attr(document.documentElement, 'dir') === 'rtl';\n\n var hasTouchEvents = 'ontouchstart' in window;\n var hasPointerEvents = window.PointerEvent;\n var hasTouch = hasTouchEvents\n || window.DocumentTouch && document instanceof DocumentTouch\n || navigator.maxTouchPoints; // IE >=11\n\n var pointerDown = !hasTouch ? 'mousedown' : (\"mousedown \" + (hasTouchEvents ? 'touchstart' : 'pointerdown'));\n var pointerMove = !hasTouch ? 'mousemove' : (\"mousemove \" + (hasTouchEvents ? 'touchmove' : 'pointermove'));\n var pointerUp = !hasTouch ? 'mouseup' : (\"mouseup \" + (hasTouchEvents ? 'touchend' : 'pointerup'));\n var pointerEnter = hasTouch && hasPointerEvents ? 'pointerenter' : 'mouseenter';\n var pointerLeave = hasTouch && hasPointerEvents ? 'pointerleave' : 'mouseleave';\n\n /*\n Based on:\n Copyright (c) 2016 Wilson Page [email protected]\n https://github.com/wilsonpage/fastdom\n */\n\n var fastdom = {\n\n reads: [],\n writes: [],\n\n read: function(task) {\n this.reads.push(task);\n scheduleFlush();\n return task;\n },\n\n write: function(task) {\n this.writes.push(task);\n scheduleFlush();\n return task;\n },\n\n clear: function(task) {\n return remove$1(this.reads, task) || remove$1(this.writes, task);\n },\n\n flush: function() {\n\n runTasks(this.reads);\n runTasks(this.writes.splice(0, this.writes.length));\n\n this.scheduled = false;\n\n if (this.reads.length || this.writes.length) {\n scheduleFlush();\n }\n\n }\n\n };\n\n function scheduleFlush() {\n if (!fastdom.scheduled) {\n fastdom.scheduled = true;\n requestAnimationFrame(fastdom.flush.bind(fastdom));\n }\n }\n\n function runTasks(tasks) {\n var task;\n while ((task = tasks.shift())) {\n task();\n }\n }\n\n function remove$1(array, item) {\n var index = array.indexOf(item);\n return !!~index && !!array.splice(index, 1);\n }\n\n function MouseTracker() {}\n\n MouseTracker.prototype = {\n\n positions: [],\n position: null,\n\n init: function() {\n var this$1 = this;\n\n\n this.positions = [];\n this.position = null;\n\n var ticking = false;\n this.unbind = on(document, 'mousemove', function (e) {\n\n if (ticking) {\n return;\n }\n\n setTimeout(function () {\n\n var time = Date.now();\n var ref = this$1.positions;\n var length = ref.length;\n\n if (length && (time - this$1.positions[length - 1].time > 100)) {\n this$1.positions.splice(0, length);\n }\n\n this$1.positions.push({time: time, x: e.pageX, y: e.pageY});\n\n if (this$1.positions.length > 5) {\n this$1.positions.shift();\n }\n\n ticking = false;\n }, 5);\n\n ticking = true;\n });\n\n },\n\n cancel: function() {\n if (this.unbind) {\n this.unbind();\n }\n },\n\n movesTo: function(target) {\n\n if (this.positions.length < 2) {\n return false;\n }\n\n var p = offset(target);\n var position$$1 = this.positions[this.positions.length - 1];\n var ref = this.positions;\n var prevPos = ref[0];\n\n if (p.left <= position$$1.x && position$$1.x <= p.right && p.top <= position$$1.y && position$$1.y <= p.bottom) {\n return false;\n }\n\n var points = [\n [{x: p.left, y: p.top}, {x: p.right, y: p.bottom}],\n [{x: p.right, y: p.top}, {x: p.left, y: p.bottom}]\n ];\n\n if (p.right <= position$$1.x) ; else if (p.left >= position$$1.x) {\n points[0].reverse();\n points[1].reverse();\n } else if (p.bottom <= position$$1.y) {\n points[0].reverse();\n } else if (p.top >= position$$1.y) {\n points[1].reverse();\n }\n\n return !!points.reduce(function (result, point) {\n return result + (slope(prevPos, point[0]) < slope(position$$1, point[0]) && slope(prevPos, point[1]) > slope(position$$1, point[1]));\n }, 0);\n }\n\n };\n\n function slope(a, b) {\n return (b.y - a.y) / (b.x - a.x);\n }\n\n var strats = {};\n\n // concat strategy\n strats.args =\n strats.events =\n strats.init =\n strats.created =\n strats.beforeConnect =\n strats.connected =\n strats.ready =\n strats.beforeDisconnect =\n strats.disconnected =\n strats.destroy = function (parentVal, childVal) {\n\n parentVal = parentVal && !isArray(parentVal) ? [parentVal] : parentVal;\n\n return childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n };\n\n // update strategy\n strats.update = function (parentVal, childVal) {\n return strats.args(parentVal, isFunction(childVal) ? {read: childVal} : childVal);\n };\n\n // property strategy\n strats.props = function (parentVal, childVal) {\n\n if (isArray(childVal)) {\n childVal = childVal.reduce(function (value, key) {\n value[key] = String;\n return value;\n }, {});\n }\n\n return strats.methods(parentVal, childVal);\n };\n\n // extend strategy\n strats.computed =\n strats.methods = function (parentVal, childVal) {\n return childVal\n ? parentVal\n ? assign({}, parentVal, childVal)\n : childVal\n : parentVal;\n };\n\n // data strategy\n strats.data = function (parentVal, childVal, vm) {\n\n if (!vm) {\n\n if (!childVal) {\n return parentVal;\n }\n\n if (!parentVal) {\n return childVal;\n }\n\n return function (vm) {\n return mergeFnData(parentVal, childVal, vm);\n };\n\n }\n\n return mergeFnData(parentVal, childVal, vm);\n };\n\n function mergeFnData(parentVal, childVal, vm) {\n return strats.computed(\n isFunction(parentVal)\n ? parentVal.call(vm, vm)\n : parentVal,\n isFunction(childVal)\n ? childVal.call(vm, vm)\n : childVal\n );\n }\n\n // default strategy\n var defaultStrat = function (parentVal, childVal) {\n return isUndefined(childVal) ? parentVal : childVal;\n };\n\n function mergeOptions(parent, child, vm) {\n\n var options = {};\n\n if (isFunction(child)) {\n child = child.options;\n }\n\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n\n for (var key in parent) {\n mergeKey(key);\n }\n\n for (var key$1 in child) {\n if (!hasOwn(parent, key$1)) {\n mergeKey(key$1);\n }\n }\n\n function mergeKey(key) {\n options[key] = (strats[key] || defaultStrat)(parent[key], child[key], vm);\n }\n\n return options;\n }\n\n function parseOptions(options, args) {\n var obj;\n\n if ( args === void 0 ) args = [];\n\n try {\n\n return !options\n ? {}\n : startsWith(options, '{')\n ? JSON.parse(options)\n : args.length && !includes(options, ':')\n ? (( obj = {}, obj[args[0]] = options, obj ))\n : options.split(';').reduce(function (options, option) {\n var ref = option.split(/:(.*)/);\n var key = ref[0];\n var value = ref[1];\n if (key && !isUndefined(value)) {\n options[key.trim()] = value.trim();\n }\n return options;\n }, {});\n\n } catch (e) {\n return {};\n }\n\n }\n\n var id = 0;\n\n var Player = function(el) {\n this.id = ++id;\n this.el = toNode(el);\n };\n\n Player.prototype.isVideo = function () {\n return this.isYoutube() || this.isVimeo() || this.isHTML5();\n };\n\n Player.prototype.isHTML5 = function () {\n return this.el.tagName === 'VIDEO';\n };\n\n Player.prototype.isIFrame = function () {\n return this.el.tagName === 'IFRAME';\n };\n\n Player.prototype.isYoutube = function () {\n return this.isIFrame() && !!this.el.src.match(/\\/\\/.*?youtube(-nocookie)?\\.[a-z]+\\/(watch\\?v=[^&\\s]+|embed)|youtu\\.be\\/.*/);\n };\n\n Player.prototype.isVimeo = function () {\n return this.isIFrame() && !!this.el.src.match(/vimeo\\.com\\/video\\/.*/);\n };\n\n Player.prototype.enableApi = function () {\n var this$1 = this;\n\n\n if (this.ready) {\n return this.ready;\n }\n\n var youtube = this.isYoutube();\n var vimeo = this.isVimeo();\n\n var poller;\n\n if (youtube || vimeo) {\n\n return this.ready = new Promise$1(function (resolve) {\n\n once(this$1.el, 'load', function () {\n if (youtube) {\n var listener = function () { return post(this$1.el, {event: 'listening', id: this$1.id}); };\n poller = setInterval(listener, 100);\n listener();\n }\n });\n\n listen(function (data$$1) { return youtube && data$$1.id === this$1.id && data$$1.event === 'onReady' || vimeo && Number(data$$1.player_id) === this$1.id; })\n .then(function () {\n resolve();\n poller && clearInterval(poller);\n });\n\n attr(this$1.el, 'src', (\"\" + (this$1.el.src) + (includes(this$1.el.src, '?') ? '&' : '?') + (youtube ? 'enablejsapi=1' : (\"api=1&player_id=\" + (this$1.id)))));\n\n });\n\n }\n\n return Promise$1.resolve();\n\n };\n\n Player.prototype.play = function () {\n var this$1 = this;\n\n\n if (!this.isVideo()) {\n return;\n }\n\n if (this.isIFrame()) {\n this.enableApi().then(function () { return post(this$1.el, {func: 'playVideo', method: 'play'}); });\n } else if (this.isHTML5()) {\n try {\n var promise = this.el.play();\n\n if (promise) {\n promise.catch(noop);\n }\n } catch (e) {}\n }\n };\n\n Player.prototype.pause = function () {\n var this$1 = this;\n\n\n if (!this.isVideo()) {\n return;\n }\n\n if (this.isIFrame()) {\n this.enableApi().then(function () { return post(this$1.el, {func: 'pauseVideo', method: 'pause'}); });\n } else if (this.isHTML5()) {\n this.el.pause();\n }\n };\n\n Player.prototype.mute = function () {\n var this$1 = this;\n\n\n if (!this.isVideo()) {\n return;\n }\n\n if (this.isIFrame()) {\n this.enableApi().then(function () { return post(this$1.el, {func: 'mute', method: 'setVolume', value: 0}); });\n } else if (this.isHTML5()) {\n this.el.muted = true;\n attr(this.el, 'muted', '');\n }\n\n };\n\n function post(el, cmd) {\n try {\n el.contentWindow.postMessage(JSON.stringify(assign({event: 'command'}, cmd)), '*');\n } catch (e) {}\n }\n\n function listen(cb) {\n\n return new Promise$1(function (resolve) {\n\n once(window, 'message', function (_, data$$1) { return resolve(data$$1); }, false, function (ref) {\n var data$$1 = ref.data;\n\n\n if (!data$$1 || !isString(data$$1)) {\n return;\n }\n\n try {\n data$$1 = JSON.parse(data$$1);\n } catch (e) {\n return;\n }\n\n return data$$1 && cb(data$$1);\n\n });\n\n });\n\n }\n\n /*\n Based on:\n Copyright (c) 2010-2016 Thomas Fuchs\n http://zeptojs.com/\n */\n\n var touch = {}, clickTimeout, swipeTimeout, tapTimeout, clicked;\n\n function swipeDirection(ref) {\n var x1 = ref.x1;\n var x2 = ref.x2;\n var y1 = ref.y1;\n var y2 = ref.y2;\n\n return Math.abs(x1 - x2) >= Math.abs(y1 - y2) ? (x1 - x2 > 0 ? 'Left' : 'Right') : (y1 - y2 > 0 ? 'Up' : 'Down');\n }\n\n function cancelAll() {\n clickTimeout && clearTimeout(clickTimeout);\n swipeTimeout && clearTimeout(swipeTimeout);\n tapTimeout && clearTimeout(tapTimeout);\n clickTimeout = swipeTimeout = tapTimeout = null;\n touch = {};\n }\n\n ready(function () {\n\n on(document, 'click', function () { return clicked = true; }, true);\n\n on(document, pointerDown, function (e) {\n\n var target = e.target;\n var ref = getPos$1(e);\n var x = ref.x;\n var y = ref.y;\n var now = Date.now();\n var type = getType(e.type);\n\n if (touch.type && touch.type !== type) {\n return;\n }\n\n touch.el = 'tagName' in target ? target : target.parentNode;\n\n clickTimeout && clearTimeout(clickTimeout);\n\n touch.x1 = x;\n touch.y1 = y;\n\n if (touch.last && now - touch.last <= 250) {\n touch = {};\n }\n\n touch.type = type;\n touch.last = now;\n\n clicked = e.button > 0;\n\n });\n\n on(document, pointerMove, function (e) {\n\n if (e.defaultPrevented) {\n return;\n }\n\n var ref = getPos$1(e);\n var x = ref.x;\n var y = ref.y;\n\n touch.x2 = x;\n touch.y2 = y;\n\n });\n\n on(document, pointerUp, function (ref) {\n var type = ref.type;\n var target = ref.target;\n\n\n if (touch.type !== getType(type)) {\n return;\n }\n\n // swipe\n if (touch.x2 && Math.abs(touch.x1 - touch.x2) > 30 || touch.y2 && Math.abs(touch.y1 - touch.y2) > 30) {\n\n swipeTimeout = setTimeout(function () {\n if (touch.el) {\n trigger(touch.el, 'swipe');\n trigger(touch.el, (\"swipe\" + (swipeDirection(touch))));\n }\n touch = {};\n });\n\n // normal tap\n } else if ('last' in touch) {\n\n tapTimeout = setTimeout(function () { return trigger(touch.el, 'tap'); });\n\n // trigger single click after 350ms of inactivity\n if (touch.el && type !== 'mouseup' && within(target, touch.el)) {\n clickTimeout = setTimeout(function () {\n clickTimeout = null;\n if (touch.el && !clicked) {\n trigger(touch.el, 'click');\n }\n touch = {};\n }, 350);\n }\n\n } else {\n touch = {};\n }\n\n });\n\n on(document, 'touchcancel', cancelAll);\n on(window, 'scroll', cancelAll);\n\n });\n\n var touching = false;\n on(document, 'touchstart', function () { return touching = true; }, true);\n on(document, 'click', function () {touching = false;});\n on(document, 'touchcancel', function () { return touching = false; }, true);\n\n function isTouch(e) {\n return touching || e.pointerType === 'touch';\n }\n\n function getPos$1(e) {\n var touches = e.touches;\n var changedTouches = e.changedTouches;\n var ref = touches && touches[0] || changedTouches && changedTouches[0] || e;\n var x = ref.pageX;\n var y = ref.pageY;\n\n return {x: x, y: y};\n }\n\n function getType(type) {\n return type.slice(0, 5);\n }\n\n\n\n var util = /*#__PURE__*/Object.freeze({\n ajax: ajax,\n getImage: getImage,\n transition: transition,\n Transition: Transition,\n animate: animate,\n Animation: Animation,\n attr: attr,\n hasAttr: hasAttr,\n removeAttr: removeAttr,\n filterAttr: filterAttr,\n data: data,\n addClass: addClass,\n removeClass: removeClass,\n removeClasses: removeClasses,\n replaceClass: replaceClass,\n hasClass: hasClass,\n toggleClass: toggleClass,\n $: $,\n $$: $$,\n positionAt: positionAt,\n offset: offset,\n position: position,\n height: height,\n width: width,\n flipPosition: flipPosition,\n isInView: isInView,\n scrolledOver: scrolledOver,\n isReady: isReady,\n ready: ready,\n index: index,\n getIndex: getIndex,\n empty: empty,\n html: html,\n prepend: prepend,\n append: append,\n before: before,\n after: after,\n remove: remove,\n wrapAll: wrapAll,\n wrapInner: wrapInner,\n unwrap: unwrap,\n fragment: fragment,\n apply: apply,\n isRtl: isRtl,\n hasTouch: hasTouch,\n pointerDown: pointerDown,\n pointerMove: pointerMove,\n pointerUp: pointerUp,\n pointerEnter: pointerEnter,\n pointerLeave: pointerLeave,\n on: on,\n off: off,\n once: once,\n trigger: trigger,\n createEvent: createEvent,\n toEventTargets: toEventTargets,\n preventClick: preventClick,\n fastdom: fastdom,\n isVoidElement: isVoidElement,\n isVisible: isVisible,\n selInput: selInput,\n isInput: isInput,\n filter: filter,\n within: within,\n bind: bind,\n hasOwn: hasOwn,\n hyphenate: hyphenate,\n camelize: camelize,\n ucfirst: ucfirst,\n startsWith: startsWith,\n endsWith: endsWith,\n includes: includes,\n isArray: isArray,\n isFunction: isFunction,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isWindow: isWindow,\n isDocument: isDocument,\n isJQuery: isJQuery,\n isNode: isNode,\n isNodeCollection: isNodeCollection,\n isBoolean: isBoolean,\n isString: isString,\n isNumber: isNumber,\n isNumeric: isNumeric,\n isUndefined: isUndefined,\n toBoolean: toBoolean,\n toNumber: toNumber,\n toFloat: toFloat,\n toNode: toNode,\n toNodes: toNodes,\n toList: toList,\n toMs: toMs,\n swap: swap,\n assign: assign,\n each: each,\n sortBy: sortBy,\n clamp: clamp,\n noop: noop,\n intersectRect: intersectRect,\n pointInRect: pointInRect,\n Dimensions: Dimensions,\n MouseTracker: MouseTracker,\n mergeOptions: mergeOptions,\n parseOptions: parseOptions,\n Player: Player,\n Promise: Promise$1,\n Deferred: Deferred,\n query: query,\n queryAll: queryAll,\n find: find,\n findAll: findAll,\n matches: matches,\n closest: closest,\n parents: parents,\n escape: escape,\n css: css,\n getStyles: getStyles,\n getStyle: getStyle,\n getCssVar: getCssVar,\n propName: propName,\n isTouch: isTouch,\n getPos: getPos$1\n });\n\n function componentAPI (UIkit) {\n\n var DATA = UIkit.data;\n\n var components = {};\n\n UIkit.component = function (name, options) {\n\n if (!options) {\n\n if (isPlainObject(components[name])) {\n components[name] = UIkit.extend(components[name]);\n }\n\n return components[name];\n\n }\n\n UIkit[name] = function (element, data$$1) {\n var i = arguments.length, argsArray = Array(i);\n while ( i-- ) argsArray[i] = arguments[i];\n\n\n var component = UIkit.component(name);\n\n if (isPlainObject(element)) {\n return new component({data: element});\n }\n\n if (component.options.functional) {\n return new component({data: [].concat( argsArray )});\n }\n\n return element && element.nodeType ? init(element) : $$(element).map(init)[0];\n\n function init(element) {\n\n var instance = UIkit.getComponent(element, name);\n\n if (instance) {\n if (!data$$1) {\n return instance;\n } else {\n instance.$destroy();\n }\n }\n\n return new component({el: element, data: data$$1});\n\n }\n\n };\n\n var opt = isPlainObject(options) ? assign({}, options) : options.options;\n\n opt.name = name;\n\n if (opt.install) {\n opt.install(UIkit, opt, name);\n }\n\n if (UIkit._initialized && !opt.functional) {\n var id = hyphenate(name);\n fastdom.read(function () { return UIkit[name]((\"[uk-\" + id + \"],[data-uk-\" + id + \"]\")); });\n }\n\n return components[name] = isPlainObject(options) ? opt : options;\n };\n\n UIkit.getComponents = function (element) { return element && element[DATA] || {}; };\n UIkit.getComponent = function (element, name) { return UIkit.getComponents(element)[name]; };\n\n UIkit.connect = function (node) {\n\n if (node[DATA]) {\n for (var name in node[DATA]) {\n node[DATA][name]._callConnected();\n }\n }\n\n for (var i = 0; i < node.attributes.length; i++) {\n\n var name$1 = getComponentName(node.attributes[i].name);\n\n if (name$1 && name$1 in components) {\n UIkit[name$1](node);\n }\n\n }\n\n };\n\n UIkit.disconnect = function (node) {\n for (var name in node[DATA]) {\n node[DATA][name]._callDisconnected();\n }\n };\n\n }\n\n function getComponentName(attribute) {\n return startsWith(attribute, 'uk-') || startsWith(attribute, 'data-uk-')\n ? camelize(attribute.replace('data-uk-', '').replace('uk-', ''))\n : false;\n }\n\n function boot (UIkit) {\n\n var connect = UIkit.connect;\n var disconnect = UIkit.disconnect;\n\n if (!('MutationObserver' in window)) {\n return;\n }\n\n if (document.body) {\n\n init();\n\n } else {\n\n (new MutationObserver(function () {\n\n if (document.body) {\n this.disconnect();\n init();\n }\n\n })).observe(document, {childList: true, subtree: true});\n\n }\n\n function init() {\n\n apply$$1(document.body, connect);\n\n fastdom.flush();\n\n (new MutationObserver(function (mutations) { return mutations.forEach(applyMutation); })).observe(document, {\n childList: true,\n subtree: true,\n characterData: true,\n attributes: true\n });\n\n UIkit._initialized = true;\n }\n\n function applyMutation(mutation) {\n\n var target = mutation.target;\n var type = mutation.type;\n\n var update = type !== 'attributes'\n ? applyChildList(mutation)\n : applyAttribute(mutation);\n\n update && UIkit.update(target);\n\n }\n\n function applyAttribute(ref) {\n var target = ref.target;\n var attributeName = ref.attributeName;\n\n\n if (attributeName === 'href') {\n return true;\n }\n\n var name = getComponentName(attributeName);\n\n if (!name || !(name in UIkit)) {\n return;\n }\n\n if (hasAttr(target, attributeName)) {\n UIkit[name](target);\n return true;\n }\n\n var component = UIkit.getComponent(target, name);\n\n if (component) {\n component.$destroy();\n return true;\n }\n\n }\n\n function applyChildList(ref) {\n var addedNodes = ref.addedNodes;\n var removedNodes = ref.removedNodes;\n\n\n for (var i = 0; i < addedNodes.length; i++) {\n apply$$1(addedNodes[i], connect);\n }\n\n for (var i$1 = 0; i$1 < removedNodes.length; i$1++) {\n apply$$1(removedNodes[i$1], disconnect);\n }\n\n return true;\n }\n\n function apply$$1(node, fn) {\n\n if (node.nodeType !== 1 || hasAttr(node, 'uk-no-boot')) {\n return;\n }\n\n fn(node);\n node = node.firstElementChild;\n while (node) {\n var next = node.nextElementSibling;\n apply$$1(node, fn);\n node = next;\n }\n }\n\n }\n\n function globalAPI (UIkit) {\n\n var DATA = UIkit.data;\n\n UIkit.use = function (plugin) {\n\n if (plugin.installed) {\n return;\n }\n\n plugin.call(null, this);\n plugin.installed = true;\n\n return this;\n };\n\n UIkit.mixin = function (mixin, component) {\n component = (isString(component) ? UIkit.component(component) : component) || this;\n mixin = mergeOptions({}, mixin);\n mixin.mixins = component.options.mixins;\n delete component.options.mixins;\n component.options = mergeOptions(mixin, component.options);\n };\n\n UIkit.extend = function (options) {\n\n options = options || {};\n\n var Super = this;\n var Sub = function UIkitComponent (options) {\n this._init(options);\n };\n\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.options = mergeOptions(Super.options, options);\n\n Sub['super'] = Super;\n Sub.extend = Super.extend;\n\n return Sub;\n };\n\n UIkit.update = function (element, e) {\n\n e = createEvent(e || 'update');\n element = element ? toNode(element) : document.body;\n\n path(element).map(function (element) { return update(element[DATA], e); });\n apply(element, function (element) { return update(element[DATA], e); });\n\n };\n\n var container;\n Object.defineProperty(UIkit, 'container', {\n\n get: function() {\n return container || document.body;\n },\n\n set: function(element) {\n container = $(element);\n }\n\n });\n\n function update(data$$1, e) {\n\n if (!data$$1) {\n return;\n }\n\n for (var name in data$$1) {\n if (data$$1[name]._isReady) {\n data$$1[name]._callUpdate(e);\n }\n }\n\n }\n\n function path(element) {\n var path = [];\n\n while (element && element !== document.body && element.parentNode) {\n\n element = element.parentNode;\n path.unshift(element);\n\n }\n\n return path;\n }\n\n }\n\n function hooksAPI (UIkit) {\n\n UIkit.prototype._callHook = function (hook) {\n var this$1 = this;\n\n\n var handlers = this.$options[hook];\n\n if (handlers) {\n handlers.forEach(function (handler) { return handler.call(this$1); });\n }\n };\n\n UIkit.prototype._callConnected = function () {\n var this$1 = this;\n\n\n if (this._connected) {\n return;\n }\n\n this._data = {};\n this._initProps();\n\n this._callHook('beforeConnect');\n this._connected = true;\n\n this._initEvents();\n this._initObserver();\n\n this._callHook('connected');\n\n if (!this._isReady) {\n ready(function () { return this$1._callReady(); });\n }\n\n this._callUpdate();\n };\n\n UIkit.prototype._callDisconnected = function () {\n\n if (!this._connected) {\n return;\n }\n\n this._callHook('beforeDisconnect');\n\n if (this._observer) {\n this._observer.disconnect();\n this._observer = null;\n }\n\n this._unbindEvents();\n this._callHook('disconnected');\n\n this._connected = false;\n\n };\n\n UIkit.prototype._callReady = function () {\n\n if (this._isReady) {\n return;\n }\n\n this._isReady = true;\n this._callHook('ready');\n this._resetComputeds();\n this._callUpdate();\n };\n\n UIkit.prototype._callUpdate = function (e) {\n var this$1 = this;\n\n\n e = createEvent(e || 'update');\n\n var type = e.type;\n\n if (includes(['update', 'load', 'resize'], type)) {\n this._resetComputeds();\n }\n\n var updates = this.$options.update;\n var ref = this._frames;\n var reads = ref.reads;\n var writes = ref.writes;\n\n if (!updates) {\n return;\n }\n\n updates.forEach(function (ref, i) {\n var read = ref.read;\n var write = ref.write;\n var events = ref.events;\n\n\n if (type !== 'update' && !includes(events, type)) {\n return;\n }\n\n if (read && !includes(fastdom.reads, reads[i])) {\n reads[i] = fastdom.read(function () {\n\n var result = this$1._connected && read.call(this$1, this$1._data, e);\n\n if (result === false && write) {\n fastdom.clear(writes[i]);\n delete writes[i];\n } else if (isPlainObject(result)) {\n assign(this$1._data, result);\n }\n delete reads[i];\n });\n }\n\n if (write && !includes(fastdom.writes, writes[i])) {\n writes[i] = fastdom.write(function () {\n this$1._connected && write.call(this$1, this$1._data, e);\n delete writes[i];\n });\n }\n\n });\n\n };\n\n }\n\n function stateAPI (UIkit) {\n\n var uid = 0;\n\n UIkit.prototype._init = function (options) {\n\n options = options || {};\n options.data = normalizeData(options, this.constructor.options);\n\n this.$options = mergeOptions(this.constructor.options, options, this);\n this.$el = null;\n this.$props = {};\n\n this._frames = {reads: {}, writes: {}};\n this._events = [];\n\n this._uid = uid++;\n this._initData();\n this._initMethods();\n this._initComputeds();\n this._callHook('created');\n\n if (options.el) {\n this.$mount(options.el);\n }\n };\n\n UIkit.prototype._initData = function () {\n var this$1 = this;\n\n\n var ref = this.$options;\n var data$$1 = ref.data; if ( data$$1 === void 0 ) data$$1 = {};\n\n for (var key in data$$1) {\n this$1.$props[key] = this$1[key] = data$$1[key];\n }\n };\n\n UIkit.prototype._initMethods = function () {\n var this$1 = this;\n\n\n var ref = this.$options;\n var methods = ref.methods;\n\n if (methods) {\n for (var key in methods) {\n this$1[key] = bind(methods[key], this$1);\n }\n }\n };\n\n UIkit.prototype._initComputeds = function () {\n var this$1 = this;\n\n\n var ref = this.$options;\n var computed = ref.computed;\n\n this._resetComputeds();\n\n if (computed) {\n for (var key in computed) {\n registerComputed(this$1, key, computed[key]);\n }\n }\n };\n\n UIkit.prototype._resetComputeds = function () {\n this._computeds = {};\n };\n\n UIkit.prototype._initProps = function (props) {\n var this$1 = this;\n\n\n var key;\n\n this._resetComputeds();\n\n props = props || getProps(this.$options, this.$name);\n\n for (key in props) {\n if (!isUndefined(props[key])) {\n this$1.$props[key] = props[key];\n }\n }\n\n var exclude = [this.$options.computed, this.$options.methods];\n for (key in this$1.$props) {\n if (key in props && notIn(exclude, key)) {\n this$1[key] = this$1.$props[key];\n }\n }\n };\n\n UIkit.prototype._initEvents = function () {\n var this$1 = this;\n\n\n var ref = this.$options;\n var events = ref.events;\n\n if (events) {\n\n events.forEach(function (event) {\n\n if (!hasOwn(event, 'handler')) {\n for (var key in event) {\n registerEvent(this$1, event[key], key);\n }\n } else {\n registerEvent(this$1, event);\n }\n\n });\n }\n };\n\n UIkit.prototype._unbindEvents = function () {\n this._events.forEach(function (unbind) { return unbind(); });\n this._events = [];\n };\n\n UIkit.prototype._initObserver = function () {\n var this$1 = this;\n\n\n var ref = this.$options;\n var attrs = ref.attrs;\n var props = ref.props;\n var el = ref.el;\n if (this._observer || !props || !attrs) {\n return;\n }\n\n attrs = isArray(attrs) ? attrs : Object.keys(props).map(function (key) { return hyphenate(key); });\n\n this._observer = new MutationObserver(function () {\n\n var data$$1 = getProps(this$1.$options, this$1.$name);\n if (attrs.some(function (key) { return !isUndefined(data$$1[key]) && data$$1[key] !== this$1.$props[key]; })) {\n this$1.$reset();\n }\n\n });\n\n this._observer.observe(el, {attributes: true, attributeFilter: attrs.concat([this.$name, (\"data-\" + (this.$name))])});\n };\n\n function getProps(opts, name) {\n\n var data$$1 = {};\n var args = opts.args; if ( args === void 0 ) args = [];\n var props = opts.props; if ( props === void 0 ) props = {};\n var el = opts.el;\n\n if (!props) {\n return data$$1;\n }\n\n for (var key in props) {\n var prop = hyphenate(key);\n if (hasAttr(el, prop)) {\n\n var value = coerce(props[key], attr(el, prop));\n\n if (prop === 'target' && (!value || startsWith(value, '_'))) {\n continue;\n }\n\n data$$1[key] = value;\n }\n }\n\n var options = parseOptions(data(el, name), args);\n\n for (var key$1 in options) {\n var prop$1 = camelize(key$1);\n if (props[prop$1] !== undefined) {\n data$$1[prop$1] = coerce(props[prop$1], options[key$1]);\n }\n }\n\n return data$$1;\n }\n\n function registerComputed(component, key, cb) {\n Object.defineProperty(component, key, {\n\n enumerable: true,\n\n get: function() {\n\n var _computeds = component._computeds;\n var $props = component.$props;\n var $el = component.$el;\n\n if (!hasOwn(_computeds, key)) {\n _computeds[key] = cb.call(component, $props, $el);\n }\n\n return _computeds[key];\n },\n\n set: function(value) {\n component._computeds[key] = value;\n }\n\n });\n }\n\n function registerEvent(component, event, key) {\n\n if (!isPlainObject(event)) {\n event = ({name: key, handler: event});\n }\n\n var name = event.name;\n var el = event.el;\n var handler = event.handler;\n var capture = event.capture;\n var delegate = event.delegate;\n var filter$$1 = event.filter;\n var self = event.self;\n el = isFunction(el)\n ? el.call(component)\n : el || component.$el;\n\n if (isArray(el)) {\n el.forEach(function (el) { return registerEvent(component, assign({}, event, {el: el}), key); });\n return;\n }\n\n if (!el || filter$$1 && !filter$$1.call(component)) {\n return;\n }\n\n handler = detail(isString(handler) ? component[handler] : bind(handler, component));\n\n if (self) {\n handler = selfFilter(handler);\n }\n\n component._events.push(\n on(\n el,\n name,\n !delegate\n ? null\n : isString(delegate)\n ? delegate\n : delegate.call(component),\n handler,\n capture\n )\n );\n\n }\n\n function selfFilter(handler) {\n return function selfHandler(e) {\n if (e.target === e.currentTarget || e.target === e.current) {\n return handler.call(null, e);\n }\n };\n }\n\n function notIn(options, key) {\n return options.every(function (arr) { return !arr || !hasOwn(arr, key); });\n }\n\n function detail(listener) {\n return function (e) { return isArray(e.detail) ? listener.apply(void 0, [e].concat(e.detail)) : listener(e); };\n }\n\n function coerce(type, value) {\n\n if (type === Boolean) {\n return toBoolean(value);\n } else if (type === Number) {\n return toNumber(value);\n } else if (type === 'list') {\n return toList(value);\n } else if (type === 'media') {\n return toMedia(value);\n }\n\n return type ? type(value) : value;\n }\n\n function toMedia(value) {\n\n if (isString(value)) {\n if (value[0] === '@') {\n var name = \"media-\" + (value.substr(1));\n value = toFloat(getCssVar(name));\n } else if (isNaN(value)) {\n return value;\n }\n }\n\n return value && !isNaN(value) ? (\"(min-width: \" + value + \"px)\") : false;\n }\n\n function normalizeData(ref, ref$1) {\n var data$$1 = ref.data;\n var el = ref.el;\n var args = ref$1.args;\n var props = ref$1.props; if ( props === void 0 ) props = {};\n\n data$$1 = isArray(data$$1)\n ? args && args.length\n ? data$$1.slice(0, args.length).reduce(function (data$$1, value, index$$1) {\n if (isPlainObject(value)) {\n assign(data$$1, value);\n } else {\n data$$1[args[index$$1]] = value;\n }\n return data$$1;\n }, {})\n : undefined\n : data$$1;\n\n if (data$$1) {\n for (var key in data$$1) {\n if (isUndefined(data$$1[key])) {\n delete data$$1[key];\n } else {\n data$$1[key] = props[key] ? coerce(props[key], data$$1[key], el) : data$$1[key];\n }\n }\n }\n\n return data$$1;\n }\n }\n\n function instanceAPI (UIkit) {\n\n var DATA = UIkit.data;\n\n UIkit.prototype.$mount = function (el) {\n\n var ref = this.$options;\n var name = ref.name;\n\n if (!el[DATA]) {\n el[DATA] = {};\n }\n\n if (el[DATA][name]) {\n return;\n }\n\n el[DATA][name] = this;\n\n this.$el = this.$options.el = this.$options.el || el;\n\n this._callHook('init');\n\n if (within(el, document)) {\n this._callConnected();\n }\n };\n\n UIkit.prototype.$emit = function (e) {\n this._callUpdate(e);\n };\n\n UIkit.prototype.$reset = function () {\n this._callDisconnected();\n this._callConnected();\n };\n\n UIkit.prototype.$destroy = function (removeEl) {\n if ( removeEl === void 0 ) removeEl = false;\n\n\n var ref = this.$options;\n var el = ref.el;\n var name = ref.name;\n\n if (el) {\n this._callDisconnected();\n }\n\n this._callHook('destroy');\n\n if (!el || !el[DATA]) {\n return;\n }\n\n delete el[DATA][name];\n\n if (!Object.keys(el[DATA]).length) {\n delete el[DATA];\n }\n\n if (removeEl) {\n remove(this.$el);\n }\n };\n\n UIkit.prototype.$create = function (component, element, data$$1) {\n return UIkit[component](element, data$$1);\n };\n\n UIkit.prototype.$update = UIkit.update;\n UIkit.prototype.$getComponent = UIkit.getComponent;\n\n var names = {};\n Object.defineProperties(UIkit.prototype, {\n\n $container: Object.getOwnPropertyDescriptor(UIkit, 'container'),\n\n $name: {\n\n get: function() {\n var ref = this.$options;\n var name = ref.name;\n\n if (!names[name]) {\n names[name] = UIkit.prefix + hyphenate(name);\n }\n\n return names[name];\n }\n\n }\n\n });\n\n }\n\n var UIkit = function (options) {\n this._init(options);\n };\n\n UIkit.util = util;\n UIkit.data = '__uikit__';\n UIkit.prefix = 'uk-';\n UIkit.options = {};\n\n globalAPI(UIkit);\n hooksAPI(UIkit);\n stateAPI(UIkit);\n componentAPI(UIkit);\n instanceAPI(UIkit);\n\n var Class = {\n\n connected: function() {\n addClass(this.$el, this.$name);\n }\n\n };\n\n var Togglable = {\n\n props: {\n cls: Boolean,\n animation: 'list',\n duration: Number,\n origin: String,\n transition: String,\n queued: Boolean\n },\n\n data: {\n cls: false,\n animation: [false],\n duration: 200,\n origin: false,\n transition: 'linear',\n queued: false,\n\n initProps: {\n overflow: '',\n height: '',\n paddingTop: '',\n paddingBottom: '',\n marginTop: '',\n marginBottom: ''\n },\n\n hideProps: {\n overflow: 'hidden',\n height: 0,\n paddingTop: 0,\n paddingBottom: 0,\n marginTop: 0,\n marginBottom: 0\n }\n\n },\n\n computed: {\n\n hasAnimation: function(ref) {\n var animation = ref.animation;\n\n return !!animation[0];\n },\n\n hasTransition: function(ref) {\n var animation = ref.animation;\n\n return this.hasAnimation && animation[0] === true;\n }\n\n },\n\n methods: {\n\n toggleElement: function(targets, show, animate$$1) {\n var this$1 = this;\n\n return new Promise$1(function (resolve) {\n\n targets = toNodes(targets);\n\n var all = function (targets) { return Promise$1.all(targets.map(function (el) { return this$1._toggleElement(el, show, animate$$1); })); };\n var toggled = targets.filter(function (el) { return this$1.isToggled(el); });\n var untoggled = targets.filter(function (el) { return !includes(toggled, el); });\n\n var p;\n\n if (!this$1.queued || !isUndefined(animate$$1) || !isUndefined(show) || !this$1.hasAnimation || targets.length < 2) {\n\n p = all(untoggled.concat(toggled));\n\n } else {\n\n var body = document.body;\n var scroll = body.scrollTop;\n var el = toggled[0];\n var inProgress = Animation.inProgress(el) && hasClass(el, 'uk-animation-leave')\n || Transition.inProgress(el) && el.style.height === '0px';\n\n p = all(toggled);\n\n if (!inProgress) {\n p = p.then(function () {\n var p = all(untoggled);\n body.scrollTop = scroll;\n return p;\n });\n }\n\n }\n\n p.then(resolve, noop);\n\n });\n },\n\n toggleNow: function(targets, show) {\n var this$1 = this;\n\n return new Promise$1(function (resolve) { return Promise$1.all(toNodes(targets).map(function (el) { return this$1._toggleElement(el, show, false); })).then(resolve, noop); });\n },\n\n isToggled: function(el) {\n var nodes = toNodes(el || this.$el);\n return this.cls\n ? hasClass(nodes, this.cls.split(' ')[0])\n : !hasAttr(nodes, 'hidden');\n },\n\n updateAria: function(el) {\n if (this.cls === false) {\n attr(el, 'aria-hidden', !this.isToggled(el));\n }\n },\n\n _toggleElement: function(el, show, animate$$1) {\n var this$1 = this;\n\n\n show = isBoolean(show)\n ? show\n : Animation.inProgress(el)\n ? hasClass(el, 'uk-animation-leave')\n : Transition.inProgress(el)\n ? el.style.height === '0px'\n : !this.isToggled(el);\n\n if (!trigger(el, (\"before\" + (show ? 'show' : 'hide')), [this])) {\n return Promise$1.reject();\n }\n\n var promise = (animate$$1 === false || !this.hasAnimation\n ? this._toggleImmediate\n : this.hasTransition\n ? this._toggleHeight\n : this._toggleAnimation\n )(el, show);\n\n trigger(el, show ? 'show' : 'hide', [this]);\n\n return promise.then(function () {\n trigger(el, show ? 'shown' : 'hidden', [this$1]);\n this$1.$update(el);\n });\n },\n\n _toggle: function(el, toggled) {\n\n if (!el) {\n return;\n }\n\n var changed;\n if (this.cls) {\n changed = includes(this.cls, ' ') || Boolean(toggled) !== hasClass(el, this.cls);\n changed && toggleClass(el, this.cls, includes(this.cls, ' ') ? undefined : toggled);\n } else {\n changed = Boolean(toggled) === hasAttr(el, 'hidden');\n changed && attr(el, 'hidden', !toggled ? '' : null);\n }\n\n $$('[autofocus]', el).some(function (el) { return isVisible(el) && (el.focus() || true); });\n\n this.updateAria(el);\n changed && this.$update(el);\n },\n\n _toggleImmediate: function(el, show) {\n this._toggle(el, show);\n return Promise$1.resolve();\n },\n\n _toggleHeight: function(el, show) {\n var this$1 = this;\n\n\n var inProgress = Transition.inProgress(el);\n var inner = el.hasChildNodes ? toFloat(css(el.firstElementChild, 'marginTop')) + toFloat(css(el.lastElementChild, 'marginBottom')) : 0;\n var currentHeight = isVisible(el) ? height(el) + (inProgress ? 0 : inner) : 0;\n\n Transition.cancel(el);\n\n if (!this.isToggled(el)) {\n this._toggle(el, true);\n }\n\n height(el, '');\n\n // Update child components first\n fastdom.flush();\n\n var endHeight = height(el) + (inProgress ? 0 : inner);\n height(el, currentHeight);\n\n return (show\n ? Transition.start(el, assign({}, this.initProps, {overflow: 'hidden', height: endHeight}), Math.round(this.duration * (1 - currentHeight / endHeight)), this.transition)\n : Transition.start(el, this.hideProps, Math.round(this.duration * (currentHeight / endHeight)), this.transition).then(function () { return this$1._toggle(el, false); })\n ).then(function () { return css(el, this$1.initProps); });\n\n },\n\n _toggleAnimation: function(el, show) {\n var this$1 = this;\n\n\n Animation.cancel(el);\n\n if (show) {\n this._toggle(el, true);\n return Animation.in(el, this.animation[0], this.duration, this.origin);\n }\n\n return Animation.out(el, this.animation[1] || this.animation[0], this.duration, this.origin).then(function () { return this$1._toggle(el, false); });\n }\n\n }\n\n };\n\n var Accordion = {\n\n mixins: [Class, Togglable],\n\n props: {\n targets: String,\n active: null,\n collapsible: Boolean,\n multiple: Boolean,\n toggle: String,\n content: String,\n transition: String\n },\n\n data: {\n targets: '> *',\n active: false,\n animation: [true],\n collapsible: true,\n multiple: false,\n clsOpen: 'uk-open',\n toggle: '> .uk-accordion-title',\n content: '> .uk-accordion-content',\n transition: 'ease'\n },\n\n computed: {\n\n items: function(ref, $el) {\n var targets = ref.targets;\n\n return $$(targets, $el);\n }\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return ((this.targets) + \" \" + (this.$props.toggle));\n },\n\n handler: function(e) {\n e.preventDefault();\n this.toggle(index($$(((this.targets) + \" \" + (this.$props.toggle)), this.$el), e.current));\n }\n\n }\n\n ],\n\n connected: function() {\n\n if (this.active === false) {\n return;\n }\n\n var active = this.items[Number(this.active)];\n if (active && !hasClass(active, this.clsOpen)) {\n this.toggle(active, false);\n }\n },\n\n update: function() {\n var this$1 = this;\n\n\n this.items.forEach(function (el) { return this$1._toggleImmediate($(this$1.content, el), hasClass(el, this$1.clsOpen)); });\n\n var active = !this.collapsible && !hasClass(this.items, this.clsOpen) && this.items[0];\n if (active) {\n this.toggle(active, false);\n }\n },\n\n methods: {\n\n toggle: function(item, animate$$1) {\n var this$1 = this;\n\n\n var index$$1 = getIndex(item, this.items);\n var active = filter(this.items, (\".\" + (this.clsOpen)));\n\n item = this.items[index$$1];\n\n item && [item]\n .concat(!this.multiple && !includes(active, item) && active || [])\n .forEach(function (el) {\n\n var isItem = el === item;\n var state = isItem && !hasClass(el, this$1.clsOpen);\n\n if (!state && isItem && !this$1.collapsible && active.length < 2) {\n return;\n }\n\n toggleClass(el, this$1.clsOpen, state);\n\n var content = el._wrapper ? el._wrapper.firstElementChild : $(this$1.content, el);\n\n if (!el._wrapper) {\n el._wrapper = wrapAll(content, '<div>');\n attr(el._wrapper, 'hidden', state ? '' : null);\n }\n\n this$1._toggleImmediate(content, true);\n this$1.toggleElement(el._wrapper, state, animate$$1).then(function () {\n if (hasClass(el, this$1.clsOpen) === state) {\n\n if (!state) {\n this$1._toggleImmediate(content, false);\n }\n\n el._wrapper = null;\n unwrap(content);\n }\n });\n\n });\n }\n\n }\n\n };\n\n var Alert = {\n\n attrs: true,\n\n mixins: [Class, Togglable],\n\n args: 'animation',\n\n props: {\n close: String\n },\n\n data: {\n animation: [true],\n selClose: '.uk-alert-close',\n duration: 150,\n hideProps: assign({opacity: 0}, Togglable.data.hideProps)\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return this.selClose;\n },\n\n handler: function(e) {\n e.preventDefault();\n this.close();\n }\n\n }\n\n ],\n\n methods: {\n\n close: function() {\n var this$1 = this;\n\n this.toggleElement(this.$el).then(function () { return this$1.$destroy(true); });\n }\n\n }\n\n };\n\n function Core (UIkit) {\n\n ready(function () {\n\n var scroll = 0;\n var started = 0;\n\n on(window, 'load resize', function (e) { return UIkit.update(null, e); });\n on(window, 'scroll', function (e) {\n e.dir = scroll <= window.pageYOffset ? 'down' : 'up';\n e.pageYOffset = scroll = window.pageYOffset;\n UIkit.update(null, e);\n }, {capture: true, passive: false});\n\n on(document, 'animationstart', function (ref) {\n var target = ref.target;\n\n if ((css(target, 'animationName') || '').match(/^uk-.*(left|right)/)) {\n\n started++;\n css(document.body, 'overflowX', 'hidden');\n setTimeout(function () {\n if (!--started) {\n css(document.body, 'overflowX', '');\n }\n }, toMs(css(target, 'animationDuration')) + 100);\n }\n }, true);\n\n if (!hasTouch) {\n return;\n }\n\n var cls = 'uk-hover';\n\n on(document, 'tap', function (ref) {\n var target = ref.target;\n\n return $$((\".\" + cls)).forEach(function (el) { return !within(target, el) && removeClass(el, cls); }\n );\n }\n );\n\n Object.defineProperty(UIkit, 'hoverSelector', {\n\n set: function(selector) {\n on(document, 'tap', selector, function (ref) {\n var current = ref.current;\n\n return addClass(current, cls);\n });\n }\n\n });\n\n UIkit.hoverSelector = '.uk-animation-toggle, .uk-transition-toggle, [uk-hover]';\n\n });\n\n }\n\n var Video = {\n\n args: 'autoplay',\n\n props: {\n automute: Boolean,\n autoplay: Boolean,\n },\n\n data: {\n automute: false,\n autoplay: true\n },\n\n computed: {\n\n inView: function(ref) {\n var autoplay = ref.autoplay;\n\n return autoplay === 'inview';\n }\n\n },\n\n connected: function() {\n\n if (this.inView && !hasAttr(this.$el, 'preload')) {\n this.$el.preload = 'none';\n }\n\n },\n\n ready: function() {\n\n this.player = new Player(this.$el);\n\n if (this.automute) {\n this.player.mute();\n }\n\n },\n\n update: [\n\n {\n\n read: function(_, ref) {\n var type = ref.type;\n\n\n return !this.player || (type === 'scroll' || type === 'resize') && !this.inView\n ? false\n : {\n visible: isVisible(this.$el) && css(this.$el, 'visibility') !== 'hidden',\n inView: this.inView && isInView(this.$el)\n };\n },\n\n write: function(ref) {\n var visible = ref.visible;\n var inView = ref.inView;\n\n\n if (!visible || this.inView && !inView) {\n this.player.pause();\n } else if (this.autoplay === true || this.inView && inView) {\n this.player.play();\n }\n\n },\n\n events: ['load', 'resize', 'scroll']\n\n }\n\n ]\n\n };\n\n var Cover = {\n\n mixins: [Class, Video],\n\n props: {\n width: Number,\n height: Number\n },\n\n data: {\n automute: true\n },\n\n update: {\n\n write: function() {\n\n var el = this.$el;\n\n if (!isVisible(el)) {\n return;\n }\n\n var ref = el.parentNode;\n var height$$1 = ref.offsetHeight;\n var width$$1 = ref.offsetWidth;\n\n css(\n css(el, {width: '', height: ''}),\n Dimensions.cover(\n {\n width: this.width || el.clientWidth,\n height: this.height || el.clientHeight\n },\n {\n width: width$$1 + (width$$1 % 2 ? 1 : 0),\n height: height$$1 + (height$$1 % 2 ? 1 : 0)\n }\n )\n );\n\n },\n\n events: ['load', 'resize']\n\n },\n\n events: {\n\n loadedmetadata: function() {\n this.$emit();\n }\n\n }\n\n };\n\n var Position = {\n\n props: {\n pos: String,\n offset: null,\n flip: Boolean,\n clsPos: String\n },\n\n data: {\n pos: (\"bottom-\" + (!isRtl ? 'left' : 'right')),\n flip: true,\n offset: false,\n clsPos: ''\n },\n\n computed: {\n\n pos: function(ref) {\n var pos = ref.pos;\n\n return (pos + (!includes(pos, '-') ? '-center' : '')).split('-');\n },\n\n dir: function() {\n return this.pos[0];\n },\n\n align: function() {\n return this.pos[1];\n }\n\n },\n\n methods: {\n\n positionAt: function(element, target, boundary) {\n\n removeClasses(element, ((this.clsPos) + \"-(top|bottom|left|right)(-[a-z]+)?\"));\n css(element, {top: '', left: ''});\n\n var node;\n var ref = this;\n var offset$$1 = ref.offset;\n\n offset$$1 = isNumeric(offset$$1)\n ? offset$$1\n : (node = $(offset$$1))\n ? offset(node)[axis === 'x' ? 'left' : 'top'] - offset(target)[axis === 'x' ? 'right' : 'bottom']\n : 0;\n\n var axis = this.getAxis();\n var ref$1 = positionAt(\n element,\n target,\n axis === 'x' ? ((flipPosition(this.dir)) + \" \" + (this.align)) : ((this.align) + \" \" + (flipPosition(this.dir))),\n axis === 'x' ? ((this.dir) + \" \" + (this.align)) : ((this.align) + \" \" + (this.dir)),\n axis === 'x' ? (\"\" + (this.dir === 'left' ? -offset$$1 : offset$$1)) : (\" \" + (this.dir === 'top' ? -offset$$1 : offset$$1)),\n null,\n this.flip,\n boundary\n ).target;\n var x = ref$1.x;\n var y = ref$1.y;\n\n this.dir = axis === 'x' ? x : y;\n this.align = axis === 'x' ? y : x;\n\n toggleClass(element, ((this.clsPos) + \"-\" + (this.dir) + \"-\" + (this.align)), this.offset === false);\n\n },\n\n getAxis: function() {\n return this.dir === 'top' || this.dir === 'bottom' ? 'y' : 'x';\n }\n\n }\n\n };\n\n var active;\n\n var Drop = {\n\n mixins: [Position, Togglable],\n\n args: 'pos',\n\n props: {\n mode: 'list',\n toggle: Boolean,\n boundary: Boolean,\n boundaryAlign: Boolean,\n delayShow: Number,\n delayHide: Number,\n clsDrop: String\n },\n\n data: {\n mode: ['click', 'hover'],\n toggle: '- *',\n boundary: window,\n boundaryAlign: false,\n delayShow: 0,\n delayHide: 800,\n clsDrop: false,\n hoverIdle: 200,\n animation: ['uk-animation-fade'],\n cls: 'uk-open'\n },\n\n computed: {\n\n boundary: function(ref, $el) {\n var boundary = ref.boundary;\n\n return query(boundary, $el);\n },\n\n clsDrop: function(ref) {\n var clsDrop = ref.clsDrop;\n\n return clsDrop || (\"uk-\" + (this.$options.name));\n },\n\n clsPos: function() {\n return this.clsDrop;\n }\n\n },\n\n init: function() {\n this.tracker = new MouseTracker();\n },\n\n connected: function() {\n\n addClass(this.$el, this.clsDrop);\n\n var ref = this.$props;\n var toggle = ref.toggle;\n this.toggle = toggle && this.$create('toggle', query(toggle, this.$el), {\n target: this.$el,\n mode: this.mode\n });\n\n this.updateAria(this.$el);\n\n },\n\n events: [\n\n\n {\n\n name: 'click',\n\n delegate: function() {\n return (\".\" + (this.clsDrop) + \"-close\");\n },\n\n handler: function(e) {\n e.preventDefault();\n this.hide(false);\n }\n\n },\n\n {\n\n name: 'click',\n\n delegate: function() {\n return 'a[href^=\"#\"]';\n },\n\n handler: function(e) {\n\n if (e.defaultPrevented) {\n return;\n }\n\n var id = e.target.hash;\n\n if (!id) {\n e.preventDefault();\n }\n\n if (!id || !within(id, this.$el)) {\n this.hide(false);\n }\n }\n\n },\n\n {\n\n name: 'beforescroll',\n\n handler: function() {\n this.hide(false);\n }\n\n },\n\n {\n\n name: 'toggle',\n\n self: true,\n\n handler: function(e, toggle) {\n\n e.preventDefault();\n\n if (this.isToggled()) {\n this.hide(false);\n } else {\n this.show(toggle, false);\n }\n }\n\n },\n\n {\n\n name: pointerEnter,\n\n filter: function() {\n return includes(this.mode, 'hover');\n },\n\n handler: function(e) {\n\n if (isTouch(e)) {\n return;\n }\n\n if (active\n && active !== this\n && active.toggle\n && includes(active.toggle.mode, 'hover')\n && !within(e.target, active.toggle.$el)\n && !pointInRect({x: e.pageX, y: e.pageY}, offset(active.$el))\n ) {\n active.hide(false);\n }\n\n e.preventDefault();\n this.show(this.toggle);\n }\n\n },\n\n {\n\n name: 'toggleshow',\n\n handler: function(e, toggle) {\n\n if (toggle && !includes(toggle.target, this.$el)) {\n return;\n }\n\n e.preventDefault();\n this.show(toggle || this.toggle);\n }\n\n },\n\n {\n\n name: (\"togglehide \" + pointerLeave),\n\n handler: function(e, toggle) {\n\n if (isTouch(e) || toggle && !includes(toggle.target, this.$el)) {\n return;\n }\n\n e.preventDefault();\n\n if (this.toggle && includes(this.toggle.mode, 'hover')) {\n this.hide();\n }\n }\n\n },\n\n {\n\n name: 'beforeshow',\n\n self: true,\n\n handler: function() {\n this.clearTimers();\n Animation.cancel(this.$el);\n this.position();\n }\n\n },\n\n {\n\n name: 'show',\n\n self: true,\n\n handler: function() {\n this.tracker.init();\n if (this.toggle) {\n addClass(this.toggle.$el, this.cls);\n attr(this.toggle.$el, 'aria-expanded', 'true');\n }\n registerEvent();\n }\n\n },\n\n {\n\n name: 'beforehide',\n\n self: true,\n\n handler: function() {\n this.clearTimers();\n }\n\n },\n\n {\n\n name: 'hide',\n\n handler: function(ref) {\n var target = ref.target;\n\n\n if (this.$el !== target) {\n active = active === null && within(target, this.$el) && this.isToggled() ? this : active;\n return;\n }\n\n active = this.isActive() ? null : active;\n\n if (this.toggle) {\n removeClass(this.toggle.$el, this.cls);\n attr(this.toggle.$el, 'aria-expanded', 'false');\n this.toggle.$el.blur();\n $$('a, button', this.toggle.$el).forEach(function (el) { return el.blur(); });\n }\n\n this.tracker.cancel();\n }\n\n }\n\n ],\n\n update: {\n\n write: function() {\n\n if (this.isToggled() && !Animation.inProgress(this.$el)) {\n this.position();\n }\n\n },\n\n events: ['resize']\n\n },\n\n methods: {\n\n show: function(toggle, delay) {\n var this$1 = this;\n if ( delay === void 0 ) delay = true;\n\n\n var show = function () { return !this$1.isToggled() && this$1.toggleElement(this$1.$el, true); };\n var tryShow = function () {\n\n this$1.toggle = toggle || this$1.toggle;\n\n this$1.clearTimers();\n\n if (this$1.isActive()) {\n return;\n } else if (delay && active && active !== this$1 && active.isDelaying) {\n this$1.showTimer = setTimeout(this$1.show, 10);\n return;\n } else if (this$1.isParentOf(active)) {\n\n if (active.hideTimer) {\n active.hide(false);\n } else {\n return;\n }\n\n } else if (active && !this$1.isChildOf(active) && !this$1.isParentOf(active)) {\n\n var prev;\n while (active && active !== prev && !this$1.isChildOf(active)) {\n prev = active;\n active.hide(false);\n }\n\n }\n\n if (delay && this$1.delayShow) {\n this$1.showTimer = setTimeout(show, this$1.delayShow);\n } else {\n show();\n }\n\n active = this$1;\n };\n\n if (toggle && this.toggle && toggle.$el !== this.toggle.$el) {\n\n once(this.$el, 'hide', tryShow);\n this.hide(false);\n\n } else {\n tryShow();\n }\n },\n\n hide: function(delay) {\n var this$1 = this;\n if ( delay === void 0 ) delay = true;\n\n\n var hide = function () { return this$1.toggleNow(this$1.$el, false); };\n\n this.clearTimers();\n\n this.isDelaying = this.tracker.movesTo(this.$el);\n\n if (delay && this.isDelaying) {\n this.hideTimer = setTimeout(this.hide, this.hoverIdle);\n } else if (delay && this.delayHide) {\n this.hideTimer = setTimeout(hide, this.delayHide);\n } else {\n hide();\n }\n },\n\n clearTimers: function() {\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n this.showTimer = null;\n this.hideTimer = null;\n this.isDelaying = false;\n },\n\n isActive: function() {\n return active === this;\n },\n\n isChildOf: function(drop) {\n return drop && drop !== this && within(this.$el, drop.$el);\n },\n\n isParentOf: function(drop) {\n return drop && drop !== this && within(drop.$el, this.$el);\n },\n\n position: function() {\n\n removeClasses(this.$el, ((this.clsDrop) + \"-(stack|boundary)\"));\n css(this.$el, {top: '', left: '', display: 'block'});\n toggleClass(this.$el, ((this.clsDrop) + \"-boundary\"), this.boundaryAlign);\n\n var boundary = offset(this.boundary);\n var alignTo = this.boundaryAlign ? boundary : offset(this.toggle.$el);\n\n if (this.align === 'justify') {\n var prop = this.getAxis() === 'y' ? 'width' : 'height';\n css(this.$el, prop, alignTo[prop]);\n } else if (this.$el.offsetWidth > Math.max(boundary.right - alignTo.left, alignTo.right - boundary.left)) {\n addClass(this.$el, ((this.clsDrop) + \"-stack\"));\n }\n\n this.positionAt(this.$el, this.boundaryAlign ? this.boundary : this.toggle.$el, this.boundary);\n\n css(this.$el, 'display', '');\n\n }\n\n }\n\n };\n\n var registered;\n\n function registerEvent() {\n\n if (registered) {\n return;\n }\n\n registered = true;\n on(document, 'click', function (ref) {\n var target = ref.target;\n var defaultPrevented = ref.defaultPrevented;\n\n var prev;\n\n if (defaultPrevented) {\n return;\n }\n\n while (active && active !== prev && !within(target, active.$el) && !(active.toggle && within(target, active.toggle.$el))) {\n prev = active;\n active.hide(false);\n }\n });\n }\n\n var Dropdown = {\n\n extends: Drop\n\n };\n\n var FormCustom = {\n\n mixins: [Class],\n\n args: 'target',\n\n props: {\n target: Boolean\n },\n\n data: {\n target: false\n },\n\n computed: {\n\n input: function(_, $el) {\n return $(selInput, $el);\n },\n\n state: function() {\n return this.input.nextElementSibling;\n },\n\n target: function(ref, $el) {\n var target = ref.target;\n\n return target && (target === true\n && this.input.parentNode === $el\n && this.input.nextElementSibling\n || query(target, $el));\n }\n\n },\n\n update: function() {\n\n var ref = this;\n var target = ref.target;\n var input = ref.input;\n\n if (!target) {\n return;\n }\n\n var option;\n var prop = isInput(target) ? 'value' : 'textContent';\n var prev = target[prop];\n var value = input.files && input.files[0]\n ? input.files[0].name\n : matches(input, 'select') && (option = $$('option', input).filter(function (el) { return el.selected; })[0])\n ? option.textContent\n : input.value;\n\n if (prev !== value) {\n target[prop] = value;\n }\n\n },\n\n events: [\n\n {\n\n name: 'focusin focusout mouseenter mouseleave',\n\n delegate: selInput,\n\n handler: function(ref) {\n var type = ref.type;\n var current = ref.current;\n\n if (current === this.input) {\n toggleClass(\n this.state,\n (\"uk-\" + (includes(type, 'focus') ? 'focus' : 'hover')),\n includes(['focusin', 'mouseenter'], type)\n );\n }\n }\n\n },\n\n {\n\n name: 'change',\n\n handler: function() {\n this.$emit();\n }\n\n }\n\n ]\n\n };\n\n // Deprecated\n var Gif = {\n\n update: {\n\n read: function(data$$1) {\n\n var inview = isInView(this.$el);\n\n if (!inview || data$$1.isInView === inview) {\n return false;\n }\n\n data$$1.isInView = inview;\n },\n\n write: function() {\n this.$el.src = this.$el.src;\n },\n\n events: ['scroll', 'load', 'resize']\n }\n\n };\n\n var Margin = {\n\n props: {\n margin: String,\n firstColumn: Boolean\n },\n\n data: {\n margin: 'uk-margin-small-top',\n firstColumn: 'uk-first-column'\n },\n\n update: {\n\n read: function(data$$1) {\n\n var items = this.$el.children;\n var rows = [[]];\n\n if (!items.length || !isVisible(this.$el)) {\n return data$$1.rows = rows;\n }\n\n data$$1.rows = getRows(items);\n data$$1.stacks = !data$$1.rows.some(function (row) { return row.length > 1; });\n\n },\n\n write: function(ref) {\n var this$1 = this;\n var rows = ref.rows;\n\n\n rows.forEach(function (row, i) { return row.forEach(function (el, j) {\n toggleClass(el, this$1.margin, i !== 0);\n toggleClass(el, this$1.firstColumn, j === 0);\n }); }\n );\n\n },\n\n events: ['load', 'resize']\n\n }\n\n };\n\n function getRows(items) {\n var rows = [[]];\n\n for (var i = 0; i < items.length; i++) {\n\n var el = items[i];\n var dim = getOffset(el);\n\n if (!dim.height) {\n continue;\n }\n\n for (var j = rows.length - 1; j >= 0; j--) {\n\n var row = rows[j];\n\n if (!row[0]) {\n row.push(el);\n break;\n }\n\n var leftDim = getOffset(row[0]);\n\n if (dim.top >= leftDim.bottom - 1) {\n rows.push([el]);\n break;\n }\n\n if (dim.bottom > leftDim.top) {\n\n if (dim.left < leftDim.left && !isRtl) {\n row.unshift(el);\n break;\n }\n\n row.push(el);\n break;\n }\n\n if (j === 0) {\n rows.unshift([el]);\n break;\n }\n\n }\n\n }\n\n return rows;\n\n }\n\n function getOffset(element) {\n\n var offsetTop = element.offsetTop;\n var offsetLeft = element.offsetLeft;\n var offsetHeight = element.offsetHeight;\n\n return {\n top: offsetTop,\n left: offsetLeft,\n height: offsetHeight,\n bottom: offsetTop + offsetHeight\n };\n }\n\n var Grid = {\n\n extends: Margin,\n\n mixins: [Class],\n\n attrs: true,\n\n name: 'grid',\n\n props: {\n masonry: Boolean,\n parallax: Number\n },\n\n data: {\n margin: 'uk-grid-margin',\n clsStack: 'uk-grid-stack',\n masonry: false,\n parallax: 0\n },\n\n computed: {\n\n parallax: function(ref) {\n var parallax = ref.parallax;\n\n return Math.abs(parallax);\n }\n\n },\n\n connected: function() {\n this.masonry && addClass(this.$el, 'uk-flex-top uk-flex-wrap-top');\n },\n\n update: [\n\n {\n\n read: function(ref) {\n var rows = ref.rows;\n\n\n if (this.masonry || this.parallax) {\n rows = rows.map(function (elements) { return sortBy(elements, 'offsetLeft'); });\n }\n\n var translates = false;\n var elHeight = false;\n\n if (this.masonry) {\n\n var height$$1 = 0;\n\n translates = rows.reduce(function (translates, row, i) {\n\n translates[i] = row.map(function (_, j) { return i === 0 ? 0 : toFloat(translates[i - 1][j]) + (height$$1 - toFloat(rows[i - 1][j] && rows[i - 1][j].offsetHeight)); });\n height$$1 = row.reduce(function (height$$1, el) { return Math.max(height$$1, el.offsetHeight); }, 0);\n\n return translates;\n\n }, []);\n\n elHeight = maxColumnHeight(rows) + getMarginTop(this.$el, this.margin) * (rows.length - 1);\n\n }\n\n return {rows: rows, translates: translates, height: elHeight};\n\n },\n\n write: function(ref) {\n var rows = ref.rows;\n var stacks = ref.stacks;\n var height$$1 = ref.height;\n\n\n toggleClass(this.$el, this.clsStack, stacks);\n\n css(this.$el, 'paddingBottom', this.parallax && rows.some(function (row) { return row.length > 1; }) ? this.parallax : '');\n\n height$$1 && css(this.$el, 'minHeight', height$$1);\n\n },\n\n events: ['load', 'resize']\n\n },\n\n {\n\n read: function(ref) {\n var rows = ref.rows;\n var height$$1 = ref.height;\n\n return {\n scrolled: this.parallax && rows.some(function (row) { return row.length > 1; })\n ? scrolledOver(this.$el, height$$1 ? height$$1 - height(this.$el) : 0) * this.parallax\n : false\n };\n },\n\n write: function(ref) {\n var rows = ref.rows;\n var scrolled = ref.scrolled;\n var translates = ref.translates;\n\n\n if (scrolled === false && !translates) {\n return;\n }\n\n rows.forEach(function (row, i) { return row.forEach(function (el, j) { return css(el, 'transform', !scrolled && !translates ? '' : (\"translateY(\" + ((translates && -translates[i][j]) + (scrolled ? j % 2 ? scrolled : scrolled / 8 : 0)) + \"px)\")); }\n ); }\n );\n\n },\n\n events: ['scroll', 'load', 'resize']\n\n }\n\n ]\n\n };\n\n function getMarginTop(root, cls) {\n\n var nodes = toNodes(root.children);\n var ref = nodes.filter(function (el) { return hasClass(el, cls); });\n var node = ref[0];\n\n return toFloat(node\n ? css(node, 'marginTop')\n : css(nodes[0], 'paddingLeft'));\n }\n\n function maxColumnHeight(rows) {\n return Math.max.apply(Math, rows.reduce(function (sum, row) {\n row.forEach(function (el, i) { return sum[i] = (sum[i] || 0) + el.offsetHeight; });\n return sum;\n }, []));\n }\n\n var HeightMatch = {\n\n args: 'target',\n\n props: {\n target: String,\n row: Boolean\n },\n\n data: {\n target: '> *',\n row: true\n },\n\n computed: {\n\n elements: function(ref, $el) {\n var target = ref.target;\n\n return $$(target, $el);\n }\n\n },\n\n update: {\n\n read: function() {\n var this$1 = this;\n\n\n css(this.elements, {\n minHeight: '',\n boxSizing: ''\n });\n\n return {\n rows: !this.row\n ? [this.match(this.elements)]\n : getRows(this.elements).map(function (elements) { return this$1.match(elements); })\n };\n },\n\n write: function(ref) {\n var rows = ref.rows;\n\n\n rows.forEach(function (ref) {\n var height$$1 = ref.height;\n var elements = ref.elements;\n\n return css(elements, {\n minHeight: height$$1,\n boxSizing: 'border-box'\n });\n });\n\n },\n\n events: ['load', 'resize']\n\n },\n\n methods: {\n\n match: function(elements) {\n\n if (elements.length < 2) {\n return {};\n }\n\n var heights = [];\n var max = 0;\n\n elements\n .forEach(function (el) {\n var ref = offset(el);\n var height$$1 = ref.height;\n max = Math.max(max, height$$1);\n heights.push(height$$1);\n });\n\n elements = elements.filter(function (el, i) { return heights[i] < max; });\n\n return {height: max, elements: elements};\n }\n }\n\n };\n\n var HeightViewport = {\n\n props: {\n expand: Boolean,\n offsetTop: Boolean,\n offsetBottom: Boolean,\n minHeight: Number\n },\n\n data: {\n expand: false,\n offsetTop: false,\n offsetBottom: false,\n minHeight: 0\n },\n\n update: {\n\n write: function() {\n\n css(this.$el, 'boxSizing', 'border-box');\n\n var viewport = height(window);\n var minHeight, offsetTop = 0;\n\n if (this.expand) {\n\n css(this.$el, {height: '', minHeight: ''});\n\n var diff = viewport - offsetHeight(document.documentElement);\n\n if (diff > 0) {\n minHeight = offsetHeight(this.$el) + diff;\n }\n\n } else {\n\n var ref = offset(this.$el);\n var top = ref.top;\n\n if (top < viewport / 2 && this.offsetTop) {\n offsetTop += top;\n }\n\n if (this.offsetBottom === true) {\n\n offsetTop += offsetHeight(this.$el.nextElementSibling);\n\n } else if (isNumeric(this.offsetBottom)) {\n\n offsetTop += (viewport / 100) * this.offsetBottom;\n\n } else if (this.offsetBottom && endsWith(this.offsetBottom, 'px')) {\n\n offsetTop += toFloat(this.offsetBottom);\n\n } else if (isString(this.offsetBottom)) {\n\n offsetTop += offsetHeight(query(this.offsetBottom, this.$el));\n\n }\n\n // on mobile devices (iOS and Android) window.innerHeight !== 100vh\n minHeight = offsetTop ? (\"calc(100vh - \" + offsetTop + \"px)\") : '100vh';\n\n }\n\n if (!minHeight) {\n return;\n }\n\n css(this.$el, {height: '', minHeight: minHeight});\n\n var elHeight = this.$el.offsetHeight;\n if (this.minHeight && this.minHeight > elHeight) {\n css(this.$el, 'minHeight', this.minHeight);\n }\n\n // IE 11 fix (min-height on a flex container won't apply to its flex items)\n if (viewport - offsetTop >= elHeight) {\n css(this.$el, 'height', minHeight);\n }\n\n },\n\n events: ['load', 'resize']\n\n }\n\n };\n\n function offsetHeight(el) {\n return el && el.offsetHeight || 0;\n }\n\n var svgs = {};\n\n var SVG = {\n\n attrs: true,\n\n props: {\n id: String,\n icon: String,\n src: String,\n style: String,\n width: Number,\n height: Number,\n ratio: Number,\n 'class': String\n },\n\n data: {\n ratio: 1,\n id: false,\n exclude: ['ratio', 'src', 'icon'],\n 'class': ''\n },\n\n connected: function() {\n var this$1 = this;\n var assign$$1;\n\n\n this.class += ' uk-svg';\n\n if (!this.icon && includes(this.src, '#')) {\n\n var parts = this.src.split('#');\n\n if (parts.length > 1) {\n (assign$$1 = parts, this.src = assign$$1[0], this.icon = assign$$1[1]);\n }\n }\n\n this.svg = this.getSvg().then(function (svg) {\n\n var el;\n\n if (isString(svg)) {\n\n if (this$1.icon && includes(svg, '<symbol')) {\n svg = parseSymbols(svg, this$1.icon) || svg;\n }\n\n el = $(svg.substr(svg.indexOf('<svg')));\n\n } else {\n el = svg.cloneNode(true);\n }\n\n if (!el) {\n return Promise$1.reject('SVG not found.');\n }\n\n var dimensions = attr(el, 'viewBox');\n\n if (dimensions) {\n dimensions = dimensions.split(' ');\n this$1.width = this$1.$props.width || dimensions[2];\n this$1.height = this$1.$props.height || dimensions[3];\n }\n\n this$1.width *= this$1.ratio;\n this$1.height *= this$1.ratio;\n\n for (var prop in this$1.$options.props) {\n if (this$1[prop] && !includes(this$1.exclude, prop)) {\n attr(el, prop, this$1[prop]);\n }\n }\n\n if (!this$1.id) {\n removeAttr(el, 'id');\n }\n\n if (this$1.width && !this$1.height) {\n removeAttr(el, 'height');\n }\n\n if (this$1.height && !this$1.width) {\n removeAttr(el, 'width');\n }\n\n var root = this$1.$el;\n if (isVoidElement(root) || root.tagName === 'CANVAS') {\n\n attr(root, {hidden: true, id: null});\n\n var next = root.nextElementSibling;\n if (next && el.isEqualNode(next)) {\n el = next;\n } else {\n after(root, el);\n }\n\n } else {\n\n var last = root.lastElementChild;\n if (last && el.isEqualNode(last)) {\n el = last;\n } else {\n append(root, el);\n }\n\n }\n\n this$1.svgEl = el;\n\n return el;\n\n }, noop);\n\n },\n\n disconnected: function() {\n var this$1 = this;\n\n\n if (isVoidElement(this.$el)) {\n attr(this.$el, {hidden: null, id: this.id || null});\n }\n\n if (this.svg) {\n this.svg.then(function (svg) { return (!this$1._connected || svg !== this$1.svgEl) && remove(svg); }, noop);\n }\n\n this.svg = this.svgEl = null;\n\n },\n\n methods: {\n\n getSvg: function() {\n var this$1 = this;\n\n\n if (!this.src) {\n return Promise$1.reject();\n }\n\n if (svgs[this.src]) {\n return svgs[this.src];\n }\n\n svgs[this.src] = new Promise$1(function (resolve, reject) {\n\n if (startsWith(this$1.src, 'data:')) {\n resolve(decodeURIComponent(this$1.src.split(',')[1]));\n } else {\n\n ajax(this$1.src).then(\n function (xhr) { return resolve(xhr.response); },\n function () { return reject('SVG not found.'); }\n );\n\n }\n\n });\n\n return svgs[this.src];\n\n }\n\n }\n\n };\n\n var symbolRe = /<symbol(.*?id=(['\"])(.*?)\\2[^]*?<\\/)symbol>/g;\n var symbols = {};\n\n function parseSymbols(svg, icon) {\n\n if (!symbols[svg]) {\n\n symbols[svg] = {};\n\n var match;\n while ((match = symbolRe.exec(svg))) {\n symbols[svg][match[3]] = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\"\" + (match[1]) + \"svg>\";\n }\n\n symbolRe.lastIndex = 0;\n\n }\n\n return symbols[svg][icon];\n }\n\n var closeIcon = \"<svg width=\\\"14\\\" height=\\\"14\\\" viewBox=\\\"0 0 14 14\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"13\\\" y2=\\\"13\\\"/><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" x1=\\\"13\\\" y1=\\\"1\\\" x2=\\\"1\\\" y2=\\\"13\\\"/></svg>\";\n\n var closeLarge = \"<svg width=\\\"20\\\" height=\\\"20\\\" viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.4\\\" x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"19\\\" y2=\\\"19\\\"/><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.4\\\" x1=\\\"19\\\" y1=\\\"1\\\" x2=\\\"1\\\" y2=\\\"19\\\"/></svg>\";\n\n var marker = \"<svg width=\\\"20\\\" height=\\\"20\\\" viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><rect x=\\\"9\\\" y=\\\"4\\\" width=\\\"1\\\" height=\\\"11\\\"/><rect x=\\\"4\\\" y=\\\"9\\\" width=\\\"11\\\" height=\\\"1\\\"/></svg>\";\n\n var navbarToggleIcon = \"<svg width=\\\"20\\\" height=\\\"20\\\" viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><rect y=\\\"9\\\" width=\\\"20\\\" height=\\\"2\\\"/><rect y=\\\"3\\\" width=\\\"20\\\" height=\\\"2\\\"/><rect y=\\\"15\\\" width=\\\"20\\\" height=\\\"2\\\"/></svg>\";\n\n var overlayIcon = \"<svg width=\\\"40\\\" height=\\\"40\\\" viewBox=\\\"0 0 40 40\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><rect x=\\\"19\\\" y=\\\"0\\\" width=\\\"1\\\" height=\\\"40\\\"/><rect x=\\\"0\\\" y=\\\"19\\\" width=\\\"40\\\" height=\\\"1\\\"/></svg>\";\n\n var paginationNext = \"<svg width=\\\"7\\\" height=\\\"12\\\" viewBox=\\\"0 0 7 12\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.2\\\" points=\\\"1 1 6 6 1 11\\\"/></svg>\";\n\n var paginationPrevious = \"<svg width=\\\"7\\\" height=\\\"12\\\" viewBox=\\\"0 0 7 12\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.2\\\" points=\\\"6 1 1 6 6 11\\\"/></svg>\";\n\n var searchIcon = \"<svg width=\\\"20\\\" height=\\\"20\\\" viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" cx=\\\"9\\\" cy=\\\"9\\\" r=\\\"7\\\"/><path fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" d=\\\"M14,14 L18,18 L14,14 Z\\\"/></svg>\";\n\n var searchLarge = \"<svg width=\\\"40\\\" height=\\\"40\\\" viewBox=\\\"0 0 40 40\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.8\\\" cx=\\\"17.5\\\" cy=\\\"17.5\\\" r=\\\"16.5\\\"/><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.8\\\" x1=\\\"38\\\" y1=\\\"39\\\" x2=\\\"29\\\" y2=\\\"30\\\"/></svg>\";\n\n var searchNavbar = \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" cx=\\\"10.5\\\" cy=\\\"10.5\\\" r=\\\"9.5\\\"/><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" x1=\\\"23\\\" y1=\\\"23\\\" x2=\\\"17\\\" y2=\\\"17\\\"/></svg>\";\n\n var slidenavNext = \"<svg width=\\\"14px\\\" height=\\\"24px\\\" viewBox=\\\"0 0 14 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.4\\\" points=\\\"1.225,23 12.775,12 1.225,1 \\\"/></svg>\";\n\n var slidenavNextLarge = \"<svg width=\\\"25px\\\" height=\\\"40px\\\" viewBox=\\\"0 0 25 40\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"2\\\" points=\\\"4.002,38.547 22.527,20.024 4,1.5 \\\"/></svg>\";\n\n var slidenavPrevious = \"<svg width=\\\"14px\\\" height=\\\"24px\\\" viewBox=\\\"0 0 14 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.4\\\" points=\\\"12.775,1 1.225,12 12.775,23 \\\"/></svg>\";\n\n var slidenavPreviousLarge = \"<svg width=\\\"25px\\\" height=\\\"40px\\\" viewBox=\\\"0 0 25 40\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"2\\\" points=\\\"20.527,1.5 2,20.024 20.525,38.547 \\\"/></svg>\";\n\n var spinner = \"<svg width=\\\"30\\\" height=\\\"30\\\" viewBox=\\\"0 0 30 30\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle fill=\\\"none\\\" stroke=\\\"#000\\\" cx=\\\"15\\\" cy=\\\"15\\\" r=\\\"14\\\"/></svg>\";\n\n var totop = \"<svg width=\\\"18\\\" height=\\\"10\\\" viewBox=\\\"0 0 18 10\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.2\\\" points=\\\"1 9 9 1 17 9 \\\"/></svg>\";\n\n var parsed = {};\n var icons = {\n spinner: spinner,\n totop: totop,\n marker: marker,\n 'close-icon': closeIcon,\n 'close-large': closeLarge,\n 'navbar-toggle-icon': navbarToggleIcon,\n 'overlay-icon': overlayIcon,\n 'pagination-next': paginationNext,\n 'pagination-previous': paginationPrevious,\n 'search-icon': searchIcon,\n 'search-large': searchLarge,\n 'search-navbar': searchNavbar,\n 'slidenav-next': slidenavNext,\n 'slidenav-next-large': slidenavNextLarge,\n 'slidenav-previous': slidenavPrevious,\n 'slidenav-previous-large': slidenavPreviousLarge\n };\n\n var Icon = {\n\n install: install,\n\n attrs: ['icon', 'ratio'],\n\n mixins: [Class, SVG],\n\n args: 'icon',\n\n props: ['icon'],\n\n data: {exclude: ['id', 'style', 'class', 'src', 'icon', 'ratio']},\n\n isIcon: true,\n\n connected: function() {\n addClass(this.$el, 'uk-icon');\n },\n\n methods: {\n\n getSvg: function() {\n\n var icon = getIcon(applyRtl(this.icon));\n\n if (!icon) {\n return Promise$1.reject('Icon not found.');\n }\n\n return Promise$1.resolve(icon);\n }\n\n }\n\n };\n\n var IconComponent = {\n\n extends: Icon,\n\n data: function (vm) { return ({\n icon: hyphenate(vm.constructor.options.name)\n }); }\n\n };\n\n var Slidenav = {\n\n extends: IconComponent,\n\n connected: function() {\n addClass(this.$el, 'uk-slidenav');\n },\n\n computed: {\n\n icon: function(ref, $el) {\n var icon = ref.icon;\n\n return hasClass($el, 'uk-slidenav-large')\n ? (icon + \"-large\")\n : icon;\n }\n\n }\n\n };\n\n var Search = {\n\n extends: IconComponent,\n\n computed: {\n\n icon: function(ref, $el) {\n var icon = ref.icon;\n\n return hasClass($el, 'uk-search-icon') && parents($el, '.uk-search-large').length\n ? 'search-large'\n : parents($el, '.uk-search-navbar').length\n ? 'search-navbar'\n : icon;\n }\n\n }\n\n };\n\n var Close = {\n\n extends: IconComponent,\n\n computed: {\n\n icon: function() {\n return (\"close-\" + (hasClass(this.$el, 'uk-close-large') ? 'large' : 'icon'));\n }\n\n }\n\n };\n\n var Spinner = {\n\n extends: IconComponent,\n\n connected: function() {\n var this$1 = this;\n\n this.svg.then(function (svg) { return this$1.ratio !== 1 && css($('circle', svg), 'strokeWidth', 1 / this$1.ratio); }, noop);\n }\n\n };\n\n function install(UIkit) {\n UIkit.icon.add = function (name, svg) {\n var obj;\n\n\n var added = isString(name) ? (( obj = {}, obj[name] = svg, obj )) : name;\n each(added, function (svg, name) {\n icons[name] = svg;\n delete parsed[name];\n });\n\n if (UIkit._initialized) {\n apply(document.body, function (el) { return each(UIkit.getComponents(el), function (cmp) { return cmp.$options.isIcon && cmp.icon in added && cmp.$reset(); }\n ); }\n );\n }\n };\n }\n\n function getIcon(icon) {\n\n if (!icons[icon]) {\n return null;\n }\n\n if (!parsed[icon]) {\n parsed[icon] = $(icons[icon].trim());\n }\n\n return parsed[icon];\n }\n\n function applyRtl(icon) {\n return isRtl ? swap(swap(icon, 'left', 'right'), 'previous', 'next') : icon;\n }\n\n var Img = {\n\n attrs: true,\n\n props: {\n dataSrc: String,\n dataSrcset: Boolean,\n dataSizes: Boolean,\n sizes: String,\n width: Number,\n height: Number,\n dataWidth: Number,\n dataHeight: Number,\n offsetTop: String,\n offsetLeft: String,\n target: String\n },\n\n data: {\n dataSrc: '',\n dataSrcset: false,\n dataSizes: false,\n sizes: false,\n width: false,\n height: false,\n offsetTop: '50vh',\n offsetLeft: 0,\n target: false\n },\n\n computed: {\n\n cacheKey: function(ref) {\n var dataSrc = ref.dataSrc;\n\n return ((this.$name) + \".\" + dataSrc);\n },\n\n width: function(ref) {\n var width$$1 = ref.width;\n var dataWidth = ref.dataWidth;\n\n return width$$1 || dataWidth;\n },\n\n height: function(ref) {\n var height$$1 = ref.height;\n var dataHeight = ref.dataHeight;\n\n return height$$1 || dataHeight;\n },\n\n sizes: function(ref) {\n var sizes = ref.sizes;\n var dataSizes = ref.dataSizes;\n\n return sizes || dataSizes;\n },\n\n isImg: function(_, $el) {\n return isImg($el);\n },\n\n target: function(ref) {\n var target = ref.target;\n\n return [this.$el].concat(queryAll(target, this.$el));\n },\n\n offsetTop: function(ref) {\n var offsetTop = ref.offsetTop;\n\n return toPx(offsetTop, 'height');\n },\n\n offsetLeft: function(ref) {\n var offsetLeft = ref.offsetLeft;\n\n return toPx(offsetLeft, 'width');\n }\n\n },\n\n connected: function() {\n\n if (storage[this.cacheKey]) {\n setSrcAttrs(this.$el, storage[this.cacheKey] || this.dataSrc, this.dataSrcset, this.sizes);\n } else if (this.isImg && this.width && this.height) {\n setSrcAttrs(this.$el, getPlaceholderImage(this.width, this.height, this.sizes));\n }\n\n },\n\n update: [\n\n {\n\n read: function(ref) {\n var this$1 = this;\n var delay = ref.delay;\n var image = ref.image;\n\n\n if (!delay) {\n return;\n }\n\n if (image || !this.target.some(function (el) { return isInView(el, this$1.offsetTop, this$1.offsetLeft, true); })) {\n\n if (!this.isImg && image) {\n image.then(function (img) { return img && setSrcAttrs(this$1.$el, currentSrc(img)); });\n }\n\n return;\n }\n\n return {\n image: getImage(this.dataSrc, this.dataSrcset, this.sizes).then(function (img) {\n\n setSrcAttrs(this$1.$el, currentSrc(img), img.srcset, img.sizes);\n storage[this$1.cacheKey] = currentSrc(img);\n return img;\n\n }, noop)\n };\n\n },\n\n write: function(data$$1) {\n\n // Give placeholder images time to apply their dimensions\n if (!data$$1.delay) {\n this.$emit();\n return data$$1.delay = true;\n }\n\n },\n\n events: ['scroll', 'load', 'resize']\n\n }\n\n ]\n\n };\n\n function setSrcAttrs(el, src, srcset, sizes) {\n\n if (isImg(el)) {\n src && (el.src = src);\n srcset && (el.srcset = srcset);\n sizes && (el.sizes = sizes);\n } else {\n src && css(el, 'backgroundImage', (\"url(\" + src + \")\"));\n }\n\n }\n\n var urlCache = {};\n var sizesRe = /\\s*(.*?)\\s*(\\w+|calc\\(.*?\\))\\s*(?:,|$)/g;\n function getPlaceholderImage(width$$1, height$$1, sizes, color) {\n var assign$$1;\n\n if ( color === void 0 ) color = 'transparent';\n\n if (sizes) {\n var matches$$1;\n\n while ((matches$$1 = sizesRe.exec(sizes))) {\n if (!matches$$1[1] || window.matchMedia(matches$$1[1]).matches) {\n matches$$1 = evaluateSize(matches$$1[2]);\n break;\n }\n }\n\n sizesRe.lastIndex = 0;\n\n ((assign$$1 = Dimensions.ratio({width: width$$1, height: height$$1}, 'width', toPx(matches$$1 || '100vw')), width$$1 = assign$$1.width, height$$1 = assign$$1.height));\n\n }\n\n var key = width$$1 + \".\" + height$$1 + \".\" + color;\n if (urlCache[key]) {\n return urlCache[key];\n }\n\n var canvas = fragment('<canvas>');\n canvas.width = width$$1;\n canvas.height = height$$1;\n\n var context = canvas.getContext('2d');\n context.fillStyle = color;\n context.fillRect(0, 0, width$$1, height$$1);\n\n return urlCache[key] = canvas.toDataURL('image/png');\n }\n\n var sizeRe = /\\d+(?:\\w+|%)/g;\n var additionRe = /[+-]?(\\d+)/g;\n function evaluateSize(size) {\n return startsWith(size, 'calc')\n ? size\n .substring(5, size.length - 1)\n .replace(sizeRe, function (size) { return toPx(size); })\n .replace(/ /g, '')\n .match(additionRe)\n .reduce(function (a, b) { return a + +b; }, 0)\n : size;\n }\n\n function toPx(value, property, element) {\n if ( property === void 0 ) property = 'width';\n if ( element === void 0 ) element = window;\n\n return isNumeric(value)\n ? +value\n : endsWith(value, 'vw')\n ? percent(element, 'width', value)\n : endsWith(value, 'vh')\n ? percent(element, 'height', value)\n : endsWith(value, '%')\n ? percent(element, property, value)\n : toFloat(value);\n }\n\n var dimensions = {height: height, width: width};\n function percent(element, property, value) {\n return dimensions[property](element) * toFloat(value) / 100;\n }\n\n function isImg(el) {\n return el.tagName === 'IMG';\n }\n\n function currentSrc(el) {\n return el.currentSrc || el.src;\n }\n\n var key = '__test__';\n var storage;\n\n // workaround for Safari's private browsing mode and accessing sessionStorage in Blink\n try {\n storage = window.sessionStorage || {};\n storage[key] = 1;\n delete storage[key];\n } catch (e) {\n storage = {};\n }\n\n var Leader = {\n\n mixins: [Class],\n\n props: {\n fill: String,\n media: 'media'\n },\n\n data: {\n fill: '',\n media: false,\n clsWrapper: 'uk-leader-fill',\n clsHide: 'uk-leader-hide',\n attrFill: 'data-fill'\n },\n\n computed: {\n\n fill: function(ref) {\n var fill = ref.fill;\n\n return fill || getCssVar('leader-fill');\n }\n\n },\n\n connected: function() {\n var assign$$1;\n\n (assign$$1 = wrapInner(this.$el, (\"<span class=\\\"\" + (this.clsWrapper) + \"\\\">\")), this.wrapper = assign$$1[0]);\n },\n\n disconnected: function() {\n unwrap(this.wrapper.childNodes);\n },\n\n update: [\n\n {\n\n read: function(ref) {\n var changed = ref.changed;\n var width$$1 = ref.width;\n\n\n var prev = width$$1;\n\n width$$1 = Math.floor(this.$el.offsetWidth / 2);\n\n return {\n width: width$$1,\n changed: changed || prev !== width$$1,\n hide: this.media && !window.matchMedia(this.media).matches\n };\n },\n\n write: function(data$$1) {\n\n toggleClass(this.wrapper, this.clsHide, data$$1.hide);\n\n if (data$$1.changed) {\n data$$1.changed = false;\n attr(this.wrapper, this.attrFill, new Array(data$$1.width).join(this.fill));\n }\n\n },\n\n events: ['load', 'resize']\n\n }\n ]\n\n };\n\n var Container = {\n\n props: {\n container: Boolean\n },\n\n data: {\n container: true\n },\n\n computed: {\n\n container: function(ref) {\n var container = ref.container;\n\n return container === true && this.$container || container && $(container);\n }\n\n }\n\n };\n\n var active$1;\n\n var Modal = {\n\n mixins: [Class, Container, Togglable],\n\n props: {\n selPanel: String,\n selClose: String,\n escClose: Boolean,\n bgClose: Boolean,\n stack: Boolean\n },\n\n data: {\n cls: 'uk-open',\n escClose: true,\n bgClose: true,\n overlay: true,\n stack: false\n },\n\n computed: {\n\n panel: function(ref, $el) {\n var selPanel = ref.selPanel;\n\n return $(selPanel, $el);\n },\n\n transitionElement: function() {\n return this.panel;\n },\n\n transitionDuration: function() {\n return toMs(css(this.transitionElement, 'transitionDuration'));\n },\n\n bgClose: function(ref) {\n var bgClose = ref.bgClose;\n\n return bgClose && this.panel;\n }\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return this.selClose;\n },\n\n handler: function(e) {\n e.preventDefault();\n this.hide();\n }\n\n },\n\n {\n\n name: 'toggle',\n\n self: true,\n\n handler: function(e) {\n\n if (e.defaultPrevented) {\n return;\n }\n\n e.preventDefault();\n this.toggle();\n }\n\n },\n\n {\n name: 'beforeshow',\n\n self: true,\n\n handler: function(e) {\n\n var prev = active$1 && active$1 !== this && active$1;\n\n active$1 = this;\n\n if (prev) {\n if (this.stack) {\n this.prev = prev;\n } else {\n prev.hide().then(this.show);\n e.preventDefault();\n return;\n }\n }\n\n registerEvents();\n\n }\n\n },\n\n {\n name: 'beforehide',\n\n self: true,\n\n handler: function() {\n\n active$1 = active$1 && active$1 !== this && active$1 || this.prev;\n\n if (!active$1) {\n deregisterEvents();\n }\n\n }\n\n },\n\n {\n\n name: 'show',\n\n self: true,\n\n handler: function() {\n\n if (!hasClass(document.documentElement, this.clsPage)) {\n this.scrollbarWidth = width(window) - width(document);\n css(document.body, 'overflowY', this.scrollbarWidth && this.overlay ? 'scroll' : '');\n }\n\n addClass(document.documentElement, this.clsPage);\n\n }\n\n },\n\n {\n\n name: 'hidden',\n\n self: true,\n\n handler: function() {\n var this$1 = this;\n\n\n var found;\n var ref = this;\n var prev = ref.prev;\n\n while (prev) {\n\n if (prev.clsPage === this$1.clsPage) {\n found = true;\n break;\n }\n\n prev = prev.prev;\n\n }\n\n if (!found) {\n removeClass(document.documentElement, this.clsPage);\n\n }\n\n !this.prev && css(document.body, 'overflowY', '');\n }\n\n }\n\n ],\n\n methods: {\n\n toggle: function() {\n return this.isToggled() ? this.hide() : this.show();\n },\n\n show: function() {\n\n if (this.isToggled()) {\n return Promise$1.resolve();\n }\n\n if (this.container && this.$el.parentNode !== this.container) {\n append(this.container, this.$el);\n this._callConnected();\n }\n\n return this.toggleNow(this.$el, true);\n },\n\n hide: function() {\n return this.isToggled()\n ? this.toggleNow(this.$el, false)\n : Promise$1.resolve();\n },\n\n getActive: function() {\n return active$1;\n },\n\n _toggleImmediate: function(el, show) {\n var this$1 = this;\n\n return new Promise$1(function (resolve) { return requestAnimationFrame(function () {\n this$1._toggle(el, show);\n\n if (this$1.transitionDuration) {\n once(this$1.transitionElement, 'transitionend', resolve, false, function (e) { return e.target === this$1.transitionElement; });\n } else {\n resolve();\n }\n }); }\n );\n }\n\n }\n\n };\n\n var events;\n\n function registerEvents() {\n\n if (events) {\n return;\n }\n\n events = [\n on(document, 'click', function (ref) {\n var target = ref.target;\n var defaultPrevented = ref.defaultPrevented;\n\n if (active$1 && active$1.bgClose && !defaultPrevented && (!active$1.overlay || within(target, active$1.$el)) && !within(target, active$1.panel)) {\n active$1.hide();\n }\n }),\n on(document, 'keydown', function (e) {\n if (e.keyCode === 27 && active$1 && active$1.escClose) {\n e.preventDefault();\n active$1.hide();\n }\n })\n ];\n }\n\n function deregisterEvents() {\n events && events.forEach(function (unbind) { return unbind(); });\n events = null;\n }\n\n var Modal$1 = {\n\n install: install$1,\n\n mixins: [Modal],\n\n data: {\n clsPage: 'uk-modal-page',\n selPanel: '.uk-modal-dialog',\n selClose: '.uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full'\n },\n\n events: [\n\n {\n name: 'show',\n\n self: true,\n\n handler: function() {\n\n if (hasClass(this.panel, 'uk-margin-auto-vertical')) {\n addClass(this.$el, 'uk-flex');\n } else {\n css(this.$el, 'display', 'block');\n }\n\n height(this.$el); // force reflow\n }\n },\n\n {\n name: 'hidden',\n\n self: true,\n\n handler: function() {\n\n css(this.$el, 'display', '');\n removeClass(this.$el, 'uk-flex');\n\n }\n }\n\n ]\n\n };\n\n function install$1 (UIkit) {\n\n UIkit.modal.dialog = function (content, options) {\n\n var dialog = UIkit.modal((\" <div class=\\\"uk-modal\\\"> <div class=\\\"uk-modal-dialog\\\">\" + content + \"</div> </div> \"), options);\n\n dialog.show();\n\n on(dialog.$el, 'hidden', function (ref) {\n var target = ref.target;\n var currentTarget = ref.currentTarget;\n\n if (target === currentTarget) {\n dialog.$destroy(true);\n }\n });\n\n return dialog;\n };\n\n UIkit.modal.alert = function (message, options) {\n\n options = assign({bgClose: false, escClose: false, labels: UIkit.modal.labels}, options);\n\n return new Promise$1(\n function (resolve) { return on(UIkit.modal.dialog((\" <div class=\\\"uk-modal-body\\\">\" + (isString(message) ? message : html(message)) + \"</div> <div class=\\\"uk-modal-footer uk-text-right\\\"> <button class=\\\"uk-button uk-button-primary uk-modal-close\\\" autofocus>\" + (options.labels.ok) + \"</button> </div> \"), options).$el, 'hide', resolve); }\n );\n };\n\n UIkit.modal.confirm = function (message, options) {\n\n options = assign({bgClose: false, escClose: true, labels: UIkit.modal.labels}, options);\n\n return new Promise$1(function (resolve, reject) {\n\n var confirm = UIkit.modal.dialog((\" <form> <div class=\\\"uk-modal-body\\\">\" + (isString(message) ? message : html(message)) + \"</div> <div class=\\\"uk-modal-footer uk-text-right\\\"> <button class=\\\"uk-button uk-button-default uk-modal-close\\\" type=\\\"button\\\">\" + (options.labels.cancel) + \"</button> <button class=\\\"uk-button uk-button-primary\\\" autofocus>\" + (options.labels.ok) + \"</button> </div> </form> \"), options);\n\n var resolved = false;\n\n on(confirm.$el, 'submit', 'form', function (e) {\n e.preventDefault();\n resolve();\n resolved = true;\n confirm.hide();\n });\n on(confirm.$el, 'hide', function () {\n if (!resolved) {\n reject();\n }\n });\n\n });\n };\n\n UIkit.modal.prompt = function (message, value, options) {\n\n options = assign({bgClose: false, escClose: true, labels: UIkit.modal.labels}, options);\n\n return new Promise$1(function (resolve) {\n\n var prompt = UIkit.modal.dialog((\" <form class=\\\"uk-form-stacked\\\"> <div class=\\\"uk-modal-body\\\"> <label>\" + (isString(message) ? message : html(message)) + \"</label> <input class=\\\"uk-input\\\" autofocus> </div> <div class=\\\"uk-modal-footer uk-text-right\\\"> <button class=\\\"uk-button uk-button-default uk-modal-close\\\" type=\\\"button\\\">\" + (options.labels.cancel) + \"</button> <button class=\\\"uk-button uk-button-primary\\\">\" + (options.labels.ok) + \"</button> </div> </form> \"), options),\n input = $('input', prompt.$el);\n\n input.value = value;\n\n var resolved = false;\n\n on(prompt.$el, 'submit', 'form', function (e) {\n e.preventDefault();\n resolve(input.value);\n resolved = true;\n prompt.hide();\n });\n on(prompt.$el, 'hide', function () {\n if (!resolved) {\n resolve(null);\n }\n });\n\n });\n };\n\n UIkit.modal.labels = {\n ok: 'Ok',\n cancel: 'Cancel'\n };\n\n }\n\n var Nav = {\n\n extends: Accordion,\n\n data: {\n targets: '> .uk-parent',\n toggle: '> a',\n content: '> ul'\n }\n\n };\n\n var Navbar = {\n\n mixins: [Class],\n\n props: {\n dropdown: String,\n mode: 'list',\n align: String,\n offset: Number,\n boundary: Boolean,\n boundaryAlign: Boolean,\n clsDrop: String,\n delayShow: Number,\n delayHide: Number,\n dropbar: Boolean,\n dropbarMode: String,\n dropbarAnchor: Boolean,\n duration: Number\n },\n\n data: {\n dropdown: '.uk-navbar-nav > li',\n align: !isRtl ? 'left' : 'right',\n clsDrop: 'uk-navbar-dropdown',\n mode: undefined,\n offset: undefined,\n delayShow: undefined,\n delayHide: undefined,\n boundaryAlign: undefined,\n flip: 'x',\n boundary: true,\n dropbar: false,\n dropbarMode: 'slide',\n dropbarAnchor: false,\n duration: 200,\n },\n\n computed: {\n\n boundary: function(ref, $el) {\n var boundary = ref.boundary;\n var boundaryAlign = ref.boundaryAlign;\n\n return (boundary === true || boundaryAlign) ? $el : boundary;\n },\n\n dropbarAnchor: function(ref, $el) {\n var dropbarAnchor = ref.dropbarAnchor;\n\n return query(dropbarAnchor, $el);\n },\n\n pos: function(ref) {\n var align = ref.align;\n\n return (\"bottom-\" + align);\n },\n\n dropdowns: function(ref, $el) {\n var dropdown = ref.dropdown;\n var clsDrop = ref.clsDrop;\n\n return $$((dropdown + \" .\" + clsDrop), $el);\n }\n\n },\n\n beforeConnect: function() {\n\n var ref = this.$props;\n var dropbar = ref.dropbar;\n\n this.dropbar = dropbar && (query(dropbar, this.$el) || $('+ .uk-navbar-dropbar', this.$el) || $('<div></div>'));\n\n if (this.dropbar) {\n\n addClass(this.dropbar, 'uk-navbar-dropbar');\n\n if (this.dropbarMode === 'slide') {\n addClass(this.dropbar, 'uk-navbar-dropbar-slide');\n }\n }\n\n },\n\n disconnected: function() {\n this.dropbar && remove(this.dropbar);\n },\n\n update: function() {\n var this$1 = this;\n\n\n this.$create(\n 'drop',\n this.dropdowns.filter(function (el) { return !this$1.getDropdown(el); }),\n assign({}, this.$props, {boundary: this.boundary, pos: this.pos, offset: this.dropbar || this.offset})\n );\n\n },\n\n events: [\n\n {\n name: 'mouseover',\n\n delegate: function() {\n return this.dropdown;\n },\n\n handler: function(ref) {\n var current = ref.current;\n\n var active = this.getActive();\n if (active && active.toggle && !within(active.toggle.$el, current) && !active.tracker.movesTo(active.$el)) {\n active.hide(false);\n }\n }\n\n },\n\n {\n name: 'mouseleave',\n\n el: function() {\n return this.dropbar;\n },\n\n handler: function() {\n var active = this.getActive();\n\n if (active && !matches(this.dropbar, ':hover')) {\n active.hide();\n }\n }\n },\n\n {\n name: 'beforeshow',\n\n capture: true,\n\n filter: function() {\n return this.dropbar;\n },\n\n handler: function() {\n\n if (!this.dropbar.parentNode) {\n after(this.dropbarAnchor || this.$el, this.dropbar);\n }\n\n }\n },\n\n {\n name: 'show',\n\n capture: true,\n\n filter: function() {\n return this.dropbar;\n },\n\n handler: function(_, drop) {\n\n var $el = drop.$el;\n var dir = drop.dir;\n\n this.clsDrop && addClass($el, ((this.clsDrop) + \"-dropbar\"));\n\n if (dir === 'bottom') {\n this.transitionTo($el.offsetHeight + toFloat(css($el, 'marginTop')) + toFloat(css($el, 'marginBottom')), $el);\n }\n }\n },\n\n {\n name: 'beforehide',\n\n filter: function() {\n return this.dropbar;\n },\n\n handler: function(e, ref) {\n var $el = ref.$el;\n\n\n var active = this.getActive();\n\n if (matches(this.dropbar, ':hover') && active && active.$el === $el) {\n e.preventDefault();\n }\n }\n },\n\n {\n name: 'hide',\n\n filter: function() {\n return this.dropbar;\n },\n\n handler: function(_, ref) {\n var $el = ref.$el;\n\n\n var active = this.getActive();\n\n if (!active || active && active.$el === $el) {\n this.transitionTo(0);\n }\n }\n }\n\n ],\n\n methods: {\n\n getActive: function() {\n var ref = this.dropdowns.map(this.getDropdown).filter(function (drop) { return drop.isActive(); });\n var active = ref[0];\n return active && includes(active.mode, 'hover') && within(active.toggle.$el, this.$el) && active;\n },\n\n transitionTo: function(newHeight, el) {\n\n var ref = this;\n var dropbar = ref.dropbar;\n var oldHeight = isVisible(dropbar) ? height(dropbar) : 0;\n\n el = oldHeight < newHeight && el;\n\n css(el, 'clip', (\"rect(0,\" + (el.offsetWidth) + \"px,\" + oldHeight + \"px,0)\"));\n\n height(dropbar, oldHeight);\n\n Transition.cancel([el, dropbar]);\n return Promise.all([\n Transition.start(dropbar, {height: newHeight}, this.duration),\n Transition.start(el, {clip: (\"rect(0,\" + (el.offsetWidth) + \"px,\" + newHeight + \"px,0)\")}, this.duration)\n ])\n .catch(noop)\n .then(function () { return css(el, {clip: ''}); });\n },\n\n getDropdown: function(el) {\n return this.$getComponent(el, 'drop') || this.$getComponent(el, 'dropdown');\n }\n\n }\n\n };\n\n var scroll;\n\n var Offcanvas = {\n\n mixins: [Modal],\n\n args: 'mode',\n\n props: {\n content: String,\n mode: String,\n flip: Boolean,\n overlay: Boolean\n },\n\n data: {\n content: '.uk-offcanvas-content',\n mode: 'slide',\n flip: false,\n overlay: false,\n clsPage: 'uk-offcanvas-page',\n clsContainer: 'uk-offcanvas-container',\n selPanel: '.uk-offcanvas-bar',\n clsFlip: 'uk-offcanvas-flip',\n clsContent: 'uk-offcanvas-content',\n clsContentAnimation: 'uk-offcanvas-content-animation',\n clsSidebarAnimation: 'uk-offcanvas-bar-animation',\n clsMode: 'uk-offcanvas',\n clsOverlay: 'uk-offcanvas-overlay',\n selClose: '.uk-offcanvas-close'\n },\n\n computed: {\n\n content: function(ref) {\n var content = ref.content;\n\n return $(content) || document.body;\n },\n\n clsFlip: function(ref) {\n var flip = ref.flip;\n var clsFlip = ref.clsFlip;\n\n return flip ? clsFlip : '';\n },\n\n clsOverlay: function(ref) {\n var overlay = ref.overlay;\n var clsOverlay = ref.clsOverlay;\n\n return overlay ? clsOverlay : '';\n },\n\n clsMode: function(ref) {\n var mode = ref.mode;\n var clsMode = ref.clsMode;\n\n return (clsMode + \"-\" + mode);\n },\n\n clsSidebarAnimation: function(ref) {\n var mode = ref.mode;\n var clsSidebarAnimation = ref.clsSidebarAnimation;\n\n return mode === 'none' || mode === 'reveal' ? '' : clsSidebarAnimation;\n },\n\n clsContentAnimation: function(ref) {\n var mode = ref.mode;\n var clsContentAnimation = ref.clsContentAnimation;\n\n return mode !== 'push' && mode !== 'reveal' ? '' : clsContentAnimation;\n },\n\n transitionElement: function(ref) {\n var mode = ref.mode;\n\n return mode === 'reveal' ? this.panel.parentNode : this.panel;\n }\n\n },\n\n update: {\n\n write: function() {\n\n if (this.getActive() === this) {\n\n if (this.overlay || this.clsContentAnimation) {\n width(this.content, width(window) - this.scrollbarWidth);\n }\n\n if (this.overlay) {\n height(this.content, height(window));\n if (scroll) {\n this.content.scrollTop = scroll.y;\n }\n }\n\n }\n\n },\n\n events: ['resize']\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return 'a[href^=\"#\"]';\n },\n\n handler: function(ref) {\n var current = ref.current;\n\n if (current.hash && $(current.hash, this.content)) {\n scroll = null;\n this.hide();\n }\n }\n\n },\n\n {\n\n name: 'beforescroll',\n\n filter: function() {\n return this.overlay;\n },\n\n handler: function(e, scroll, target) {\n if (scroll && target && this.isToggled() && $(target, this.content)) {\n once(this.$el, 'hidden', function () { return scroll.scrollTo(target); });\n e.preventDefault();\n }\n }\n\n },\n\n {\n name: 'show',\n\n self: true,\n\n handler: function() {\n\n scroll = scroll || {x: window.pageXOffset, y: window.pageYOffset};\n\n if (this.mode === 'reveal' && !hasClass(this.panel, this.clsMode)) {\n wrapAll(this.panel, '<div>');\n addClass(this.panel.parentNode, this.clsMode);\n }\n\n css(document.documentElement, 'overflowY', (!this.clsContentAnimation || this.flip) && this.scrollbarWidth && this.overlay ? 'scroll' : '');\n addClass(document.body, this.clsContainer, this.clsFlip, this.clsOverlay);\n height(document.body); // force reflow\n addClass(this.content, this.clsContentAnimation);\n addClass(this.panel, this.clsSidebarAnimation, this.mode !== 'reveal' ? this.clsMode : '');\n addClass(this.$el, this.clsOverlay);\n css(this.$el, 'display', 'block');\n height(this.$el); // force reflow\n\n }\n },\n\n {\n name: 'hide',\n\n self: true,\n\n handler: function() {\n removeClass(this.content, this.clsContentAnimation);\n\n var active = this.getActive();\n if (this.mode === 'none' || active && active !== this && active !== this.prev) {\n trigger(this.panel, 'transitionend');\n }\n }\n },\n\n {\n name: 'hidden',\n\n self: true,\n\n handler: function() {\n\n if (this.mode === 'reveal') {\n unwrap(this.panel);\n }\n\n if (!this.overlay) {\n scroll = {x: window.pageXOffset, y: window.pageYOffset};\n } else if (!scroll) {\n var ref = this.content;\n var x = ref.scrollLeft;\n var y = ref.scrollTop;\n scroll = {x: x, y: y};\n }\n\n removeClass(this.panel, this.clsSidebarAnimation, this.clsMode);\n removeClass(this.$el, this.clsOverlay);\n css(this.$el, 'display', '');\n removeClass(document.body, this.clsContainer, this.clsFlip, this.clsOverlay);\n document.body.scrollTop = scroll.y;\n\n css(document.documentElement, 'overflowY', '');\n\n width(this.content, '');\n height(this.content, '');\n\n window.scroll(scroll.x, scroll.y);\n\n scroll = null;\n\n }\n },\n\n {\n name: 'swipeLeft swipeRight',\n\n handler: function(e) {\n\n if (this.isToggled() && isTouch(e) && (e.type === 'swipeLeft' && !this.flip || e.type === 'swipeRight' && this.flip)) {\n this.hide();\n }\n\n }\n }\n\n ]\n\n };\n\n var OverflowAuto = {\n\n mixins: [Class],\n\n computed: {\n\n modal: function(_, $el) {\n return closest($el, '.uk-modal');\n },\n\n panel: function(_, $el) {\n return closest($el, '.uk-modal-dialog');\n }\n\n },\n\n connected: function() {\n css(this.$el, 'minHeight', 150);\n },\n\n update: {\n\n write: function() {\n\n if (!this.panel || !this.modal) {\n return;\n }\n\n var current = css(this.$el, 'maxHeight');\n\n css(css(this.$el, 'maxHeight', 150), 'maxHeight', Math.max(150, 150 + height(this.modal) - this.panel.offsetHeight));\n if (current !== css(this.$el, 'maxHeight')) {\n trigger(this.$el, 'resize');\n }\n },\n\n events: ['load', 'resize']\n\n }\n\n };\n\n var Responsive = {\n\n props: ['width', 'height'],\n\n connected: function() {\n addClass(this.$el, 'uk-responsive-width');\n },\n\n update: {\n\n read: function() {\n return isVisible(this.$el) && this.width && this.height\n ? {width: width(this.$el.parentNode), height: this.height}\n : false;\n },\n\n write: function(dim) {\n height(this.$el, Dimensions.contain({height: this.height, width: this.width}, dim).height);\n },\n\n events: ['load', 'resize']\n\n }\n\n };\n\n var Scroll = {\n\n props: {\n duration: Number,\n offset: Number\n },\n\n data: {\n duration: 1000,\n offset: 0\n },\n\n methods: {\n\n scrollTo: function(el) {\n var this$1 = this;\n\n\n el = el && $(el) || document.body;\n\n var docHeight = height(document);\n var winHeight = height(window);\n\n var target = offset(el).top - this.offset;\n if (target + winHeight > docHeight) {\n target = docHeight - winHeight;\n }\n\n if (!trigger(this.$el, 'beforescroll', [this, el])) {\n return;\n }\n\n var start = Date.now();\n var startY = window.pageYOffset;\n var step = function () {\n\n var currentY = startY + (target - startY) * ease(clamp((Date.now() - start) / this$1.duration));\n\n window.scroll(window.pageXOffset, currentY);\n\n // scroll more if we have not reached our destination\n if (currentY !== target) {\n requestAnimationFrame(step);\n } else {\n trigger(this$1.$el, 'scrolled', [this$1, el]);\n }\n\n };\n\n step();\n\n }\n\n },\n\n events: {\n\n click: function(e) {\n\n if (e.defaultPrevented) {\n return;\n }\n\n e.preventDefault();\n this.scrollTo(escape(this.$el.hash).substr(1));\n }\n\n }\n\n };\n\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n\n var Scrollspy = {\n\n args: 'cls',\n\n props: {\n cls: 'list',\n target: String,\n hidden: Boolean,\n offsetTop: Number,\n offsetLeft: Number,\n repeat: Boolean,\n delay: Number\n },\n\n data: function () { return ({\n cls: [],\n target: false,\n hidden: true,\n offsetTop: 0,\n offsetLeft: 0,\n repeat: false,\n delay: 0,\n inViewClass: 'uk-scrollspy-inview'\n }); },\n\n computed: {\n\n elements: function(ref, $el) {\n var target = ref.target;\n\n return target ? $$(target, $el) : [$el];\n }\n\n },\n\n update: [\n\n {\n\n write: function() {\n if (this.hidden) {\n css(filter(this.elements, (\":not(.\" + (this.inViewClass) + \")\")), 'visibility', 'hidden');\n }\n }\n\n },\n\n {\n\n read: function(els) {\n var this$1 = this;\n\n\n if (!els.delay) {\n return;\n }\n\n this.elements.forEach(function (el, i) {\n\n var elData = els[i];\n\n if (!elData || elData.el !== el) {\n var cls = data(el, 'uk-scrollspy-class');\n elData = {el: el, toggles: cls && cls.split(',') || this$1.cls};\n }\n\n elData.show = isInView(el, this$1.offsetTop, this$1.offsetLeft);\n els[i] = elData;\n\n });\n },\n\n write: function(els) {\n var this$1 = this;\n\n\n // Let child components be applied at least once first\n if (!els.delay) {\n this.$emit();\n return els.delay = true;\n }\n\n var index$$1 = this.elements.length === 1 ? 1 : 0;\n\n this.elements.forEach(function (el, i) {\n\n var elData = els[i];\n var cls = elData.toggles[i] || elData.toggles[0];\n\n if (elData.show && !elData.inview && !elData.timer) {\n\n var show = function () {\n css(el, 'visibility', '');\n addClass(el, this$1.inViewClass);\n toggleClass(el, cls);\n\n trigger(el, 'inview');\n\n this$1.$update(el);\n\n elData.inview = true;\n delete elData.timer;\n };\n\n if (this$1.delay && index$$1) {\n elData.timer = setTimeout(show, this$1.delay * index$$1);\n } else {\n show();\n }\n\n index$$1++;\n\n } else if (!elData.show && elData.inview && this$1.repeat) {\n\n if (elData.timer) {\n clearTimeout(elData.timer);\n delete elData.timer;\n }\n\n css(el, 'visibility', this$1.hidden ? 'hidden' : '');\n removeClass(el, this$1.inViewClass);\n toggleClass(el, cls);\n\n trigger(el, 'outview');\n\n this$1.$update(el);\n\n elData.inview = false;\n\n }\n\n\n });\n\n },\n\n events: ['scroll', 'load', 'resize']\n\n }\n\n ]\n\n };\n\n var ScrollspyNav = {\n\n props: {\n cls: String,\n closest: String,\n scroll: Boolean,\n overflow: Boolean,\n offset: Number\n },\n\n data: {\n cls: 'uk-active',\n closest: false,\n scroll: false,\n overflow: true,\n offset: 0\n },\n\n computed: {\n\n links: function(_, $el) {\n return $$('a[href^=\"#\"]', $el).filter(function (el) { return el.hash; });\n },\n\n elements: function() {\n return this.closest ? closest(this.links, this.closest) : this.links;\n },\n\n targets: function() {\n return $$(this.links.map(function (el) { return el.hash; }).join(','));\n }\n\n },\n\n update: [\n\n {\n\n read: function() {\n if (this.scroll) {\n this.$create('scroll', this.links, {offset: this.offset || 0});\n }\n }\n\n },\n\n {\n\n read: function(data$$1) {\n var this$1 = this;\n\n\n var scroll = window.pageYOffset + this.offset + 1;\n var max = height(document) - height(window) + this.offset;\n\n data$$1.active = false;\n\n this.targets.every(function (el, i) {\n\n var ref = offset(el);\n var top = ref.top;\n var last = i + 1 === this$1.targets.length;\n\n if (!this$1.overflow && (i === 0 && top > scroll || last && top + el.offsetTop < scroll)) {\n return false;\n }\n\n if (!last && offset(this$1.targets[i + 1]).top <= scroll) {\n return true;\n }\n\n if (scroll >= max) {\n for (var j = this$1.targets.length - 1; j > i; j--) {\n if (isInView(this$1.targets[j])) {\n el = this$1.targets[j];\n break;\n }\n }\n }\n\n return !(data$$1.active = $(filter(this$1.links, (\"[href=\\\"#\" + (el.id) + \"\\\"]\"))));\n\n });\n\n },\n\n write: function(ref) {\n var active = ref.active;\n\n\n this.links.forEach(function (el) { return el.blur(); });\n removeClass(this.elements, this.cls);\n\n if (active) {\n trigger(this.$el, 'active', [active, addClass(this.closest ? closest(active, this.closest) : active, this.cls)]);\n }\n\n },\n\n events: ['scroll', 'load', 'resize']\n\n }\n\n ]\n\n };\n\n var Sticky = {\n\n mixins: [Class],\n\n attrs: true,\n\n props: {\n top: null,\n bottom: Boolean,\n offset: Number,\n animation: String,\n clsActive: String,\n clsInactive: String,\n clsFixed: String,\n clsBelow: String,\n selTarget: String,\n widthElement: Boolean,\n showOnUp: Boolean,\n media: 'media',\n targetOffset: Number\n },\n\n data: {\n top: 0,\n bottom: false,\n offset: 0,\n animation: '',\n clsActive: 'uk-active',\n clsInactive: '',\n clsFixed: 'uk-sticky-fixed',\n clsBelow: 'uk-sticky-below',\n selTarget: '',\n widthElement: false,\n showOnUp: false,\n media: false,\n targetOffset: false\n },\n\n computed: {\n\n selTarget: function(ref, $el) {\n var selTarget = ref.selTarget;\n\n return selTarget && $(selTarget, $el) || $el;\n },\n\n widthElement: function(ref, $el) {\n var widthElement = ref.widthElement;\n\n return query(widthElement, $el) || this.placeholder;\n }\n\n },\n\n connected: function() {\n\n this.placeholder = $('+ .uk-sticky-placeholder', this.$el) || $('<div class=\"uk-sticky-placeholder\"></div>');\n\n if (!this.isActive) {\n this.hide();\n }\n },\n\n disconnected: function() {\n\n if (this.isActive) {\n this.isActive = false;\n this.hide();\n removeClass(this.selTarget, this.clsInactive);\n }\n\n remove(this.placeholder);\n this.placeholder = null;\n this.widthElement = null;\n },\n\n events: [\n\n {\n name: 'active',\n\n self: true,\n\n handler: function() {\n replaceClass(this.selTarget, this.clsInactive, this.clsActive);\n }\n\n },\n\n {\n name: 'inactive',\n\n self: true,\n\n handler: function() {\n replaceClass(this.selTarget, this.clsActive, this.clsInactive);\n }\n\n },\n\n {\n\n name: 'load hashchange popstate',\n\n el: window,\n\n handler: function() {\n var this$1 = this;\n\n\n if (!(this.targetOffset !== false && location.hash && window.pageYOffset > 0)) {\n return;\n }\n\n var target = $(location.hash);\n\n if (target) {\n fastdom.read(function () {\n\n var ref = offset(target);\n var top = ref.top;\n var elTop = offset(this$1.$el).top;\n var elHeight = this$1.$el.offsetHeight;\n\n if (this$1.isActive && elTop + elHeight >= top && elTop <= top + target.offsetHeight) {\n window.scroll(0, top - elHeight - (isNumeric(this$1.targetOffset) ? this$1.targetOffset : 0) - this$1.offset);\n }\n\n });\n }\n\n }\n\n }\n\n ],\n\n update: [\n\n {\n\n write: function() {\n\n var ref = this;\n var placeholder = ref.placeholder;\n var offsetHeight = ref.$el.offsetHeight;\n\n css(placeholder, assign(\n {height: css(this.$el, 'position') !== 'absolute' ? offsetHeight : ''},\n css(this.$el, ['marginTop', 'marginBottom', 'marginLeft', 'marginRight'])\n ));\n\n if (!within(placeholder, document)) {\n after(this.$el, placeholder);\n attr(placeholder, 'hidden', '');\n }\n\n this.topOffset = offset(this.isActive ? placeholder : this.$el).top;\n this.bottomOffset = this.topOffset + offsetHeight;\n\n var bottom = parseProp('bottom', this);\n\n this.top = Math.max(toFloat(parseProp('top', this)), this.topOffset) - this.offset;\n this.bottom = bottom && bottom - offsetHeight;\n this.inactive = this.media && !window.matchMedia(this.media).matches;\n\n },\n\n events: ['load', 'resize']\n\n },\n\n {\n\n read: function(_, ref) {\n var scrollY = ref.scrollY; if ( scrollY === void 0 ) scrollY = window.pageYOffset;\n\n\n this.width = (isVisible(this.widthElement) ? this.widthElement : this.$el).offsetWidth;\n\n return {\n scroll: this.scroll = scrollY,\n visible: isVisible(this.$el)\n };\n },\n\n write: function(ref, ref$1) {\n var this$1 = this;\n var visible = ref.visible;\n var scroll = ref.scroll;\n if ( ref$1 === void 0 ) ref$1 = {};\n var dir = ref$1.dir;\n\n\n if (scroll < 0 || !visible || this.disabled || this.showOnUp && !dir) {\n return;\n }\n\n if (this.inactive\n || scroll < this.top\n || this.showOnUp && (scroll <= this.top || dir === 'down' || dir === 'up' && !this.isActive && scroll <= this.bottomOffset)\n ) {\n\n if (!this.isActive) {\n return;\n }\n\n this.isActive = false;\n\n if (this.animation && scroll > this.topOffset) {\n Animation.cancel(this.$el);\n Animation.out(this.$el, this.animation).then(function () { return this$1.hide(); }, noop);\n } else {\n this.hide();\n }\n\n } else if (this.isActive) {\n\n this.update();\n\n } else if (this.animation) {\n\n Animation.cancel(this.$el);\n this.show();\n Animation.in(this.$el, this.animation).catch(noop);\n\n } else {\n this.show();\n }\n\n },\n\n events: ['load', 'resize', 'scroll']\n\n } ],\n\n methods: {\n\n show: function() {\n\n this.isActive = true;\n this.update();\n attr(this.placeholder, 'hidden', null);\n\n },\n\n hide: function() {\n\n if (!this.isActive || hasClass(this.selTarget, this.clsActive)) {\n trigger(this.$el, 'inactive');\n }\n\n removeClass(this.$el, this.clsFixed, this.clsBelow);\n css(this.$el, {position: '', top: '', width: ''});\n attr(this.placeholder, 'hidden', '');\n\n },\n\n update: function() {\n\n var active = this.top !== 0 || this.scroll > this.top;\n var top = Math.max(0, this.offset);\n\n if (this.bottom && this.scroll > this.bottom - this.offset) {\n top = this.bottom - this.scroll;\n }\n\n css(this.$el, {\n position: 'fixed',\n top: (top + \"px\"),\n width: this.width\n });\n\n if (hasClass(this.selTarget, this.clsActive)) {\n\n if (!active) {\n trigger(this.$el, 'inactive');\n }\n\n } else if (active) {\n trigger(this.$el, 'active');\n }\n\n toggleClass(this.$el, this.clsBelow, this.scroll > this.bottomOffset);\n addClass(this.$el, this.clsFixed);\n\n }\n\n }\n\n };\n\n function parseProp(prop, ref) {\n var $props = ref.$props;\n var $el = ref.$el;\n var propOffset = ref[(prop + \"Offset\")];\n\n\n var value = $props[prop];\n\n if (!value) {\n return;\n }\n\n if (isNumeric(value)) {\n\n return propOffset + toFloat(value);\n\n } else if (isString(value) && value.match(/^-?\\d+vh$/)) {\n\n return height(window) * toFloat(value) / 100;\n\n } else {\n\n var el = value === true ? $el.parentNode : query(value, $el);\n\n if (el) {\n return offset(el).top + el.offsetHeight;\n }\n\n }\n }\n\n var Switcher = {\n\n mixins: [Togglable],\n\n args: 'connect',\n\n props: {\n connect: String,\n toggle: String,\n active: Number,\n swiping: Boolean\n },\n\n data: {\n connect: '~.uk-switcher',\n toggle: '> *',\n active: 0,\n swiping: true,\n cls: 'uk-active',\n clsContainer: 'uk-switcher',\n attrItem: 'uk-switcher-item',\n queued: true\n },\n\n computed: {\n\n connects: function(ref, $el) {\n var connect = ref.connect;\n\n return queryAll(connect, $el);\n },\n\n toggles: function(ref, $el) {\n var toggle = ref.toggle;\n\n return $$(toggle, $el);\n }\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return ((this.toggle) + \":not(.uk-disabled)\");\n },\n\n handler: function(e) {\n e.preventDefault();\n this.show(e.current);\n }\n\n },\n\n {\n name: 'click',\n\n el: function() {\n return this.connects;\n },\n\n delegate: function() {\n return (\"[\" + (this.attrItem) + \"],[data-\" + (this.attrItem) + \"]\");\n },\n\n handler: function(e) {\n e.preventDefault();\n this.show(data(e.current, this.attrItem));\n }\n },\n\n {\n name: 'swipeRight swipeLeft',\n\n filter: function() {\n return this.swiping;\n },\n\n el: function() {\n return this.connects;\n },\n\n handler: function(e) {\n if (!isTouch(e)) {\n return;\n }\n\n e.preventDefault();\n if (!window.getSelection().toString()) {\n this.show(e.type === 'swipeLeft' ? 'next' : 'previous');\n }\n }\n }\n\n ],\n\n update: function() {\n var this$1 = this;\n\n\n this.connects.forEach(function (list) { return this$1.updateAria(list.children); });\n this.show(filter(this.toggles, (\".\" + (this.cls)))[0] || this.toggles[this.active] || this.toggles[0]);\n\n },\n\n methods: {\n\n show: function(item) {\n var this$1 = this;\n\n\n var ref = this.toggles;\n var length = ref.length;\n var prev = !!this.connects.length && index(filter(this.connects[0].children, (\".\" + (this.cls)))[0]);\n var hasPrev = prev >= 0;\n var dir = item === 'previous' ? -1 : 1;\n\n var toggle, next = getIndex(item, this.toggles, prev);\n\n for (var i = 0; i < length; i++, next = (next + dir + length) % length) {\n if (!matches(this$1.toggles[next], '.uk-disabled, [disabled]')) {\n toggle = this$1.toggles[next];\n break;\n }\n }\n\n if (!toggle || prev >= 0 && hasClass(toggle, this.cls) || prev === next) {\n return;\n }\n\n removeClass(this.toggles, this.cls);\n attr(this.toggles, 'aria-expanded', false);\n addClass(toggle, this.cls);\n attr(toggle, 'aria-expanded', true);\n\n this.connects.forEach(function (list) {\n if (!hasPrev) {\n this$1.toggleNow(list.children[next]);\n } else {\n this$1.toggleElement([list.children[prev], list.children[next]]);\n }\n });\n\n }\n\n }\n\n };\n\n var Tab = {\n\n mixins: [Class],\n\n extends: Switcher,\n\n props: {\n media: 'media'\n },\n\n data: {\n media: 960,\n attrItem: 'uk-tab-item'\n },\n\n connected: function() {\n\n var cls = hasClass(this.$el, 'uk-tab-left')\n ? 'uk-tab-left'\n : hasClass(this.$el, 'uk-tab-right')\n ? 'uk-tab-right'\n : false;\n\n if (cls) {\n this.$create('toggle', this.$el, {cls: cls, mode: 'media', media: this.media});\n }\n }\n\n };\n\n var Toggle = {\n\n mixins: [Togglable],\n\n args: 'target',\n\n props: {\n href: String,\n target: null,\n mode: 'list',\n media: 'media'\n },\n\n data: {\n href: false,\n target: false,\n mode: 'click',\n queued: true,\n media: false\n },\n\n computed: {\n\n target: function(ref, $el) {\n var href = ref.href;\n var target = ref.target;\n\n target = queryAll(target || href, $el);\n return target.length && target || [$el];\n }\n\n },\n\n events: [\n\n {\n\n name: (pointerEnter + \" \" + pointerLeave),\n\n filter: function() {\n return includes(this.mode, 'hover');\n },\n\n handler: function(e) {\n if (!isTouch(e)) {\n this.toggle((\"toggle\" + (e.type === pointerEnter ? 'show' : 'hide')));\n }\n }\n\n },\n\n {\n\n name: 'click',\n\n filter: function() {\n return includes(this.mode, 'click') || hasTouch && includes(this.mode, 'hover');\n },\n\n handler: function(e) {\n\n if (!isTouch(e) && !includes(this.mode, 'click')) {\n return;\n }\n\n // TODO better isToggled handling\n var link;\n if (closest(e.target, 'a[href=\"#\"], button')\n || (link = closest(e.target, 'a[href]')) && (\n this.cls\n || !isVisible(this.target)\n || link.hash && matches(this.target, link.hash)\n )\n ) {\n once(document, 'click', function (e) { return e.preventDefault(); });\n }\n\n this.toggle();\n }\n\n }\n ],\n\n update: {\n\n write: function() {\n\n if (!includes(this.mode, 'media') || !this.media) {\n return;\n }\n\n var toggled = this.isToggled(this.target);\n if (window.matchMedia(this.media).matches ? !toggled : toggled) {\n this.toggle();\n }\n\n },\n\n events: ['load', 'resize']\n\n },\n\n methods: {\n\n toggle: function(type) {\n if (trigger(this.target, type || 'toggle', [this])) {\n this.toggleElement(this.target);\n }\n }\n\n }\n\n };\n\n function core (UIkit) {\n\n // core components\n UIkit.component('accordion', Accordion);\n UIkit.component('alert', Alert);\n UIkit.component('cover', Cover);\n UIkit.component('drop', Drop);\n UIkit.component('dropdown', Dropdown);\n UIkit.component('formCustom', FormCustom);\n UIkit.component('gif', Gif);\n UIkit.component('grid', Grid);\n UIkit.component('heightMatch', HeightMatch);\n UIkit.component('heightViewport', HeightViewport);\n UIkit.component('icon', Icon);\n UIkit.component('img', Img);\n UIkit.component('leader', Leader);\n UIkit.component('margin', Margin);\n UIkit.component('modal', Modal$1);\n UIkit.component('nav', Nav);\n UIkit.component('navbar', Navbar);\n UIkit.component('offcanvas', Offcanvas);\n UIkit.component('overflowAuto', OverflowAuto);\n UIkit.component('responsive', Responsive);\n UIkit.component('scroll', Scroll);\n UIkit.component('scrollspy', Scrollspy);\n UIkit.component('scrollspyNav', ScrollspyNav);\n UIkit.component('sticky', Sticky);\n UIkit.component('svg', SVG);\n UIkit.component('switcher', Switcher);\n UIkit.component('tab', Tab);\n UIkit.component('toggle', Toggle);\n UIkit.component('video', Video);\n\n // Icon components\n UIkit.component('close', Close);\n UIkit.component('marker', IconComponent);\n UIkit.component('navbarToggleIcon', IconComponent);\n UIkit.component('overlayIcon', IconComponent);\n UIkit.component('paginationNext', IconComponent);\n UIkit.component('paginationPrevious', IconComponent);\n UIkit.component('searchIcon', Search);\n UIkit.component('slidenavNext', Slidenav);\n UIkit.component('slidenavPrevious', Slidenav);\n UIkit.component('spinner', Spinner);\n UIkit.component('totop', IconComponent);\n\n // core functionality\n UIkit.use(Core);\n\n }\n\n UIkit.version = '3.0.0-rc.5';\n\n core(UIkit);\n\n var Countdown = {\n\n mixins: [Class],\n\n attrs: true,\n\n props: {\n date: String,\n clsWrapper: String\n },\n\n data: {\n date: '',\n clsWrapper: '.uk-countdown-%unit%'\n },\n\n computed: {\n\n date: function(ref) {\n var date = ref.date;\n\n return Date.parse(date);\n },\n\n days: function(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n\n return $(clsWrapper.replace('%unit%', 'days'), $el);\n },\n\n hours: function(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n\n return $(clsWrapper.replace('%unit%', 'hours'), $el);\n },\n\n minutes: function(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n\n return $(clsWrapper.replace('%unit%', 'minutes'), $el);\n },\n\n seconds: function(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n\n return $(clsWrapper.replace('%unit%', 'seconds'), $el);\n },\n\n units: function() {\n var this$1 = this;\n\n return ['days', 'hours', 'minutes', 'seconds'].filter(function (unit) { return this$1[unit]; });\n }\n\n },\n\n connected: function() {\n this.start();\n },\n\n disconnected: function() {\n var this$1 = this;\n\n this.stop();\n this.units.forEach(function (unit) { return empty(this$1[unit]); });\n },\n\n events: [\n\n {\n\n name: 'visibilitychange',\n\n el: document,\n\n handler: function() {\n if (document.hidden) {\n this.stop();\n } else {\n this.start();\n }\n }\n\n }\n\n ],\n\n update: {\n\n write: function() {\n var this$1 = this;\n\n\n var timespan = getTimeSpan(this.date);\n\n if (timespan.total <= 0) {\n\n this.stop();\n\n timespan.days\n = timespan.hours\n = timespan.minutes\n = timespan.seconds\n = 0;\n }\n\n this.units.forEach(function (unit) {\n\n var digits = String(Math.floor(timespan[unit]));\n\n digits = digits.length < 2 ? (\"0\" + digits) : digits;\n\n var el = this$1[unit];\n if (el.textContent !== digits) {\n digits = digits.split('');\n\n if (digits.length !== el.children.length) {\n html(el, digits.map(function () { return '<span></span>'; }).join(''));\n }\n\n digits.forEach(function (digit, i) { return el.children[i].textContent = digit; });\n }\n\n });\n\n }\n\n },\n\n methods: {\n\n start: function() {\n var this$1 = this;\n\n\n this.stop();\n\n if (this.date && this.units.length) {\n this.$emit();\n this.timer = setInterval(function () { return this$1.$emit(); }, 1000);\n }\n\n },\n\n stop: function() {\n\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n\n }\n\n }\n\n };\n\n function getTimeSpan(date) {\n\n var total = date - Date.now();\n\n return {\n total: total,\n seconds: total / 1000 % 60,\n minutes: total / 1000 / 60 % 60,\n hours: total / 1000 / 60 / 60 % 24,\n days: total / 1000 / 60 / 60 / 24\n };\n }\n\n var targetClass = 'uk-animation-target';\n\n var Animate = {\n\n props: {\n animation: Number\n },\n\n data: {\n animation: 150\n },\n\n computed: {\n\n target: function() {\n return this.$el;\n }\n\n },\n\n methods: {\n\n animate: function(action) {\n var this$1 = this;\n\n\n addStyle();\n\n var children = toNodes(this.target.children);\n var propsFrom = children.map(function (el) { return getProps(el, true); });\n\n var oldHeight = height(this.target);\n var oldScrollY = window.pageYOffset;\n\n action();\n\n Transition.cancel(this.target);\n children.forEach(Transition.cancel);\n\n reset(this.target);\n this.$update(this.target);\n fastdom.flush();\n\n var newHeight = height(this.target);\n\n children = children.concat(toNodes(this.target.children).filter(function (el) { return !includes(children, el); }));\n\n var propsTo = children.map(function (el, i) { return el.parentNode && i in propsFrom\n ? propsFrom[i]\n ? isVisible(el)\n ? getPositionWithMargin(el)\n : {opacity: 0}\n : {opacity: isVisible(el) ? 1 : 0}\n : false; }\n );\n\n propsFrom = propsTo.map(function (props, i) {\n var from = children[i].parentNode === this$1.target\n ? propsFrom[i] || getProps(children[i])\n : false;\n\n if (from) {\n if (!props) {\n delete from.opacity;\n } else if (!('opacity' in props)) {\n var opacity = from.opacity;\n\n if (opacity % 1) {\n props.opacity = 1;\n } else {\n delete from.opacity;\n }\n }\n }\n\n return from;\n });\n\n addClass(this.target, targetClass);\n children.forEach(function (el, i) { return propsFrom[i] && css(el, propsFrom[i]); });\n css(this.target, 'minHeight', oldHeight);\n window.scroll(window.pageXOffset, oldScrollY);\n\n return Promise$1.all(children.map(function (el, i) { return propsFrom[i] && propsTo[i]\n ? Transition.start(el, propsTo[i], this$1.animation, 'ease')\n : Promise$1.resolve(); }\n ).concat(Transition.start(this.target, {minHeight: newHeight}, this.animation, 'ease'))).then(function () {\n children.forEach(function (el, i) { return css(el, {display: propsTo[i].opacity === 0 ? 'none' : '', zIndex: ''}); });\n reset(this$1.target);\n this$1.$update(this$1.target);\n }, noop);\n\n }\n }\n };\n\n function getProps(el, opacity) {\n\n var zIndex = css(el, 'zIndex');\n\n return isVisible(el)\n ? assign({\n display: '',\n opacity: opacity ? css(el, 'opacity') : '0',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: zIndex === 'auto' ? index(el) : zIndex\n }, getPositionWithMargin(el))\n : false;\n }\n\n function reset(el) {\n css(el.children, {\n height: '',\n left: '',\n opacity: '',\n pointerEvents: '',\n position: '',\n top: '',\n width: ''\n });\n removeClass(el, targetClass);\n css(el, 'minHeight', '');\n }\n\n function getPositionWithMargin(el) {\n var ref = el.getBoundingClientRect();\n var height$$1 = ref.height;\n var width$$1 = ref.width;\n var ref$1 = position(el);\n var top = ref$1.top;\n var left = ref$1.left;\n top += toFloat(css(el, 'marginTop'));\n\n return {top: top, left: left, height: height$$1, width: width$$1};\n }\n\n var style$1;\n\n function addStyle() {\n if (!style$1) {\n style$1 = append(document.head, '<style>').sheet;\n style$1.insertRule(\n (\".\" + targetClass + \" > * {\\n margin-top: 0 !important;\\n transform: none !important;\\n }\")\n );\n }\n }\n\n var Filter = {\n\n mixins: [Animate],\n\n args: 'target',\n\n props: {\n target: Boolean,\n selActive: Boolean\n },\n\n data: {\n target: null,\n selActive: false,\n attrItem: 'uk-filter-control',\n cls: 'uk-active',\n animation: 250\n },\n\n computed: {\n\n toggles: function(ref, $el) {\n var attrItem = ref.attrItem;\n\n return $$((\"[\" + (this.attrItem) + \"],[data-\" + (this.attrItem) + \"]\"), $el);\n },\n\n target: function(ref, $el) {\n var target = ref.target;\n\n return $(target, $el);\n }\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return (\"[\" + (this.attrItem) + \"],[data-\" + (this.attrItem) + \"]\");\n },\n\n handler: function(e) {\n\n e.preventDefault();\n this.apply(e.current);\n\n }\n\n }\n\n ],\n\n connected: function() {\n var this$1 = this;\n\n\n if (this.selActive === false) {\n return;\n }\n\n var actives = $$(this.selActive, this.$el);\n this.toggles.forEach(function (el) { return toggleClass(el, this$1.cls, includes(actives, el)); });\n },\n\n update: function(data$$1) {\n\n var toggles = data$$1.toggles;\n var children = data$$1.children;\n if (isEqualList(toggles, this.toggles, false) && isEqualList(children, this.target.children, false)) {\n return;\n }\n\n data$$1.toggles = this.toggles;\n data$$1.children = this.target.children;\n\n this.setState(this.getState(), false);\n\n },\n\n methods: {\n\n apply: function(el) {\n this.setState(mergeState(el, this.attrItem, this.getState()));\n },\n\n getState: function() {\n var this$1 = this;\n\n return this.toggles\n .filter(function (item) { return hasClass(item, this$1.cls); })\n .reduce(function (state, el) { return mergeState(el, this$1.attrItem, state); }, {filter: {'': ''}, sort: []});\n },\n\n setState: function(state, animate$$1) {\n var this$1 = this;\n if ( animate$$1 === void 0 ) animate$$1 = true;\n\n\n state = assign({filter: {'': ''}, sort: []}, state);\n\n trigger(this.$el, 'beforeFilter', [this, state]);\n\n var children = toNodes(this.target.children);\n\n this.toggles.forEach(function (el) { return toggleClass(el, this$1.cls, matchFilter(el, this$1.attrItem, state)); });\n\n var apply$$1 = function () {\n\n var selector = getSelector(state);\n\n children.forEach(function (el) { return css(el, 'display', selector && !matches(el, selector) ? 'none' : ''); });\n\n var ref = state.sort;\n var sort = ref[0];\n var order = ref[1];\n\n if (sort) {\n var sorted = sortItems(children, sort, order);\n if (!isEqualList(sorted, children)) {\n sorted.forEach(function (el) { return append(this$1.target, el); });\n }\n }\n\n };\n\n if (animate$$1) {\n this.animate(apply$$1).then(function () { return trigger(this$1.$el, 'afterFilter', [this$1]); });\n } else {\n apply$$1();\n trigger(this.$el, 'afterFilter', [this]);\n }\n\n }\n\n }\n\n };\n\n function getFilter(el, attr$$1) {\n return parseOptions(data(el, attr$$1), ['filter']);\n }\n\n function mergeState(el, attr$$1, state) {\n\n toNodes(el).forEach(function (el) {\n var filterBy = getFilter(el, attr$$1);\n var filter$$1 = filterBy.filter;\n var group = filterBy.group;\n var sort = filterBy.sort;\n var order = filterBy.order; if ( order === void 0 ) order = 'asc';\n\n if (filter$$1 || isUndefined(sort)) {\n\n if (group) {\n delete state.filter[''];\n state.filter[group] = filter$$1;\n } else {\n state.filter = {'': filter$$1};\n }\n\n }\n\n if (!isUndefined(sort)) {\n state.sort = [sort, order];\n }\n });\n\n return state;\n }\n\n function matchFilter(el, attr$$1, ref) {\n var stateFilter = ref.filter;\n var ref_sort = ref.sort;\n var stateSort = ref_sort[0];\n var stateOrder = ref_sort[1];\n\n var ref$1 = getFilter(el, attr$$1);\n var filter$$1 = ref$1.filter;\n var group = ref$1.group; if ( group === void 0 ) group = '';\n var sort = ref$1.sort;\n var order = ref$1.order; if ( order === void 0 ) order = 'asc';\n return Boolean(\n (filter$$1 || isUndefined(sort)) && group in stateFilter && (filter$$1 === stateFilter[group] || isUndefined(filter$$1) && !stateFilter[group])\n || stateSort && sort && stateSort === sort && stateOrder === order\n );\n }\n\n function isEqualList(listA, listB, strict) {\n if ( strict === void 0 ) strict = true;\n\n\n listA = toNodes(listA);\n listB = toNodes(listB);\n\n return listA.length === listB.length\n && listA.every(function (el, i) { return strict ? el === listB[i] : ~listB.indexOf(el); });\n }\n\n function getSelector(ref) {\n var filter$$1 = ref.filter;\n\n var selector = '';\n each(filter$$1, function (value) { return selector += value || ''; });\n return selector;\n }\n\n function sortItems(nodes, sort, order) {\n return toNodes(nodes).sort(function (a, b) { return data(a, sort).localeCompare(data(b, sort)) * (order === 'asc' || -1); });\n }\n\n var Animations = {\n\n slide: {\n\n show: function(dir) {\n return [\n {transform: translate(dir * -100)},\n {transform: translate()}\n ];\n },\n\n percent: function(current) {\n return translated(current);\n },\n\n translate: function(percent, dir) {\n return [\n {transform: translate(dir * -100 * percent)},\n {transform: translate(dir * 100 * (1 - percent))}\n ];\n }\n\n }\n\n };\n\n function translated(el) {\n return Math.abs(css(el, 'transform').split(',')[4] / el.offsetWidth) || 0;\n }\n\n function translate(value, unit) {\n if ( value === void 0 ) value = 0;\n if ( unit === void 0 ) unit = '%';\n\n return (\"translateX(\" + value + (value ? unit : '') + \")\"); // currently not translate3d to support IE, translate3d within translate3d does not work while transitioning\n }\n\n function scale3d(value) {\n return (\"scale3d(\" + value + \", \" + value + \", 1)\");\n }\n\n var Animations$1 = assign({}, Animations, {\n\n fade: {\n\n show: function() {\n return [\n {opacity: 0},\n {opacity: 1}\n ];\n },\n\n percent: function(current) {\n return 1 - css(current, 'opacity');\n },\n\n translate: function(percent) {\n return [\n {opacity: 1 - percent},\n {opacity: percent}\n ];\n }\n\n },\n\n scale: {\n\n show: function() {\n return [\n {opacity: 0, transform: scale3d(1 - .2)},\n {opacity: 1, transform: scale3d(1)}\n ];\n },\n\n percent: function(current) {\n return 1 - css(current, 'opacity');\n },\n\n translate: function(percent) {\n return [\n {opacity: 1 - percent, transform: scale3d(1 - .2 * percent)},\n {opacity: percent, transform: scale3d(1 - .2 + .2 * percent)}\n ];\n }\n\n }\n\n });\n\n function Transitioner(prev, next, dir, ref) {\n var animation = ref.animation;\n var easing = ref.easing;\n\n\n var percent = animation.percent;\n var translate = animation.translate;\n var show = animation.show; if ( show === void 0 ) show = noop;\n var props = show(dir);\n var deferred = new Deferred();\n\n return {\n\n dir: dir,\n\n show: function(duration, percent, linear) {\n var this$1 = this;\n if ( percent === void 0 ) percent = 0;\n\n\n var timing = linear ? 'linear' : easing;\n duration -= Math.round(duration * clamp(percent, -1, 1));\n\n this.translate(percent);\n\n triggerUpdate(next, 'itemin', {percent: percent, duration: duration, timing: timing, dir: dir});\n triggerUpdate(prev, 'itemout', {percent: 1 - percent, duration: duration, timing: timing, dir: dir});\n\n Promise$1.all([\n Transition.start(next, props[1], duration, timing),\n Transition.start(prev, props[0], duration, timing)\n ]).then(function () {\n this$1.reset();\n deferred.resolve();\n }, noop);\n\n return deferred.promise;\n },\n\n stop: function() {\n return Transition.stop([next, prev]);\n },\n\n cancel: function() {\n Transition.cancel([next, prev]);\n },\n\n reset: function() {\n for (var prop in props[0]) {\n css([next, prev], prop, '');\n }\n },\n\n forward: function(duration, percent) {\n if ( percent === void 0 ) percent = this.percent();\n\n Transition.cancel([next, prev]);\n return this.show(duration, percent, true);\n\n },\n\n translate: function(percent) {\n\n this.reset();\n\n var props = translate(percent, dir);\n css(next, props[1]);\n css(prev, props[0]);\n triggerUpdate(next, 'itemtranslatein', {percent: percent, dir: dir});\n triggerUpdate(prev, 'itemtranslateout', {percent: 1 - percent, dir: dir});\n\n },\n\n percent: function() {\n return percent(prev || next, next, dir);\n },\n\n getDistance: function() {\n return prev.offsetWidth;\n }\n\n };\n\n }\n\n function triggerUpdate(el, type, data$$1) {\n trigger(el, createEvent(type, false, false, data$$1));\n }\n\n var SliderAutoplay = {\n\n props: {\n autoplay: Boolean,\n autoplayInterval: Number,\n pauseOnHover: Boolean\n },\n\n data: {\n autoplay: false,\n autoplayInterval: 7000,\n pauseOnHover: true\n },\n\n connected: function() {\n this.startAutoplay();\n },\n\n disconnected: function() {\n this.stopAutoplay();\n },\n\n events: [\n\n {\n\n name: 'visibilitychange',\n\n el: document,\n\n handler: function() {\n if (document.hidden) {\n this.stopAutoplay();\n } else {\n this.startAutoplay();\n }\n }\n\n },\n\n {\n\n name: pointerDown,\n handler: 'stopAutoplay'\n\n },\n\n {\n\n name: 'mouseenter',\n\n filter: function() {\n return this.autoplay;\n },\n\n handler: function() {\n this.isHovering = true;\n }\n\n },\n\n {\n\n name: 'mouseleave',\n\n filter: function() {\n return this.autoplay;\n },\n\n handler: function() {\n this.isHovering = false;\n }\n\n }\n\n ],\n\n methods: {\n\n startAutoplay: function() {\n var this$1 = this;\n\n\n this.stopAutoplay();\n\n if (this.autoplay) {\n this.interval = setInterval(\n function () { return !(this$1.isHovering && this$1.pauseOnHover) && !this$1.stack.length && this$1.show('next'); },\n this.autoplayInterval\n );\n }\n\n },\n\n stopAutoplay: function() {\n if (this.interval) {\n clearInterval(this.interval);\n }\n }\n\n }\n\n };\n\n var SliderDrag = {\n\n data: {\n threshold: 10,\n preventCatch: false\n },\n\n init: function() {\n var this$1 = this;\n\n\n ['start', 'move', 'end'].forEach(function (key) {\n\n var fn = this$1[key];\n this$1[key] = function (e) {\n\n var pos = getPos$1(e).x * (isRtl ? -1 : 1);\n\n this$1.prevPos = pos !== this$1.pos ? this$1.pos : this$1.prevPos;\n this$1.pos = pos;\n\n fn(e);\n };\n\n });\n\n },\n\n events: [\n\n {\n\n name: pointerDown,\n\n delegate: function() {\n return this.slidesSelector;\n },\n\n handler: function(e) {\n\n if (!isTouch(e) && hasTextNodesOnly(e.target)\n || e.button > 0\n || this.length < 2\n || this.preventCatch\n ) {\n return;\n }\n\n this.start(e);\n }\n\n },\n\n {\n name: 'dragstart',\n\n handler: function(e) {\n e.preventDefault();\n }\n }\n\n ],\n\n methods: {\n\n start: function() {\n\n this.drag = this.pos;\n\n if (this._transitioner) {\n\n this.percent = this._transitioner.percent();\n this.drag += this._transitioner.getDistance() * this.percent * this.dir;\n\n this._transitioner.translate(this.percent);\n this._transitioner.cancel();\n\n this.dragging = true;\n\n this.stack = [];\n\n } else {\n this.prevIndex = this.index;\n }\n\n this.unbindMove = on(document, pointerMove, this.move, {capture: true, passive: false});\n on(window, 'scroll', this.unbindMove);\n on(document, pointerUp, this.end, true);\n\n },\n\n move: function(e) {\n var this$1 = this;\n\n\n var distance = this.pos - this.drag;\n\n if (distance === 0 || this.prevPos === this.pos || !this.dragging && Math.abs(distance) < this.threshold) {\n return;\n }\n\n e.cancelable && e.preventDefault();\n\n this.dragging = true;\n this.dir = (distance < 0 ? 1 : -1);\n\n var ref = this;\n var slides = ref.slides;\n var ref$1 = this;\n var prevIndex = ref$1.prevIndex;\n var dis = Math.abs(distance);\n var nextIndex = this.getIndex(prevIndex + this.dir, prevIndex);\n var width$$1 = this._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth;\n\n while (nextIndex !== prevIndex && dis > width$$1) {\n\n this$1.drag -= width$$1 * this$1.dir;\n\n prevIndex = nextIndex;\n dis -= width$$1;\n nextIndex = this$1.getIndex(prevIndex + this$1.dir, prevIndex);\n width$$1 = this$1._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth;\n\n }\n\n this.percent = dis / width$$1;\n\n var prev = slides[prevIndex];\n var next = slides[nextIndex];\n var changed = this.index !== nextIndex;\n var edge = prevIndex === nextIndex;\n\n var itemShown;\n\n [this.index, this.prevIndex].filter(function (i) { return !includes([nextIndex, prevIndex], i); }).forEach(function (i) {\n trigger(slides[i], 'itemhidden', [this$1]);\n\n if (edge) {\n itemShown = true;\n this$1.prevIndex = prevIndex;\n }\n\n });\n\n if (this.index === prevIndex && this.prevIndex !== prevIndex || itemShown) {\n trigger(slides[this.index], 'itemshown', [this]);\n }\n\n if (changed) {\n this.prevIndex = prevIndex;\n this.index = nextIndex;\n\n !edge && trigger(prev, 'beforeitemhide', [this]);\n trigger(next, 'beforeitemshow', [this]);\n }\n\n this._transitioner = this._translate(Math.abs(this.percent), prev, !edge && next);\n\n if (changed) {\n !edge && trigger(prev, 'itemhide', [this]);\n trigger(next, 'itemshow', [this]);\n }\n\n },\n\n end: function() {\n\n off(window, 'scroll', this.unbindMove);\n this.unbindMove();\n off(document, pointerUp, this.end, true);\n\n if (this.dragging) {\n\n this.dragging = null;\n\n if (this.index === this.prevIndex) {\n this.percent = 1 - this.percent;\n this.dir *= -1;\n this._show(false, this.index, true);\n this._transitioner = null;\n } else {\n\n var dirChange = (isRtl ? this.dir * (isRtl ? 1 : -1) : this.dir) < 0 === this.prevPos > this.pos;\n this.index = dirChange ? this.index : this.prevIndex;\n\n if (dirChange) {\n this.percent = 1 - this.percent;\n }\n\n this.show(this.dir > 0 && !dirChange || this.dir < 0 && dirChange ? 'next' : 'previous', true);\n }\n\n preventClick();\n\n }\n\n this.drag\n = this.percent\n = null;\n\n }\n\n }\n\n };\n\n function hasTextNodesOnly(el) {\n return !el.children.length && el.childNodes.length;\n }\n\n var SliderNav = {\n\n data: {\n selNav: false\n },\n\n computed: {\n\n nav: function(ref, $el) {\n var selNav = ref.selNav;\n\n return $(selNav, $el);\n },\n\n navItemSelector: function(ref) {\n var attrItem = ref.attrItem;\n\n return (\"[\" + attrItem + \"],[data-\" + attrItem + \"]\");\n },\n\n navItems: function(_, $el) {\n return $$(this.navItemSelector, $el);\n }\n\n },\n\n update: [\n\n {\n\n write: function() {\n var this$1 = this;\n\n\n if (this.nav && this.length !== this.nav.children.length) {\n html(this.nav, this.slides.map(function (_, i) { return (\"<li \" + (this$1.attrItem) + \"=\\\"\" + i + \"\\\"><a href=\\\"#\\\"></a></li>\"); }).join(''));\n }\n\n toggleClass($$(this.navItemSelector, this.$el).concat(this.nav), 'uk-hidden', !this.maxIndex);\n\n this.updateNav();\n\n },\n\n events: ['load', 'resize']\n\n }\n\n ],\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return this.navItemSelector;\n },\n\n handler: function(e) {\n e.preventDefault();\n e.current.blur();\n this.show(data(e.current, this.attrItem));\n }\n\n },\n\n {\n\n name: 'itemshow',\n handler: 'updateNav'\n\n }\n\n ],\n\n methods: {\n\n updateNav: function() {\n var this$1 = this;\n\n\n var i = this.getValidIndex();\n this.navItems.forEach(function (el) {\n\n var cmd = data(el, this$1.attrItem);\n\n toggleClass(el, this$1.clsActive, toNumber(cmd) === i);\n toggleClass(el, 'uk-invisible', this$1.finite && (cmd === 'previous' && i === 0 || cmd === 'next' && i >= this$1.maxIndex));\n });\n\n }\n\n }\n\n };\n\n var Slider = {\n\n attrs: true,\n\n mixins: [SliderAutoplay, SliderDrag, SliderNav],\n\n props: {\n clsActivated: Boolean,\n easing: String,\n index: Number,\n finite: Boolean,\n velocity: Number\n },\n\n data: function () { return ({\n easing: 'ease',\n finite: false,\n velocity: 1,\n index: 0,\n stack: [],\n percent: 0,\n clsActive: 'uk-active',\n clsActivated: false,\n Transitioner: false,\n transitionOptions: {}\n }); },\n\n computed: {\n\n duration: function(ref, $el) {\n var velocity = ref.velocity;\n\n return speedUp($el.offsetWidth / velocity);\n },\n\n length: function() {\n return this.slides.length;\n },\n\n list: function(ref, $el) {\n var selList = ref.selList;\n\n return $(selList, $el);\n },\n\n maxIndex: function() {\n return this.length - 1;\n },\n\n slidesSelector: function(ref) {\n var selList = ref.selList;\n\n return (selList + \" > *\");\n },\n\n slides: function() {\n return toNodes(this.list.children);\n }\n\n },\n\n events: {\n\n itemshown: function() {\n this.$update(this.list);\n }\n\n },\n\n methods: {\n\n show: function(index$$1, force) {\n var this$1 = this;\n if ( force === void 0 ) force = false;\n\n\n if (this.dragging || !this.length) {\n return;\n }\n\n var ref = this;\n var stack = ref.stack;\n var queueIndex = force ? 0 : stack.length;\n var reset = function () {\n stack.splice(queueIndex, 1);\n\n if (stack.length) {\n this$1.show(stack.shift(), true);\n }\n };\n\n stack[force ? 'unshift' : 'push'](index$$1);\n\n if (!force && stack.length > 1) {\n\n if (stack.length === 2) {\n this._transitioner.forward(Math.min(this.duration, 200));\n }\n\n return;\n }\n\n var prevIndex = this.index;\n var prev = hasClass(this.slides, this.clsActive) && this.slides[prevIndex];\n var nextIndex = this.getIndex(index$$1, this.index);\n var next = this.slides[nextIndex];\n\n if (prev === next) {\n reset();\n return;\n }\n\n this.dir = getDirection(index$$1, prevIndex);\n this.prevIndex = prevIndex;\n this.index = nextIndex;\n\n prev && trigger(prev, 'beforeitemhide', [this]);\n if (!trigger(next, 'beforeitemshow', [this, prev])) {\n this.index = this.prevIndex;\n reset();\n return;\n }\n\n var promise = this._show(prev, next, force).then(function () {\n\n prev && trigger(prev, 'itemhidden', [this$1]);\n trigger(next, 'itemshown', [this$1]);\n\n return new Promise$1(function (resolve) {\n fastdom.write(function () {\n stack.shift();\n if (stack.length) {\n this$1.show(stack.shift(), true);\n } else {\n this$1._transitioner = null;\n }\n resolve();\n });\n });\n\n });\n\n prev && trigger(prev, 'itemhide', [this]);\n trigger(next, 'itemshow', [this]);\n\n return promise;\n\n },\n\n getIndex: function(index$$1, prev) {\n if ( index$$1 === void 0 ) index$$1 = this.index;\n if ( prev === void 0 ) prev = this.index;\n\n return clamp(getIndex(index$$1, this.slides, prev, this.finite), 0, this.maxIndex);\n },\n\n getValidIndex: function(index$$1, prevIndex) {\n if ( index$$1 === void 0 ) index$$1 = this.index;\n if ( prevIndex === void 0 ) prevIndex = this.prevIndex;\n\n return this.getIndex(index$$1, prevIndex);\n },\n\n _show: function(prev, next, force) {\n\n this._transitioner = this._getTransitioner(\n prev,\n next,\n this.dir,\n assign({\n easing: force\n ? next.offsetWidth < 600\n ? 'cubic-bezier(0.25, 0.46, 0.45, 0.94)' /* easeOutQuad */\n : 'cubic-bezier(0.165, 0.84, 0.44, 1)' /* easeOutQuart */\n : this.easing\n }, this.transitionOptions)\n );\n\n if (!force && !prev) {\n this._transitioner.translate(1);\n return Promise$1.resolve();\n }\n\n var ref = this.stack;\n var length = ref.length;\n return this._transitioner[length > 1 ? 'forward' : 'show'](length > 1 ? Math.min(this.duration, 75 + 75 / (length - 1)) : this.duration, this.percent);\n\n },\n\n _getDistance: function(prev, next) {\n return new this._getTransitioner(prev, prev !== next && next).getDistance();\n },\n\n _translate: function(percent, prev, next) {\n if ( prev === void 0 ) prev = this.prevIndex;\n if ( next === void 0 ) next = this.index;\n\n var transitioner = this._getTransitioner(prev !== next ? prev : false, next);\n transitioner.translate(percent);\n return transitioner;\n },\n\n _getTransitioner: function(prev, next, dir, options) {\n if ( prev === void 0 ) prev = this.prevIndex;\n if ( next === void 0 ) next = this.index;\n if ( dir === void 0 ) dir = this.dir || 1;\n if ( options === void 0 ) options = this.transitionOptions;\n\n return new this.Transitioner(\n isNumber(prev) ? this.slides[prev] : prev,\n isNumber(next) ? this.slides[next] : next,\n dir * (isRtl ? -1 : 1),\n options\n );\n }\n\n }\n\n };\n\n function getDirection(index$$1, prevIndex) {\n return index$$1 === 'next'\n ? 1\n : index$$1 === 'previous'\n ? -1\n : index$$1 < prevIndex\n ? -1\n : 1;\n }\n\n function speedUp(x) {\n return .5 * x + 300; // parabola through (400,500; 600,600; 1800,1200)\n }\n\n var Slideshow = {\n\n mixins: [Slider],\n\n props: {\n animation: String\n },\n\n data: {\n animation: 'slide',\n clsActivated: 'uk-transition-active',\n Animations: Animations,\n Transitioner: Transitioner\n },\n\n computed: {\n\n animation: function(ref) {\n var animation = ref.animation;\n var Animations$$1 = ref.Animations;\n\n return assign(animation in Animations$$1 ? Animations$$1[animation] : Animations$$1.slide, {name: animation});\n },\n\n transitionOptions: function() {\n return {animation: this.animation};\n }\n\n },\n\n events: {\n\n 'itemshow itemhide itemshown itemhidden': function(ref) {\n var target = ref.target;\n\n this.$update(target);\n },\n\n itemshow: function() {\n isNumber(this.prevIndex) && fastdom.flush(); // iOS 10+ will honor the video.play only if called from a gesture handler\n },\n\n beforeitemshow: function(ref) {\n var target = ref.target;\n\n addClass(target, this.clsActive);\n },\n\n itemshown: function(ref) {\n var target = ref.target;\n\n addClass(target, this.clsActivated);\n },\n\n itemhidden: function(ref) {\n var target = ref.target;\n\n removeClass(target, this.clsActive, this.clsActivated);\n }\n\n }\n\n };\n\n var LightboxPanel = {\n\n mixins: [Container, Modal, Togglable, Slideshow],\n\n functional: true,\n\n props: {\n delayControls: Number,\n preload: Number,\n videoAutoplay: Boolean,\n template: String\n },\n\n data: function () { return ({\n preload: 1,\n videoAutoplay: false,\n delayControls: 3000,\n items: [],\n cls: 'uk-open',\n clsPage: 'uk-lightbox-page',\n selList: '.uk-lightbox-items',\n attrItem: 'uk-lightbox-item',\n selClose: '.uk-close-large',\n pauseOnHover: false,\n velocity: 2,\n Animations: Animations$1,\n template: \"<div class=\\\"uk-lightbox uk-overflow-hidden\\\"> <ul class=\\\"uk-lightbox-items\\\"></ul> <div class=\\\"uk-lightbox-toolbar uk-position-top uk-text-right uk-transition-slide-top uk-transition-opaque\\\"> <button class=\\\"uk-lightbox-toolbar-icon uk-close-large\\\" type=\\\"button\\\" uk-close></button> </div> <a class=\\\"uk-lightbox-button uk-position-center-left uk-position-medium uk-transition-fade\\\" href=\\\"#\\\" uk-slidenav-previous uk-lightbox-item=\\\"previous\\\"></a> <a class=\\\"uk-lightbox-button uk-position-center-right uk-position-medium uk-transition-fade\\\" href=\\\"#\\\" uk-slidenav-next uk-lightbox-item=\\\"next\\\"></a> <div class=\\\"uk-lightbox-toolbar uk-lightbox-caption uk-position-bottom uk-text-center uk-transition-slide-bottom uk-transition-opaque\\\"></div> </div>\"\n }); },\n\n created: function() {\n var this$1 = this;\n\n\n this.$mount(append(this.container, this.template));\n\n this.caption = $('.uk-lightbox-caption', this.$el);\n\n this.items.forEach(function () { return append(this$1.list, '<li></li>'); });\n\n },\n\n events: [\n\n {\n\n name: (pointerMove + \" \" + pointerDown + \" keydown\"),\n\n handler: 'showControls'\n\n },\n\n {\n\n name: 'click',\n\n self: true,\n\n delegate: function() {\n return this.slidesSelector;\n },\n\n handler: function(e) {\n e.preventDefault();\n this.hide();\n }\n\n },\n\n {\n\n name: 'shown',\n\n self: true,\n\n handler: 'showControls'\n },\n\n {\n\n name: 'hide',\n\n self: true,\n\n handler: function() {\n\n this.hideControls();\n\n removeClass(this.slides, this.clsActive);\n Transition.stop(this.slides);\n\n }\n },\n\n {\n\n name: 'keyup',\n\n el: document,\n\n handler: function(e) {\n\n if (!this.isToggled(this.$el)) {\n return;\n }\n\n switch (e.keyCode) {\n case 37:\n this.show('previous');\n break;\n case 39:\n this.show('next');\n break;\n }\n }\n },\n\n {\n\n name: 'beforeitemshow',\n\n handler: function(e) {\n\n if (this.isToggled()) {\n return;\n }\n\n this.preventCatch = true;\n\n e.preventDefault();\n\n this.toggleNow(this.$el, true);\n\n this.animation = Animations$1['scale'];\n removeClass(e.target, this.clsActive);\n this.stack.splice(1, 0, this.index);\n\n }\n\n },\n\n {\n\n name: 'itemshow',\n\n handler: function(ref) {\n var this$1 = this;\n var target = ref.target;\n\n\n var i = index(target);\n var ref$1 = this.getItem(i);\n var caption = ref$1.caption;\n\n css(this.caption, 'display', caption ? '' : 'none');\n html(this.caption, caption);\n\n for (var j = 0; j <= this.preload; j++) {\n this$1.loadItem(this$1.getIndex(i + j));\n this$1.loadItem(this$1.getIndex(i - j));\n }\n\n }\n\n },\n\n {\n\n name: 'itemshown',\n\n handler: function() {\n this.preventCatch = false;\n }\n\n },\n\n {\n\n name: 'itemload',\n\n handler: function(_, item) {\n var this$1 = this;\n\n\n var source = item.source;\n var type = item.type;\n var alt = item.alt;\n\n this.setItem(item, '<span uk-spinner></span>');\n\n if (!source) {\n return;\n }\n\n var matches$$1;\n\n // Image\n if (type === 'image' || source.match(/\\.(jp(e)?g|png|gif|svg)($|\\?)/i)) {\n\n getImage(source).then(\n function (img) { return this$1.setItem(item, (\"<img width=\\\"\" + (img.width) + \"\\\" height=\\\"\" + (img.height) + \"\\\" src=\\\"\" + source + \"\\\" alt=\\\"\" + (alt ? alt : '') + \"\\\">\")); },\n function () { return this$1.setError(item); }\n );\n\n // Video\n } else if (type === 'video' || source.match(/\\.(mp4|webm|ogv)($|\\?)/i)) {\n\n var video = $((\"<video controls playsinline\" + (item.poster ? (\" poster=\\\"\" + (item.poster) + \"\\\"\") : '') + \" uk-video=\\\"\" + (this.videoAutoplay) + \"\\\"></video>\"));\n attr(video, 'src', source);\n\n on(video, 'error', function () { return this$1.setError(item); });\n on(video, 'loadedmetadata', function () {\n attr(video, {width: video.videoWidth, height: video.videoHeight});\n this$1.setItem(item, video);\n });\n\n // Iframe\n } else if (type === 'iframe' || source.match(/\\.(html|php)($|\\?)/i)) {\n\n this.setItem(item, (\"<iframe class=\\\"uk-lightbox-iframe\\\" src=\\\"\" + source + \"\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\"));\n\n // YouTube\n } else if ((matches$$1 = source.match(/\\/\\/.*?youtube(-nocookie)?\\.[a-z]+\\/watch\\?v=([^&\\s]+)/) || source.match(/()youtu\\.be\\/(.*)/))) {\n\n var id = matches$$1[2];\n var setIframe = function (width$$1, height$$1) {\n if ( width$$1 === void 0 ) width$$1 = 640;\n if ( height$$1 === void 0 ) height$$1 = 450;\n\n return this$1.setItem(item, getIframe((\"https://www.youtube\" + (matches$$1[1] || '') + \".com/embed/\" + id), width$$1, height$$1, this$1.videoAutoplay));\n };\n\n getImage((\"https://img.youtube.com/vi/\" + id + \"/maxresdefault.jpg\")).then(\n function (ref) {\n var width$$1 = ref.width;\n var height$$1 = ref.height;\n\n // YouTube default 404 thumb, fall back to low resolution\n if (width$$1 === 120 && height$$1 === 90) {\n getImage((\"https://img.youtube.com/vi/\" + id + \"/0.jpg\")).then(\n function (ref) {\n var width$$1 = ref.width;\n var height$$1 = ref.height;\n\n return setIframe(width$$1, height$$1);\n },\n setIframe\n );\n } else {\n setIframe(width$$1, height$$1);\n }\n },\n setIframe\n );\n\n // Vimeo\n } else if ((matches$$1 = source.match(/(\\/\\/.*?)vimeo\\.[a-z]+\\/([0-9]+).*?/))) {\n\n ajax((\"https://vimeo.com/api/oembed.json?maxwidth=1920&url=\" + (encodeURI(source))), {responseType: 'json', withCredentials: false})\n .then(\n function (ref) {\n var ref_response = ref.response;\n var height$$1 = ref_response.height;\n var width$$1 = ref_response.width;\n\n return this$1.setItem(item, getIframe((\"https://player.vimeo.com/video/\" + (matches$$1[2])), width$$1, height$$1, this$1.videoAutoplay));\n },\n function () { return this$1.setError(item); }\n );\n\n }\n\n }\n\n }\n\n ],\n\n methods: {\n\n loadItem: function(index$$1) {\n if ( index$$1 === void 0 ) index$$1 = this.index;\n\n\n var item = this.getItem(index$$1);\n\n if (item.content) {\n return;\n }\n\n trigger(this.$el, 'itemload', [item]);\n },\n\n getItem: function(index$$1) {\n if ( index$$1 === void 0 ) index$$1 = this.index;\n\n return this.items[index$$1] || {};\n },\n\n setItem: function(item, content) {\n assign(item, {content: content});\n var el = html(this.slides[this.items.indexOf(item)], content);\n trigger(this.$el, 'itemloaded', [this, el]);\n this.$update(el);\n },\n\n setError: function(item) {\n this.setItem(item, '<span uk-icon=\"icon: bolt; ratio: 2\"></span>');\n },\n\n showControls: function() {\n\n clearTimeout(this.controlsTimer);\n this.controlsTimer = setTimeout(this.hideControls, this.delayControls);\n\n addClass(this.$el, 'uk-active', 'uk-transition-active');\n\n },\n\n hideControls: function() {\n removeClass(this.$el, 'uk-active', 'uk-transition-active');\n }\n\n }\n\n };\n\n function getIframe(src, width$$1, height$$1, autoplay) {\n return (\"<iframe src=\\\"\" + src + \"\\\" width=\\\"\" + width$$1 + \"\\\" height=\\\"\" + height$$1 + \"\\\" style=\\\"max-width: 100%; box-sizing: border-box;\\\" frameborder=\\\"0\\\" allowfullscreen uk-video=\\\"autoplay: \" + autoplay + \"\\\" uk-responsive></iframe>\");\n }\n\n var props = merge(LightboxPanel, 'props');\n var defaults = merge(LightboxPanel, 'data');\n\n var Lightbox = {\n\n install: install$2,\n\n attrs: true,\n\n props: assign({toggle: String}, props),\n\n data: assign({toggle: 'a'}, Object.keys(props).reduce(function (data$$1, key) {\n data$$1[key] = defaults[key];\n return data$$1;\n }, {})),\n\n computed: {\n\n toggles: function(ref, $el) {\n var toggle = ref.toggle;\n\n return $$(toggle, $el);\n }\n\n },\n\n disconnected: function() {\n this._destroy();\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return ((this.toggle) + \":not(.uk-disabled)\");\n },\n\n handler: function(e) {\n e.preventDefault();\n e.current.blur();\n this.show(index(this.toggles, e.current));\n }\n\n }\n\n ],\n\n update: function(data$$1) {\n\n data$$1.toggles = data$$1.toggles || this.toggles;\n\n if (this.panel && this.animation) {\n this.panel.$props.animation = this.animation;\n this.panel.$emit();\n }\n\n if (!this.panel || isEqualList$1(data$$1.toggles, this.toggles)) {\n return;\n }\n\n data$$1.toggles = this.toggles;\n this._destroy();\n this._init();\n\n },\n\n methods: {\n\n _init: function() {\n return this.panel = this.panel || this.$create('lightboxPanel', assign({}, this.$props, {\n items: this.toggles.reduce(function (items, el) {\n items.push(['href', 'caption', 'type', 'poster', 'alt'].reduce(function (obj, attr$$1) {\n obj[attr$$1 === 'href' ? 'source' : attr$$1] = data(el, attr$$1);\n return obj;\n }, {}));\n return items;\n }, [])\n }));\n },\n\n _destroy: function() {\n if (this.panel) {\n this.panel.$destroy(true);\n this.panel = null;\n }\n },\n\n show: function(index$$1) {\n\n if (!this.panel) {\n this._init();\n }\n\n return this.panel.show(index$$1);\n\n },\n\n hide: function() {\n\n return this.panel && this.panel.hide();\n\n }\n\n }\n\n };\n\n function isEqualList$1(listA, listB) {\n return listA.length === listB.length\n && listA.every(function (el, i) { return el === listB[i]; });\n }\n\n function merge(options, prop) {\n return assign.apply(\n void 0, [ {} ].concat( (options.mixins ? options.mixins.map(function (mixin) { return merge(mixin, prop); }) : []),\n [isFunction(options[prop]) ? options[prop]() : options[prop]] ));\n }\n\n function install$2(UIkit) {\n if (!UIkit.lightboxPanel) {\n UIkit.component('lightboxPanel', LightboxPanel);\n }\n }\n\n var obj;\n\n var containers = {};\n\n var Notification = {\n\n functional: true,\n\n args: ['message', 'status'],\n\n data: {\n message: '',\n status: '',\n timeout: 5000,\n group: null,\n pos: 'top-center',\n clsClose: 'uk-notification-close',\n clsMsg: 'uk-notification-message'\n },\n\n install: install$3,\n\n created: function() {\n\n if (!containers[this.pos]) {\n containers[this.pos] = append(this.$container, (\"<div class=\\\"uk-notification uk-notification-\" + (this.pos) + \"\\\"></div>\"));\n }\n\n var container = css(containers[this.pos], 'display', 'block');\n\n this.$mount(append(container,\n (\"<div class=\\\"\" + (this.clsMsg) + (this.status ? (\" \" + (this.clsMsg) + \"-\" + (this.status)) : '') + \"\\\"> <a href=\\\"#\\\" class=\\\"\" + (this.clsClose) + \"\\\" data-uk-close></a> <div>\" + (this.message) + \"</div> </div>\")\n ));\n\n },\n\n ready: function() {\n var this$1 = this;\n\n\n var marginBottom = toFloat(css(this.$el, 'marginBottom'));\n Transition.start(\n css(this.$el, {opacity: 0, marginTop: -this.$el.offsetHeight, marginBottom: 0}),\n {opacity: 1, marginTop: 0, marginBottom: marginBottom}\n ).then(function () {\n if (this$1.timeout) {\n this$1.timer = setTimeout(this$1.close, this$1.timeout);\n }\n });\n\n },\n\n events: ( obj = {\n\n click: function(e) {\n if (closest(e.target, 'a[href=\"#\"]')) {\n e.preventDefault();\n }\n this.close();\n }\n\n }, obj[pointerEnter] = function () {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n }, obj[pointerLeave] = function () {\n if (this.timeout) {\n this.timer = setTimeout(this.close, this.timeout);\n }\n }, obj ),\n\n methods: {\n\n close: function(immediate) {\n var this$1 = this;\n\n\n var removeFn = function () {\n\n trigger(this$1.$el, 'close', [this$1]);\n remove(this$1.$el);\n\n if (!containers[this$1.pos].children.length) {\n css(containers[this$1.pos], 'display', 'none');\n }\n\n };\n\n if (this.timer) {\n clearTimeout(this.timer);\n }\n\n if (immediate) {\n removeFn();\n } else {\n Transition.start(this.$el, {\n opacity: 0,\n marginTop: -this.$el.offsetHeight,\n marginBottom: 0\n }).then(removeFn);\n }\n }\n\n }\n\n };\n\n function install$3(UIkit) {\n UIkit.notification.closeAll = function (group, immediate) {\n apply(document.body, function (el) {\n var notification = UIkit.getComponent(el, 'notification');\n if (notification && (!group || group === notification.group)) {\n notification.close(immediate);\n }\n });\n };\n }\n\n var props$1 = ['x', 'y', 'bgx', 'bgy', 'rotate', 'scale', 'color', 'backgroundColor', 'borderColor', 'opacity', 'blur', 'hue', 'grayscale', 'invert', 'saturate', 'sepia', 'fopacity'];\n\n var Parallax = {\n\n props: props$1.reduce(function (props, prop) {\n props[prop] = 'list';\n return props;\n }, {\n media: 'media'\n }),\n\n data: props$1.reduce(function (data$$1, prop) {\n data$$1[prop] = undefined;\n return data$$1;\n }, {\n media: false\n }),\n\n computed: {\n\n props: function(properties, $el) {\n var this$1 = this;\n\n\n return props$1.reduce(function (props, prop) {\n\n if (isUndefined(properties[prop])) {\n return props;\n }\n\n var isColor = prop.match(/color/i);\n var isCssProp = isColor || prop === 'opacity';\n\n var pos, bgPos, diff;\n var steps = properties[prop].slice(0);\n\n if (isCssProp) {\n css($el, prop, '');\n }\n\n if (steps.length < 2) {\n steps.unshift((prop === 'scale'\n ? 1\n : isCssProp\n ? css($el, prop)\n : 0) || 0);\n }\n\n var unit = includes(steps.join(''), '%') ? '%' : 'px';\n\n if (isColor) {\n\n var ref = $el.style;\n var color = ref.color;\n steps = steps.map(function (step) { return parseColor($el, step); });\n $el.style.color = color;\n\n } else {\n\n steps = steps.map(toFloat);\n\n }\n\n if (prop.match(/^bg/)) {\n\n css($el, (\"background-position-\" + (prop[2])), '');\n bgPos = css($el, 'backgroundPosition').split(' ')[prop[2] === 'x' ? 0 : 1]; // IE 11 can't read background-position-[x|y]\n\n if (this$1.covers) {\n\n var min = Math.min.apply(Math, steps);\n var max = Math.max.apply(Math, steps);\n var down = steps.indexOf(min) < steps.indexOf(max);\n\n diff = max - min;\n\n steps = steps.map(function (step) { return step - (down ? min : max); });\n pos = (down ? -diff : 0) + \"px\";\n\n } else {\n\n pos = bgPos;\n\n }\n }\n\n props[prop] = {steps: steps, unit: unit, pos: pos, bgPos: bgPos, diff: diff};\n\n return props;\n\n }, {});\n\n },\n\n bgProps: function() {\n var this$1 = this;\n\n return ['bgx', 'bgy'].filter(function (bg) { return bg in this$1.props; });\n },\n\n covers: function(_, $el) {\n return covers($el);\n }\n\n },\n\n disconnected: function() {\n delete this._image;\n },\n\n update: [\n\n {\n\n read: function(data$$1) {\n var this$1 = this;\n\n\n data$$1.active = !this.media || window.matchMedia(this.media).matches;\n\n if (data$$1.image) {\n data$$1.image.dimEl = {\n width: this.$el.offsetWidth,\n height: this.$el.offsetHeight\n };\n }\n\n if ('image' in data$$1 || !this.covers || !this.bgProps.length) {\n return;\n }\n\n var src = css(this.$el, 'backgroundImage').replace(/^none|url\\([\"']?(.+?)[\"']?\\)$/, '$1');\n\n if (!src) {\n return;\n }\n\n data$$1.image = false;\n\n getImage(src).then(function (img) {\n data$$1.image = {\n width: img.naturalWidth,\n height: img.naturalHeight\n };\n\n this$1.$emit();\n });\n\n },\n\n write: function(ref) {\n var this$1 = this;\n var image = ref.image;\n var active = ref.active;\n\n\n if (!image) {\n return;\n }\n\n if (!active) {\n css(this.$el, {backgroundSize: '', backgroundRepeat: ''});\n return;\n }\n\n var dimEl = image.dimEl;\n\n var dim = Dimensions.cover(image, dimEl);\n\n this.bgProps.forEach(function (prop) {\n\n var ref = this$1.props[prop];\n var diff = ref.diff;\n var bgPos = ref.bgPos;\n var steps = ref.steps;\n var attr$$1 = prop === 'bgy' ? 'height' : 'width';\n var span = dim[attr$$1] - dimEl[attr$$1];\n\n if (!bgPos.match(/%$|0px/)) {\n return;\n }\n\n if (span < diff) {\n dimEl[attr$$1] = dim[attr$$1] + diff - span;\n } else if (span > diff) {\n\n var bgPosFloat = parseFloat(bgPos);\n\n if (bgPosFloat) {\n this$1.props[prop].steps = steps.map(function (step) { return step - (span - diff) / (100 / bgPosFloat); });\n }\n }\n\n dim = Dimensions.cover(image, dimEl);\n });\n\n css(this.$el, {\n backgroundSize: ((dim.width) + \"px \" + (dim.height) + \"px\"),\n backgroundRepeat: 'no-repeat'\n });\n\n },\n\n events: ['load', 'resize']\n\n }\n\n ],\n\n methods: {\n\n reset: function() {\n var this$1 = this;\n\n each(this.getCss(0), function (_, prop) { return css(this$1.$el, prop, ''); });\n },\n\n getCss: function(percent) {\n\n var ref = this;\n var props = ref.props;\n var translated = false;\n\n return Object.keys(props).reduce(function (css$$1, prop) {\n\n var ref = props[prop];\n var steps = ref.steps;\n var unit = ref.unit;\n var pos = ref.pos;\n var value = getValue(steps, percent);\n\n switch (prop) {\n\n // transforms\n case 'x':\n case 'y':\n\n if (translated) {\n break;\n }\n\n var ref$1 = ['x', 'y'].map(function (dir) { return prop === dir\n ? value + unit\n : props[dir]\n ? getValue(props[dir].steps, percent) + props[dir].unit\n : 0; }\n );\n var x = ref$1[0];\n var y = ref$1[1];\n\n translated = css$$1.transform += \" translate3d(\" + x + \", \" + y + \", 0)\";\n break;\n case 'rotate':\n css$$1.transform += \" rotate(\" + value + \"deg)\";\n break;\n case 'scale':\n css$$1.transform += \" scale(\" + value + \")\";\n break;\n\n // bg image\n case 'bgy':\n case 'bgx':\n css$$1[(\"background-position-\" + (prop[2]))] = \"calc(\" + pos + \" + \" + (value + unit) + \")\";\n break;\n\n // color\n case 'color':\n case 'backgroundColor':\n case 'borderColor':\n\n var ref$2 = getStep(steps, percent);\n var start = ref$2[0];\n var end = ref$2[1];\n var p = ref$2[2];\n\n css$$1[prop] = \"rgba(\" + (start.map(function (value, i) {\n value = value + p * (end[i] - value);\n return i === 3 ? toFloat(value) : parseInt(value, 10);\n }).join(',')) + \")\";\n break;\n\n // CSS Filter\n case 'blur':\n css$$1.filter += \" blur(\" + value + \"px)\";\n break;\n case 'hue':\n css$$1.filter += \" hue-rotate(\" + value + \"deg)\";\n break;\n case 'fopacity':\n css$$1.filter += \" opacity(\" + value + \"%)\";\n break;\n case 'grayscale':\n case 'invert':\n case 'saturate':\n case 'sepia':\n css$$1.filter += \" \" + prop + \"(\" + value + \"%)\";\n break;\n\n default:\n css$$1[prop] = value;\n }\n\n return css$$1;\n\n }, {transform: '', filter: ''});\n\n }\n\n }\n\n };\n\n function parseColor(el, color) {\n return css(css(el, 'color', color), 'color').split(/[(),]/g).slice(1, -1).concat(1).slice(0, 4).map(function (n) { return toFloat(n); });\n }\n\n function getStep(steps, percent) {\n var count = steps.length - 1;\n var index$$1 = Math.min(Math.floor(count * percent), count - 1);\n var step = steps.slice(index$$1, index$$1 + 2);\n\n step.push(percent === 1 ? 1 : percent % (1 / count) * count);\n\n return step;\n }\n\n function getValue(steps, percent) {\n var ref = getStep(steps, percent);\n var start = ref[0];\n var end = ref[1];\n var p = ref[2];\n return (isNumber(start)\n ? start + Math.abs(start - end) * p * (start < end ? 1 : -1)\n : +end\n ).toFixed(2);\n }\n\n function covers(el) {\n var ref = el.style;\n var backgroundSize = ref.backgroundSize;\n var covers = css(css(el, 'backgroundSize', ''), 'backgroundSize') === 'cover';\n el.style.backgroundSize = backgroundSize;\n return covers;\n }\n\n var Parallax$1 = {\n\n mixins: [Parallax],\n\n props: {\n target: String,\n viewport: Number,\n easing: Number,\n },\n\n data: {\n target: false,\n viewport: 1,\n easing: 1,\n },\n\n computed: {\n\n target: function(ref, $el) {\n var target = ref.target;\n\n return target && query(target, $el) || $el;\n }\n\n },\n\n update: [\n\n {\n\n read: function(ref) {\n var percent = ref.percent;\n\n return {\n prev: percent,\n percent: ease$1(scrolledOver(this.target) / (this.viewport || 1), this.easing)\n };\n },\n\n write: function(ref, ref$1) {\n var prev = ref.prev;\n var percent = ref.percent;\n var active = ref.active;\n var type = ref$1.type;\n\n\n if (type !== 'scroll') {\n prev = false;\n }\n\n if (!active) {\n this.reset();\n return;\n }\n\n if (prev !== percent) {\n css(this.$el, this.getCss(percent));\n }\n\n },\n\n events: ['scroll', 'load', 'resize']\n }\n\n ]\n\n };\n\n function ease$1(percent, easing) {\n return clamp(percent * (1 - (easing - easing * percent)));\n }\n\n var SliderReactive = {\n\n update: [\n\n {\n\n write: function() {\n\n if (this.stack.length || this.dragging) {\n return;\n }\n\n var index$$1 = this.getValidIndex();\n delete this.index;\n removeClass(this.slides, this.clsActive, this.clsActivated);\n this.show(index$$1);\n\n },\n\n events: ['load', 'resize']\n\n }\n\n ]\n\n };\n\n function Transitioner$1 (prev, next, dir, ref) {\n var center = ref.center;\n var easing = ref.easing;\n var list = ref.list;\n\n\n var deferred = new Deferred();\n\n var from = prev\n ? getLeft(prev, list, center)\n : getLeft(next, list, center) + next.offsetWidth * dir;\n var to = next\n ? getLeft(next, list, center)\n : from + prev.offsetWidth * dir * (isRtl ? -1 : 1);\n\n return {\n\n dir: dir,\n\n show: function(duration, percent, linear) {\n if ( percent === void 0 ) percent = 0;\n\n\n var timing = linear ? 'linear' : easing;\n duration -= Math.round(duration * clamp(percent, -1, 1));\n\n this.translate(percent);\n\n prev && this.updateTranslates();\n percent = prev ? percent : clamp(percent, 0, 1);\n triggerUpdate$1(this.getItemIn(), 'itemin', {percent: percent, duration: duration, timing: timing, dir: dir});\n prev && triggerUpdate$1(this.getItemIn(true), 'itemout', {percent: 1 - percent, duration: duration, timing: timing, dir: dir});\n\n Transition\n .start(list, {transform: translate(-to * (isRtl ? -1 : 1), 'px')}, duration, timing)\n .then(deferred.resolve, noop);\n\n return deferred.promise;\n\n },\n\n stop: function() {\n return Transition.stop(list);\n },\n\n cancel: function() {\n Transition.cancel(list);\n },\n\n reset: function() {\n css(list, 'transform', '');\n },\n\n forward: function(duration, percent) {\n if ( percent === void 0 ) percent = this.percent();\n\n Transition.cancel(list);\n return this.show(duration, percent, true);\n },\n\n translate: function(percent) {\n\n var distance = this.getDistance() * dir * (isRtl ? -1 : 1);\n\n css(list, 'transform', translate(clamp(\n -to + (distance - distance * percent),\n -getWidth(list),\n list.offsetWidth\n ) * (isRtl ? -1 : 1), 'px'));\n\n this.updateTranslates();\n\n if (prev) {\n percent = clamp(percent, -1, 1);\n triggerUpdate$1(this.getItemIn(), 'itemtranslatein', {percent: percent, dir: dir});\n triggerUpdate$1(this.getItemIn(true), 'itemtranslateout', {percent: 1 - percent, dir: dir});\n }\n\n },\n\n percent: function() {\n return Math.abs((css(list, 'transform').split(',')[4] * (isRtl ? -1 : 1) + from) / (to - from));\n },\n\n getDistance: function() {\n return Math.abs(to - from);\n },\n\n getItemIn: function(out) {\n if ( out === void 0 ) out = false;\n\n\n var actives = this.getActives();\n var all = sortBy(slides(list), 'offsetLeft');\n var i = index(all, actives[dir * (out ? -1 : 1) > 0 ? actives.length - 1 : 0]);\n\n return ~i && all[i + (prev && !out ? dir : 0)];\n\n },\n\n getActives: function() {\n\n var left = getLeft(prev || next, list, center);\n\n return sortBy(slides(list).filter(function (slide) {\n var slideLeft = getElLeft(slide, list);\n return slideLeft >= left && slideLeft + slide.offsetWidth <= list.offsetWidth + left;\n }), 'offsetLeft');\n\n },\n\n updateTranslates: function() {\n\n var actives = this.getActives();\n\n slides(list).forEach(function (slide) {\n var isActive = includes(actives, slide);\n\n triggerUpdate$1(slide, (\"itemtranslate\" + (isActive ? 'in' : 'out')), {\n percent: isActive ? 1 : 0,\n dir: slide.offsetLeft <= next.offsetLeft ? 1 : -1\n });\n });\n }\n\n };\n\n }\n\n function getLeft(el, list, center) {\n\n var left = getElLeft(el, list);\n\n return center\n ? left - centerEl(el, list)\n : Math.min(left, getMax(list));\n\n }\n\n function getMax(list) {\n return Math.max(0, getWidth(list) - list.offsetWidth);\n }\n\n function getWidth(list) {\n return slides(list).reduce(function (right, el) { return el.offsetWidth + right; }, 0);\n }\n\n function getMaxWidth(list) {\n return slides(list).reduce(function (right, el) { return Math.max(right, el.offsetWidth); }, 0);\n }\n\n function centerEl(el, list) {\n return list.offsetWidth / 2 - el.offsetWidth / 2;\n }\n\n function getElLeft(el, list) {\n return (el.offsetLeft + (isRtl ? el.offsetWidth - list.offsetWidth : 0)) * (isRtl ? -1 : 1);\n }\n\n function triggerUpdate$1(el, type, data$$1) {\n trigger(el, createEvent(type, false, false, data$$1));\n }\n\n function slides(list) {\n return toNodes(list.children);\n }\n\n var Slider$1 = {\n\n mixins: [Class, Slider, SliderReactive],\n\n props: {\n center: Boolean,\n sets: Boolean,\n },\n\n data: {\n center: false,\n sets: false,\n attrItem: 'uk-slider-item',\n selList: '.uk-slider-items',\n selNav: '.uk-slider-nav',\n clsContainer: 'uk-slider-container',\n Transitioner: Transitioner$1\n },\n\n computed: {\n\n avgWidth: function() {\n return getWidth(this.list) / this.length;\n },\n\n finite: function(ref) {\n var finite = ref.finite;\n\n return finite || getWidth(this.list) < this.list.offsetWidth + getMaxWidth(this.list) + this.center;\n },\n\n maxIndex: function() {\n var this$1 = this;\n\n\n if (!this.finite || this.center && !this.sets) {\n return this.length - 1;\n }\n\n if (this.center) {\n return this.sets[this.sets.length - 1];\n }\n\n css(this.slides, 'order', '');\n\n var max = getMax(this.list);\n var i = this.length;\n\n while (i--) {\n if (getElLeft(this$1.list.children[i], this$1.list) < max) {\n return Math.min(i + 1, this$1.length - 1);\n }\n }\n\n return 0;\n },\n\n sets: function(ref) {\n var this$1 = this;\n var sets = ref.sets;\n\n\n var width$$1 = this.list.offsetWidth / (this.center ? 2 : 1);\n\n var left = 0;\n var leftCenter = width$$1;\n var slideLeft = 0;\n\n sets = sets && this.slides.reduce(function (sets, slide, i) {\n\n var ref = offset(slide);\n var slideWidth = ref.width;\n var slideRight = slideLeft + slideWidth;\n\n if (slideRight > left) {\n\n if (!this$1.center && i > this$1.maxIndex) {\n i = this$1.maxIndex;\n }\n\n if (!includes(sets, i)) {\n\n var cmp = this$1.slides[i + 1];\n if (this$1.center && cmp && slideWidth < leftCenter - offset(cmp).width / 2) {\n leftCenter -= slideWidth;\n } else {\n leftCenter = width$$1;\n sets.push(i);\n left = slideLeft + width$$1 + (this$1.center ? slideWidth / 2 : 0);\n }\n\n }\n }\n\n slideLeft += slideWidth;\n\n return sets;\n\n }, []);\n\n return sets && sets.length && sets;\n\n },\n\n transitionOptions: function() {\n return {\n center: this.center,\n list: this.list\n };\n }\n\n },\n\n connected: function() {\n toggleClass(this.$el, this.clsContainer, !$((\".\" + (this.clsContainer)), this.$el));\n },\n\n update: {\n\n write: function() {\n var this$1 = this;\n\n\n $$((\"[\" + (this.attrItem) + \"],[data-\" + (this.attrItem) + \"]\"), this.$el).forEach(function (el) {\n var index$$1 = data(el, this$1.attrItem);\n this$1.maxIndex && toggleClass(el, 'uk-hidden', isNumeric(index$$1) && (this$1.sets && !includes(this$1.sets, toFloat(index$$1)) || index$$1 > this$1.maxIndex));\n });\n\n },\n\n events: ['load', 'resize']\n\n },\n\n events: {\n\n beforeitemshow: function(e) {\n var this$1 = this;\n\n\n if (!this.dragging && this.sets && this.stack.length < 2 && !includes(this.sets, this.index)) {\n this.index = this.getValidIndex();\n }\n\n var diff = Math.abs(\n this.index\n - this.prevIndex\n + (this.dir > 0 && this.index < this.prevIndex || this.dir < 0 && this.index > this.prevIndex ? (this.maxIndex + 1) * this.dir : 0)\n );\n\n if (!this.dragging && diff > 1) {\n\n for (var i = 0; i < diff; i++) {\n this$1.stack.splice(1, 0, this$1.dir > 0 ? 'next' : 'previous');\n }\n\n e.preventDefault();\n return;\n }\n\n this.duration = speedUp(this.avgWidth / this.velocity)\n * ((\n this.dir < 0 || !this.slides[this.prevIndex]\n ? this.slides[this.index]\n : this.slides[this.prevIndex]\n ).offsetWidth / this.avgWidth);\n\n this.reorder();\n\n },\n\n itemshow: function() {\n !isUndefined(this.prevIndex) && addClass(this._getTransitioner().getItemIn(), this.clsActive);\n },\n\n itemshown: function() {\n var this$1 = this;\n\n var actives = this._getTransitioner(this.index).getActives();\n this.slides.forEach(function (slide) { return toggleClass(slide, this$1.clsActive, includes(actives, slide)); });\n (!this.sets || includes(this.sets, toFloat(this.index))) && this.slides.forEach(function (slide) { return toggleClass(slide, this$1.clsActivated, includes(actives, slide)); });\n }\n\n },\n\n methods: {\n\n reorder: function() {\n var this$1 = this;\n\n\n css(this.slides, 'order', '');\n\n if (this.finite) {\n return;\n }\n\n var index$$1 = this.dir > 0 && this.slides[this.prevIndex] ? this.prevIndex : this.index;\n\n this.slides.forEach(function (slide, i) { return css(slide, 'order', this$1.dir > 0 && i < index$$1\n ? 1\n : this$1.dir < 0 && i >= this$1.index\n ? -1\n : ''\n ); }\n );\n\n if (!this.center) {\n return;\n }\n\n var next = this.slides[index$$1];\n var width$$1 = this.list.offsetWidth / 2 - next.offsetWidth / 2;\n var j = 0;\n\n while (width$$1 > 0) {\n var slideIndex = this$1.getIndex(--j + index$$1, index$$1);\n var slide = this$1.slides[slideIndex];\n\n css(slide, 'order', slideIndex > index$$1 ? -2 : -1);\n width$$1 -= slide.offsetWidth;\n }\n\n },\n\n getValidIndex: function(index$$1, prevIndex) {\n var this$1 = this;\n if ( index$$1 === void 0 ) index$$1 = this.index;\n if ( prevIndex === void 0 ) prevIndex = this.prevIndex;\n\n\n index$$1 = this.getIndex(index$$1, prevIndex);\n\n if (!this.sets) {\n return index$$1;\n }\n\n var prev;\n\n do {\n\n if (includes(this$1.sets, index$$1)) {\n return index$$1;\n }\n\n prev = index$$1;\n index$$1 = this$1.getIndex(index$$1 + this$1.dir, prevIndex);\n\n } while (index$$1 !== prev);\n\n return index$$1;\n }\n\n }\n\n };\n\n var SliderParallax = {\n\n mixins: [Parallax],\n\n data: {\n selItem: '!li'\n },\n\n computed: {\n\n item: function(ref, $el) {\n var selItem = ref.selItem;\n\n return query(selItem, $el);\n }\n\n },\n\n events: [\n\n {\n\n name: 'itemshown',\n\n self: true,\n\n el: function() {\n return this.item;\n },\n\n handler: function() {\n css(this.$el, this.getCss(.5));\n }\n\n },\n\n {\n name: 'itemin itemout',\n\n self: true,\n\n el: function() {\n return this.item;\n },\n\n handler: function(ref) {\n var type = ref.type;\n var ref_detail = ref.detail;\n var percent = ref_detail.percent;\n var duration = ref_detail.duration;\n var timing = ref_detail.timing;\n var dir = ref_detail.dir;\n\n\n Transition.cancel(this.$el);\n css(this.$el, this.getCss(getCurrent(type, dir, percent)));\n\n Transition.start(this.$el, this.getCss(isIn(type)\n ? .5\n : dir > 0\n ? 1\n : 0\n ), duration, timing).catch(noop);\n\n }\n },\n\n {\n name: 'transitioncanceled transitionend',\n\n self: true,\n\n el: function() {\n return this.item;\n },\n\n handler: function() {\n Transition.cancel(this.$el);\n }\n\n },\n\n {\n name: 'itemtranslatein itemtranslateout',\n\n self: true,\n\n el: function() {\n return this.item;\n },\n\n handler: function(ref) {\n var type = ref.type;\n var ref_detail = ref.detail;\n var percent = ref_detail.percent;\n var dir = ref_detail.dir;\n\n Transition.cancel(this.$el);\n css(this.$el, this.getCss(getCurrent(type, dir, percent)));\n }\n }\n\n ]\n\n };\n\n function isIn(type) {\n return endsWith(type, 'in');\n }\n\n function getCurrent(type, dir, percent) {\n\n percent /= 2;\n\n return !isIn(type)\n ? dir < 0\n ? percent\n : 1 - percent\n : dir < 0\n ? 1 - percent\n : percent;\n }\n\n var Animations$2 = assign({}, Animations, {\n\n fade: {\n\n show: function() {\n return [\n {opacity: 0, zIndex: 0},\n {zIndex: -1}\n ];\n },\n\n percent: function(current) {\n return 1 - css(current, 'opacity');\n },\n\n translate: function(percent) {\n return [\n {opacity: 1 - percent, zIndex: 0},\n {zIndex: -1}\n ];\n }\n\n },\n\n scale: {\n\n show: function() {\n return [\n {opacity: 0, transform: scale3d(1 + .5), zIndex: 0},\n {zIndex: -1}\n ];\n },\n\n percent: function(current) {\n return 1 - css(current, 'opacity');\n },\n\n translate: function(percent) {\n return [\n {opacity: 1 - percent, transform: scale3d(1 + .5 * percent), zIndex: 0},\n {zIndex: -1}\n ];\n }\n\n },\n\n pull: {\n\n show: function(dir) {\n return dir < 0\n ? [\n {transform: translate(30), zIndex: -1},\n {transform: translate(), zIndex: 0} ]\n : [\n {transform: translate(-100), zIndex: 0},\n {transform: translate(), zIndex: -1}\n ];\n },\n\n percent: function(current, next, dir) {\n return dir < 0\n ? 1 - translated(next)\n : translated(current);\n },\n\n translate: function(percent, dir) {\n return dir < 0\n ? [\n {transform: translate(30 * percent), zIndex: -1},\n {transform: translate(-100 * (1 - percent)), zIndex: 0} ]\n : [\n {transform: translate(-percent * 100), zIndex: 0},\n {transform: translate(30 * (1 - percent)), zIndex: -1}\n ];\n }\n\n },\n\n push: {\n\n show: function(dir) {\n return dir < 0\n ? [\n {transform: translate(100), zIndex: 0},\n {transform: translate(), zIndex: -1} ]\n : [\n {transform: translate(-30), zIndex: -1},\n {transform: translate(), zIndex: 0}\n ];\n },\n\n percent: function(current, next, dir) {\n return dir > 0\n ? 1 - translated(next)\n : translated(current);\n },\n\n translate: function(percent, dir) {\n return dir < 0\n ? [\n {transform: translate(percent * 100), zIndex: 0},\n {transform: translate(-30 * (1 - percent)), zIndex: -1} ]\n : [\n {transform: translate(-30 * percent), zIndex: -1},\n {transform: translate(100 * (1 - percent)), zIndex: 0}\n ];\n }\n\n }\n\n });\n\n var Slideshow$1 = {\n\n mixins: [Class, Slideshow, SliderReactive],\n\n props: {\n ratio: String,\n minHeight: Boolean,\n maxHeight: Boolean,\n },\n\n data: {\n ratio: '16:9',\n minHeight: false,\n maxHeight: false,\n selList: '.uk-slideshow-items',\n attrItem: 'uk-slideshow-item',\n selNav: '.uk-slideshow-nav',\n Animations: Animations$2\n },\n\n update: {\n\n read: function() {\n\n var ref = this.ratio.split(':').map(Number);\n var width$$1 = ref[0];\n var height$$1 = ref[1];\n\n height$$1 = height$$1 * this.$el.offsetWidth / width$$1;\n\n if (this.minHeight) {\n height$$1 = Math.max(this.minHeight, height$$1);\n }\n\n if (this.maxHeight) {\n height$$1 = Math.min(this.maxHeight, height$$1);\n }\n\n return {height: height$$1};\n },\n\n write: function(ref) {\n var hgt = ref.height;\n\n height(this.list, Math.floor(hgt));\n },\n\n events: ['load', 'resize']\n\n }\n\n };\n\n var obj$1;\n\n var Sortable = {\n\n mixins: [Class, Animate],\n\n props: {\n group: String,\n threshold: Number,\n clsItem: String,\n clsPlaceholder: String,\n clsDrag: String,\n clsDragState: String,\n clsBase: String,\n clsNoDrag: String,\n clsEmpty: String,\n clsCustom: String,\n handle: String\n },\n\n data: {\n group: false,\n threshold: 5,\n clsItem: 'uk-sortable-item',\n clsPlaceholder: 'uk-sortable-placeholder',\n clsDrag: 'uk-sortable-drag',\n clsDragState: 'uk-drag',\n clsBase: 'uk-sortable',\n clsNoDrag: 'uk-sortable-nodrag',\n clsEmpty: 'uk-sortable-empty',\n clsCustom: '',\n handle: false\n },\n\n init: function() {\n var this$1 = this;\n\n ['init', 'start', 'move', 'end'].forEach(function (key) {\n var fn = this$1[key];\n this$1[key] = function (e) {\n this$1.scrollY = window.pageYOffset;\n var ref = getPos$1(e);\n var x = ref.x;\n var y = ref.y;\n this$1.pos = {x: x, y: y};\n\n fn(e);\n };\n });\n },\n\n events: ( obj$1 = {}, obj$1[pointerDown] = 'init', obj$1 ),\n\n update: {\n\n write: function() {\n\n if (this.clsEmpty) {\n toggleClass(this.$el, this.clsEmpty, !this.$el.children.length);\n }\n\n if (!this.drag) {\n return;\n }\n\n offset(this.drag, {top: this.pos.y + this.origin.top, left: this.pos.x + this.origin.left});\n\n var ref = offset(this.drag);\n var top = ref.top;\n var bottom = top + this.drag.offsetHeight;\n var scroll;\n\n if (top > 0 && top < this.scrollY) {\n scroll = this.scrollY - 5;\n } else if (bottom < height(document) && bottom > height(window) + this.scrollY) {\n scroll = this.scrollY + 5;\n }\n\n scroll && setTimeout(function () { return window.scroll(window.pageXOffset, scroll); }, 5);\n }\n\n },\n\n methods: {\n\n init: function(e) {\n\n var target = e.target;\n var button = e.button;\n var defaultPrevented = e.defaultPrevented;\n var ref = toNodes(this.$el.children).filter(function (el) { return within(target, el); });\n var placeholder = ref[0];\n\n if (!placeholder\n || isInput(e.target)\n || this.handle && !within(target, this.handle)\n || button > 0\n || within(target, (\".\" + (this.clsNoDrag)))\n || defaultPrevented\n ) {\n return;\n }\n\n e.preventDefault();\n\n this.touched = [this];\n this.placeholder = placeholder;\n this.origin = assign({target: target, index: index(placeholder)}, this.pos);\n\n on(document, pointerMove, this.move);\n on(document, pointerUp, this.end);\n on(window, 'scroll', this.scroll);\n\n if (!this.threshold) {\n this.start(e);\n }\n\n },\n\n start: function(e) {\n\n this.drag = append(this.$container, this.placeholder.outerHTML.replace(/^<li/i, '<div').replace(/li>$/i, 'div>'));\n\n css(this.drag, assign({\n boxSizing: 'border-box',\n width: this.placeholder.offsetWidth,\n height: this.placeholder.offsetHeight\n }, css(this.placeholder, ['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom'])));\n attr(this.drag, 'uk-no-boot', '');\n addClass(this.drag, this.clsDrag, this.clsCustom);\n\n height(this.drag.firstElementChild, height(this.placeholder.firstElementChild));\n\n var ref = offset(this.placeholder);\n var left = ref.left;\n var top = ref.top;\n assign(this.origin, {left: left - this.pos.x, top: top - this.pos.y});\n\n addClass(this.placeholder, this.clsPlaceholder);\n addClass(this.$el.children, this.clsItem);\n addClass(document.documentElement, this.clsDragState);\n\n trigger(this.$el, 'start', [this, this.placeholder]);\n\n this.move(e);\n },\n\n move: function(e) {\n\n if (!this.drag) {\n\n if (Math.abs(this.pos.x - this.origin.x) > this.threshold || Math.abs(this.pos.y - this.origin.y) > this.threshold) {\n this.start(e);\n }\n\n return;\n }\n\n this.$emit();\n\n var target = e.type === 'mousemove' ? e.target : document.elementFromPoint(this.pos.x - document.body.scrollLeft, this.pos.y - document.body.scrollTop);\n\n var sortable = this.getSortable(target);\n var previous = this.getSortable(this.placeholder);\n var move = sortable !== previous;\n\n if (!sortable || within(target, this.placeholder) || move && (!sortable.group || sortable.group !== previous.group)) {\n return;\n }\n\n target = sortable.$el === target.parentNode && target || toNodes(sortable.$el.children).filter(function (element) { return within(target, element); })[0];\n\n if (move) {\n previous.remove(this.placeholder);\n } else if (!target) {\n return;\n }\n\n sortable.insert(this.placeholder, target);\n\n if (!includes(this.touched, sortable)) {\n this.touched.push(sortable);\n }\n\n },\n\n scroll: function() {\n var scroll = window.pageYOffset;\n if (scroll !== this.scrollY) {\n this.pos.y += scroll - this.scrollY;\n this.scrollY = scroll;\n this.$emit();\n }\n },\n\n end: function(e) {\n\n off(document, pointerMove, this.move);\n off(document, pointerUp, this.end);\n off(window, 'scroll', this.scroll);\n\n if (!this.drag) {\n\n if (e.type !== 'mouseup' && within(e.target, 'a[href]')) {\n location.href = closest(e.target, 'a[href]').href;\n }\n\n return;\n }\n\n preventClick();\n\n var sortable = this.getSortable(this.placeholder);\n\n if (this === sortable) {\n if (this.origin.index !== index(this.placeholder)) {\n trigger(this.$el, 'moved', [this, this.placeholder]);\n }\n } else {\n trigger(sortable.$el, 'added', [sortable, this.placeholder]);\n trigger(this.$el, 'removed', [this, this.placeholder]);\n }\n\n trigger(this.$el, 'stop', [this, this.placeholder]);\n\n remove(this.drag);\n this.drag = null;\n\n var classes = this.touched.map(function (sortable) { return ((sortable.clsPlaceholder) + \" \" + (sortable.clsItem)); }).join(' ');\n this.touched.forEach(function (sortable) { return removeClass(sortable.$el.children, classes); });\n\n removeClass(document.documentElement, this.clsDragState);\n\n },\n\n insert: function(element, target) {\n var this$1 = this;\n\n\n addClass(this.$el.children, this.clsItem);\n\n var insert = function () {\n\n if (target) {\n\n if (!within(element, this$1.$el) || isPredecessor(element, target)) {\n before(target, element);\n } else {\n after(target, element);\n }\n\n } else {\n append(this$1.$el, element);\n }\n\n };\n\n if (this.animation) {\n this.animate(insert);\n } else {\n insert();\n }\n\n },\n\n remove: function(element) {\n\n if (!within(element, this.$el)) {\n return;\n }\n\n if (this.animation) {\n this.animate(function () { return remove(element); });\n } else {\n remove(element);\n }\n\n },\n\n getSortable: function(element) {\n return element && (this.$getComponent(element, 'sortable') || this.getSortable(element.parentNode));\n }\n\n }\n\n };\n\n function isPredecessor(element, target) {\n return element.parentNode === target.parentNode && index(element) > index(target);\n }\n\n var obj$2;\n\n var actives = [];\n\n var Tooltip = {\n\n attrs: true,\n\n args: 'title',\n\n mixins: [Container, Togglable, Position],\n\n props: {\n delay: Number,\n title: String\n },\n\n data: {\n pos: 'top',\n title: '',\n delay: 0,\n animation: ['uk-animation-scale-up'],\n duration: 100,\n cls: 'uk-active',\n clsPos: 'uk-tooltip'\n },\n\n beforeConnect: function() {\n this._hasTitle = hasAttr(this.$el, 'title');\n attr(this.$el, {title: '', 'aria-expanded': false});\n },\n\n disconnected: function() {\n this.hide();\n attr(this.$el, {title: this._hasTitle ? this.title : null, 'aria-expanded': null});\n },\n\n methods: {\n\n show: function() {\n var this$1 = this;\n\n\n if (includes(actives, this)) {\n return;\n }\n\n actives.forEach(function (active) { return active.hide(); });\n actives.push(this);\n\n this._unbind = on(document, 'click', function (e) { return !within(e.target, this$1.$el) && this$1.hide(); });\n\n clearTimeout(this.showTimer);\n\n this.tooltip = append(this.container, (\"<div class=\\\"\" + (this.clsPos) + \"\\\" aria-hidden><div class=\\\"\" + (this.clsPos) + \"-inner\\\">\" + (this.title) + \"</div></div>\"));\n\n attr(this.$el, 'aria-expanded', true);\n\n this.positionAt(this.tooltip, this.$el);\n\n this.origin = this.getAxis() === 'y' ? ((flipPosition(this.dir)) + \"-\" + (this.align)) : ((this.align) + \"-\" + (flipPosition(this.dir)));\n\n this.showTimer = setTimeout(function () {\n\n this$1.toggleElement(this$1.tooltip, true);\n\n this$1.hideTimer = setInterval(function () {\n\n if (!isVisible(this$1.$el)) {\n this$1.hide();\n }\n\n }, 150);\n\n }, this.delay);\n },\n\n hide: function() {\n\n var index$$1 = actives.indexOf(this);\n\n if (!~index$$1 || matches(this.$el, 'input') && this.$el === document.activeElement) {\n return;\n }\n\n actives.splice(index$$1, 1);\n\n clearTimeout(this.showTimer);\n clearInterval(this.hideTimer);\n attr(this.$el, 'aria-expanded', false);\n this.toggleElement(this.tooltip, false);\n this.tooltip && remove(this.tooltip);\n this.tooltip = false;\n this._unbind();\n\n }\n\n },\n\n events: ( obj$2 = {}, obj$2[(\"focus \" + pointerEnter + \" \" + pointerDown)] = function (e) {\n if (e.type !== pointerDown || !isTouch(e)) {\n this.show();\n }\n }, obj$2.blur = 'hide', obj$2[pointerLeave] = function (e) {\n if (!isTouch(e)) {\n this.hide();\n }\n }, obj$2 )\n\n };\n\n var Upload = {\n\n props: {\n allow: String,\n clsDragover: String,\n concurrent: Number,\n maxSize: Number,\n method: String,\n mime: String,\n msgInvalidMime: String,\n msgInvalidName: String,\n msgInvalidSize: String,\n multiple: Boolean,\n name: String,\n params: Object,\n type: String,\n url: String,\n },\n\n data: {\n allow: false,\n clsDragover: 'uk-dragover',\n concurrent: 1,\n maxSize: 0,\n method: 'POST',\n mime: false,\n msgInvalidMime: 'Invalid File Type: %s',\n msgInvalidName: 'Invalid File Name: %s',\n msgInvalidSize: 'Invalid File Size: %s Kilobytes Max',\n multiple: false,\n name: 'files[]',\n params: {},\n type: '',\n url: '',\n abort: noop,\n beforeAll: noop,\n beforeSend: noop,\n complete: noop,\n completeAll: noop,\n error: noop,\n fail: noop,\n load: noop,\n loadEnd: noop,\n loadStart: noop,\n progress: noop\n },\n\n events: {\n\n change: function(e) {\n\n if (!matches(e.target, 'input[type=\"file\"]')) {\n return;\n }\n\n e.preventDefault();\n\n if (e.target.files) {\n this.upload(e.target.files);\n }\n\n e.target.value = '';\n },\n\n drop: function(e) {\n stop(e);\n\n var transfer = e.dataTransfer;\n\n if (!transfer || !transfer.files) {\n return;\n }\n\n removeClass(this.$el, this.clsDragover);\n\n this.upload(transfer.files);\n },\n\n dragenter: function(e) {\n stop(e);\n },\n\n dragover: function(e) {\n stop(e);\n addClass(this.$el, this.clsDragover);\n },\n\n dragleave: function(e) {\n stop(e);\n removeClass(this.$el, this.clsDragover);\n }\n\n },\n\n methods: {\n\n upload: function(files) {\n var this$1 = this;\n\n\n if (!files.length) {\n return;\n }\n\n trigger(this.$el, 'upload', [files]);\n\n for (var i = 0; i < files.length; i++) {\n\n if (this$1.maxSize && this$1.maxSize * 1000 < files[i].size) {\n this$1.fail(this$1.msgInvalidSize.replace('%s', this$1.maxSize));\n return;\n }\n\n if (this$1.allow && !match(this$1.allow, files[i].name)) {\n this$1.fail(this$1.msgInvalidName.replace('%s', this$1.allow));\n return;\n }\n\n if (this$1.mime && !match(this$1.mime, files[i].type)) {\n this$1.fail(this$1.msgInvalidMime.replace('%s', this$1.mime));\n return;\n }\n\n }\n\n if (!this.multiple) {\n files = [files[0]];\n }\n\n this.beforeAll(this, files);\n\n var chunks = chunk(files, this.concurrent);\n var upload = function (files) {\n\n var data$$1 = new FormData();\n\n files.forEach(function (file) { return data$$1.append(this$1.name, file); });\n\n for (var key in this$1.params) {\n data$$1.append(key, this$1.params[key]);\n }\n\n ajax(this$1.url, {\n data: data$$1,\n method: this$1.method,\n responseType: this$1.type,\n beforeSend: function (env) {\n\n var xhr = env.xhr;\n xhr.upload && on(xhr.upload, 'progress', this$1.progress);\n ['loadStart', 'load', 'loadEnd', 'abort'].forEach(function (type) { return on(xhr, type.toLowerCase(), this$1[type]); }\n );\n\n this$1.beforeSend(env);\n\n }\n }).then(\n function (xhr) {\n\n this$1.complete(xhr);\n\n if (chunks.length) {\n upload(chunks.shift());\n } else {\n this$1.completeAll(xhr);\n }\n\n },\n function (e) { return this$1.error(e.message); }\n );\n\n };\n\n upload(chunks.shift());\n\n }\n\n }\n\n };\n\n function match(pattern, path) {\n return path.match(new RegExp((\"^\" + (pattern.replace(/\\//g, '\\\\/').replace(/\\*\\*/g, '(\\\\/[^\\\\/]+)*').replace(/\\*/g, '[^\\\\/]+').replace(/((?!\\\\))\\?/g, '$1.')) + \"$\"), 'i'));\n }\n\n function chunk(files, size) {\n var chunks = [];\n for (var i = 0; i < files.length; i += size) {\n var chunk = [];\n for (var j = 0; j < size; j++) {\n chunk.push(files[i + j]);\n }\n chunks.push(chunk);\n }\n return chunks;\n }\n\n function stop(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n UIkit.component('countdown', Countdown);\n UIkit.component('filter', Filter);\n UIkit.component('lightbox', Lightbox);\n UIkit.component('lightboxPanel', LightboxPanel);\n UIkit.component('notification', Notification);\n UIkit.component('parallax', Parallax$1);\n UIkit.component('slider', Slider$1);\n UIkit.component('sliderParallax', SliderParallax);\n UIkit.component('slideshow', Slideshow$1);\n UIkit.component('slideshowParallax', SliderParallax);\n UIkit.component('sortable', Sortable);\n UIkit.component('tooltip', Tooltip);\n UIkit.component('upload', Upload);\n\n {\n boot(UIkit);\n }\n\n return UIkit;\n\n})));\n","\"use strict\";\n\n(function(){ // Use a closure to avoid polluting global scope\n // TODO: This needs to be built into the jams system\n const startjam = new Date(Date.UTC(2018, 2, 23));\n const endjam = new Date(Date.UTC(2018, 2, 26));\n\n const now = Date.now();\n let goal;\n\n if (now + 1000 < endjam.getTime()) { // Only do anything if the jam hasn't ended\n UIkit.notification( // Spawn the notification\n {\n \"message\": \"\"\n + \"<div class='uk-text-center'>\"\n + \" <span id=\\\"countdown-title\\\" class=\\\"uk-text-center\\\">\"\n + \" <a href=\\\"/info/jams\\\">Code Jam</a> Countdown\"\n + \" </span>\"\n + \" <p class='uk-text-large' id=\\\"countdown-remaining\\\">...</p>\"\n + \"<small style='font-size: 0.6em;'>(Tap/click to dismiss)</small>\"\n + \"</div>\",\n \"pos\": \"bottom-right\",\n \"timeout\": endjam - now\n }\n );\n\n const heading = document.getElementById(\"countdown-title\");\n\n if (now > startjam.getTime()) { // Jam's already started\n heading.innerHTML = \"Current <a href=\\\"/info/jams\\\">code jam</a> ends in...\";\n goal = endjam.getTime();\n } else {\n heading.innerHTML = \"Next <a href=\\\"/info/jams\\\">code jam</a> starts in...\";\n goal = startjam.getTime();\n }\n\n const refreshCountdown = setInterval(() => { // Create a repeating task\n let delta = goal - Date.now(); // Time until the goal is met\n\n if (delta <= 1000) { // Goal has been met, best reload\n clearInterval(refreshCountdown);\n return location.reload();\n }\n\n let days = Math.floor(delta / (24 * 60 * 60 * 1000));\n delta -= days * (24 * 60 * 60 * 1000);\n\n let hours = Math.floor(delta / (60 * 60 * 1000));\n delta -= hours * (60 * 60 * 1000);\n\n let minutes = Math.floor(delta / (60 * 1000));\n delta -= minutes * (60 * 1000);\n\n let seconds = Math.floor(delta / 1000);\n\n if (days < 10) {\n days = `0${days}`;\n }\n\n if (hours < 10) {\n hours = `0${hours}`;\n }\n\n if (minutes < 10) {\n minutes = `0${minutes}`;\n }\n\n if (seconds < 10) {\n seconds = `0${seconds}`;\n }\n\n try {\n document.getElementById(\"countdown-remaining\").innerHTML = `${days}:${hours}:${minutes}:${seconds}`;\n } catch (e) { // Notification was probably closed, so we can stop counting\n return clearInterval(refreshCountdown);\n }\n }, 500);\n }\n})();\n","\"use strict\";\n\n/* exported JamActions */\n\nclass JamActions {\n constructor(url, csrf_token) {\n this.url = url;\n this.csrf_token = csrf_token;\n }\n\n send(action, method, data, callback) {\n data[\"action\"] = action;\n\n $.ajax(this.url, {\n \"data\": data,\n \"dataType\": \"json\",\n \"headers\": {\"X-CSRFToken\": this.csrf_token},\n \"method\": method,\n }).done(data => {\n if (\"error_code\" in data) {\n return callback(false, data);\n }\n\n return callback(true, data);\n }).fail(() => callback(false));\n }\n\n send_json(action, method, data, callback) {\n data[\"action\"] = action;\n\n $.ajax(this.url, {\n \"data\": JSON.stringify(data),\n \"dataType\": \"json\",\n \"headers\": {\"X-CSRFToken\": this.csrf_token},\n \"method\": method\n }).done(data => {\n if (\"error_code\" in data) {\n return callback(false, data);\n }\n\n return callback(true, data);\n }).fail(() => callback(false));\n }\n\n set_state(jam, state, callback) {\n this.send(\n \"state\",\n \"POST\",\n {\n \"jam\": jam,\n \"state\": state\n },\n callback\n );\n }\n\n get_questions(callback) {\n this.send(\n \"questions\",\n \"GET\",\n {},\n callback\n );\n }\n\n create_question(data, callback) {\n this.send_json(\n \"questions\",\n \"POST\",\n data,\n callback\n );\n }\n\n delete_question(id, callback) {\n this.send(\n \"question\",\n \"DELETE\",\n {\"id\": id},\n callback\n );\n }\n\n associate_question(form, question, callback) {\n this.send(\n \"associate_question\",\n \"POST\",\n {\n \"form\": form,\n \"question\": question,\n },\n callback\n );\n }\n\n disassociate_question(form, question, callback) {\n this.send(\n \"disassociate_question\",\n \"POST\",\n {\n \"form\": form,\n \"question\": question,\n },\n callback\n );\n }\n\n create_infraction(id, reason, number, callback) {\n this.send(\n \"infraction\",\n \"POST\",\n {\n \"participant\": id,\n \"reason\": reason,\n \"number\": number\n },\n callback\n );\n }\n\n delete_infraction(id, callback) {\n this.send(\n \"infraction\",\n \"DELETE\",\n {\"id\": id},\n callback\n );\n }\n\n approve_application(id, callback) {\n this.send(\n \"approve_application\",\n \"POST\",\n {\"id\": id},\n callback\n );\n }\n\n unapprove_application(id, callback) {\n this.send(\n \"unapprove_application\",\n \"POST\",\n {\"id\": id},\n callback\n );\n }\n}\n","\"use strict\";\n\n/* exported revision_diff */\n\nfunction revision_diff(revisions) {\n const buttons = document.querySelectorAll(\"td input\"); // Fetch all radio buttons\n const id_reg = /compare-(before|after)-([\\w|-]+)/; // Matches compare-after/before-ID\n\n\n function getRevisionId(element){\n const e = element.id.match(id_reg); // Match ID with RegExp\n return [e[1], e[2]]; // e is in format of [full id, after/before, ID] we only want ID & mode\n }\n\n function getRevision(id) {\n const e = revisions.filter((x) => {\n // Filter through all revisions to find the selected one (revisions in declared in the template)\n return x.id === id;\n });\n return e[0];\n }\n\n function radioButtonChecked(element) {\n const id = getRevisionId(element);\n const rev = getRevision(id[1]);\n if (id[0] === \"after\"){\n /*\n * Deselect the opposite checkbox to the one which has been checked\n * because we don't want checking of the same revision\n */\n\n document.querySelector(`#compare-before-${id[1]}`).checked = false;\n\n buttons.forEach((e) => {\n if (getRevisionId(e)[0] === \"after\" && e.id !== element.id) { // Deselect all checkboxes in the same row\n e.checked = false;\n }\n });\n } else { // This else does the same as above but for the before column\n document.querySelector(`#compare-after-${id[1]}`).checked = false;\n buttons.forEach((e) => {\n if (getRevisionId(e)[0] === \"before\" && e.id !== element.id) {\n e.checked = false;\n }\n\n // This makes sure that you do not compare a new revision with an old one\n if (getRevisionId(e)[0] === \"after\") {\n const tmprev = getRevision(getRevisionId(e)[1]);\n // console.log(tmprev);\n if (tmprev.date <= rev.date) {\n document.querySelector(`#${e.id}`).setAttribute(\"disabled\", \"\");\n } else {\n document.querySelector(`#${e.id}`).removeAttribute(\"disabled\");\n }\n }\n });\n }\n\n let aft, bef;\n\n buttons.forEach((button) => { // Find the selected posts\n const id = getRevisionId(button);\n if (button.checked && id[0] === \"before\") {\n bef = id[1];\n }\n\n if (button.checked && id[0] === \"after\") {\n aft = id[1];\n }\n });\n\n // Switch the buttons HREF to point to the correct compare URL\n document.getElementById(\"compare-submit\").href = `/history/compare/${bef}/${aft}`;\n\n }\n\n buttons.forEach((button) => {\n button.checked = false; // Some browsers remember if a button is checked.\n button.onchange = function() {\n radioButtonChecked(button);\n };\n });\n}\n","\"use strict\";\n\n(function(){ // Use a closure to avoid polluting global scope\n const visible_class = \"uk-visible@s\";\n const sidebar = document.getElementById(\"wiki-sidebar\");\n const display_button = document.getElementById(\"wiki-sidebar-button\");\n\n display_button.onclick = function() {\n if (sidebar.classList.contains(visible_class)) {\n sidebar.classList.remove(visible_class);\n } else {\n sidebar.classList.add(visible_class);\n }\n };\n})();\n"]} \ No newline at end of file
diff --git a/static/js/typewriter.js b/static/js/typewriter.js
deleted file mode 100644
index e9f82adc..00000000
--- a/static/js/typewriter.js
+++ /dev/null
@@ -1,612 +0,0 @@
-/*
- * Title: Typewriter JS
- * Description: A native javascript plugin that can be used to create an elegent automatic typewriter animation effect on websites.
- * Author: Tameem Safi
- * Website: https://safi.me.uk
- * Version: 1.0.0
- */
-
-(function() {
-
- "use strict";
-
- // http://paulirish.com/2011/requestanimationframe-for-smart-animating/
- // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
- // requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel
- // MIT license
- (function() {
- var lastTime = 0;
- var vendors = ['ms', 'moz', 'webkit', 'o'];
- for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
- window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
- window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame']
- || window[vendors[x]+'CancelRequestAnimationFrame'];
- }
-
- if (!window.requestAnimationFrame)
- window.requestAnimationFrame = function(callback, element) {
- var currTime = new Date().getTime();
- var timeToCall = Math.max(0, 16 - (currTime - lastTime));
- var id = window.setTimeout(function() { callback(currTime + timeToCall); },
- timeToCall);
- lastTime = currTime + timeToCall;
- return id;
- };
-
- if (!window.cancelAnimationFrame)
- window.cancelAnimationFrame = function(id) {
- clearTimeout(id);
- };
- }());
-
- window.Typewriter = function Typewriter(element, options) {
- this._settings = {
- cursorAnimationPaused: false,
- opacityIncreasing: false,
- currentOpacity: 1,
- delayedQue: [],
- delayItemsCount: 0,
- eventQue: [],
- calledEvents: [],
- eventRunning: false,
- timeout: false,
- delayExecution: false,
- fps: (60/1000),
- typingFrameCount: 0,
- stringToTypeHTMLArray: [],
- currentTypedCharacters: [],
- typing: false,
- usedIDs: [],
- charAmountToDelete: false,
- userOptions: {},
- eventLoopRerun: 0
- };
-
- if(!element) {
- return console.error('Please choose an DOM element so that type writer can display itself.');
- }
-
- // if(!options.strings && !(options.strings instanceof Array || typeof options.strings === 'string')) {
- // return console.error('Please enter an array of strings for the typewriter animation to work.');
- // }
-
- if(typeof options !== 'object') {
- return console.error('Typewriter only accepts the options as an object.');
- }
-
- this._settings.userOptions = options;
-
- this.default_options = {
- strings: false,
- cursorClassName: 'typewriter-cursor',
- cursor: '|',
- animateCursor: true,
- blinkSpeed: 50,
- typingSpeed: 'natural',
- deleteSpeed: 'natural',
- charSpanClassName: 'typewriter-char',
- wrapperClassName: 'typewriter-wrapper',
- loop: false,
- autoStart: false,
- devMode: false
- };
-
- this.options = this._setupOptions(options);
-
- this.el = element;
-
- this._setupTypwriterWrapper();
-
- this._startCursorAnimation();
-
- if(this.options.autoStart === true && this.options.strings) {
- this.typeOutAllStrings();
- }
-
- };
-
- var TypewriterPrototype = window.Typewriter.prototype;
-
- TypewriterPrototype.stop = function() {
- this._addToEventQue(this._stopEventLoop)
- return this;
- };
-
- TypewriterPrototype.start = function() {
- this._startEventLoop();
- return this;
- };
-
- TypewriterPrototype.rerun = function() {
- this._addToEventQue(this._rerunCalledEvents);
- return this;
- };
-
- TypewriterPrototype.typeString = function(string) {
- if(!string || typeof string != 'string') {
- return console.error('Please enter a string as the paramater.');
- }
-
- var string_chars = this._getCharacters(string);
-
- this._addToEventQue([this._typeCharacters, [string_chars]]);
- return this;
- };
-
- TypewriterPrototype.deleteAll = function() {
- this._addToEventQue([this._deleteChars, ['all']]);
- return this;
- };
-
- TypewriterPrototype.deleteChars = function(amount) {
- this._addToEventQue([this._deleteChars, [amount]]);
- return this;
- };
-
- TypewriterPrototype.pauseFor = function(ms) {
- this._addToEventQue([this._pauseFor, [ms]]);
- return this;
- };
-
- TypewriterPrototype.typeOutAllStrings = function() {
- var characters_array = this._getStringsAsCharsArray();
-
- if(characters_array.length === 1) {
- this._typeCharacters(characters_array[0]);
- } else {
- for(var i = 0, length = characters_array.length; i < length; i++) {
- this._addToEventQue([this._typeCharacters, [characters_array[i]]]);
- this.pauseFor(this._randomInteger(1500, 2500));
- this.deleteAll();
- this.pauseFor(this._randomInteger(1500, 2500));
- }
- }
-
- return this;
-
- };
-
- TypewriterPrototype.changeSettings = function(new_settings) {
- if(!new_settings && typeof new_settings !== 'object') {
- return console.error('Typewriter will only accept an object as the settings.');
- }
-
- this._addToEventQue([this._changeSettings, [JSON.stringify(new_settings)]]);
-
- return this;
-
- };
-
- TypewriterPrototype.changeBlinkSpeed = function(new_speed) {
- if(!new_speed && typeof new_speed !== 'number') {
- return console.error('Please enter a number for the new blink speed.');
- }
-
- this.changeSettings({
- blinkSpeed: new_speed
- });
-
- return this;
- };
-
- TypewriterPrototype.changeTypingSpeed = function(new_speed) {
- if(!new_speed && typeof new_speed !== 'number') {
- return console.error('Please enter a number for the new typing speed.');
- }
-
- var new_settings = {
- typingSpeed: new_speed
- };
-
- this.changeSettings({
- typingSpeed: new_speed
- });
-
- return this;
- };
-
- TypewriterPrototype.changeDeleteSpeed = function(new_speed) {
- if(!new_speed && typeof new_speed !== 'number') {
- return console.error('Please enter a number for the new delete speed.');
- }
-
- this.changeSettings({
- changeDeleteSpeed: new_speed
- });
-
- return this;
- };
-
- TypewriterPrototype._rerunCalledEvents = function() {
- if(this._settings.currentTypedCharacters.length > 0) {
- this.deleteAll();
- this._resetEventLoop('rerunCalledEvents');
- } else {
- this._settings.eventQue = this._settings.calledEvents;
- this._settings.calledEvents = [];
- this.options = this._setupOptions(this._settings.userOptions);
- this._settings.usedIDs = [];
- this.charAmountToDelete = false;
- this._startEventLoop();
- }
- };
-
- TypewriterPrototype._deleteChars = function(amount) {
-
-
- if(amount) {
- this._settings.charAmountToDelete = amount;
- }
- this._deletingCharIdsAnimation = window.requestAnimationFrame(this._deletingCharAnimationFrame.bind(this));
- return this;
- };
-
- TypewriterPrototype._pauseFor = function(ms) {
- var self = this;
- self._settings.eventRunning = true;
- setTimeout(function() {
- self._resetEventLoop('pauseFor');
- }, ms);
- };
-
- TypewriterPrototype._changeSettings = function(new_settings) {
- this.options = this._setupOptions(JSON.parse(new_settings[0]));
- this._resetEventLoop('changeSettings');
-
- if(this.options.devMode) {
- console.log('New settings', this.options);
- }
-
- };
-
- TypewriterPrototype._deletingCharAnimationFrame = function() {
- var self = this;
- var delete_speed = this.options.deleteSpeed;
- var typewriter_wrapper_class_name = self.options.wrapperClassName;
- var current_typed_char_ids = self._settings.currentTypedCharacters;
- var char_amount_to_delete = self._settings.charAmountToDelete;
-
- if(!self._settings.charAmountToDelete || self._settings.charAmountToDelete === 0 || current_typed_char_ids === 0) {
- self._resetEventLoop('deletingCharAnimationFrame');
- return true;
- }
-
- if(delete_speed == 'natural') {
- delete_speed = self._randomInteger(50, 150);
- }
-
- if(char_amount_to_delete == 'all') {
- char_amount_to_delete = current_typed_char_ids.length;
- self._settings.charAmountToDelete = char_amount_to_delete;
- }
-
- setTimeout(function() {
- if(self._settings.charAmountToDelete) {
- var last_typed_char_index = current_typed_char_ids.length - 1;
- var get_last_typed_char = current_typed_char_ids[last_typed_char_index];
-
- self._settings.currentTypedCharacters.splice(last_typed_char_index, 1);
-
- var char_to_delete_el = document.getElementById(get_last_typed_char);
-
- if(char_to_delete_el) {
- var typewriter_wrapper_el = self.el.querySelector('.' + typewriter_wrapper_class_name);
- typewriter_wrapper_el.removeChild(char_to_delete_el);
- self._settings.charAmountToDelete = char_amount_to_delete - 1;
-
- if(self.options.devMode) {
- console.log('Deleted char with ID', get_last_typed_char);
- }
- }
-
- }
-
- self._deletingCharIdsAnimation = window.requestAnimationFrame(self._deletingCharAnimationFrame.bind(self));
-
- }, delete_speed);
- };
-
- TypewriterPrototype._setupOptions = function(new_options) {
- var merged_options = {};
-
- for (var attrname in this.default_options) {
- merged_options[attrname] = this.default_options[attrname];
- }
-
- if(this._settings.userOptions) {
- for (var attrname in this._settings.userOptions) {
- merged_options[attrname] = this._settings.userOptions[attrname];
- }
- }
-
- for (var attrname in new_options) {
- merged_options[attrname] = new_options[attrname];
- }
-
- return merged_options;
- }
-
- TypewriterPrototype._addToEventQue = function(event) {
- this._settings.eventQue.push(event);
- if(this._settings.eventQue.length > 0 && !this._settings.eventRunning && this.options.autoStart) {
- this._startEventLoop();
- }
- };
-
- TypewriterPrototype._startEventLoop = function() {
- if(this.options.devMode) {
- console.log('Event loop started.');
- }
-
- if(!this._settings.eventRunning) {
-
- if(this._settings.eventQue.length > 0) {
- this.eventLoopRerun = 0;
- var first_event = this._settings.eventQue[0];
- if(typeof first_event == 'function') {
- this._settings.eventRunning = true;
- this._settings.calledEvents.push(first_event);
- this._settings.eventQue.splice(0, 1);
- first_event.call(this);
- if(this.options.devMode) {
- console.log('Event started.');
- }
- } else if(first_event instanceof Array) {
- if(typeof first_event[0] == 'function' && first_event[1] instanceof Array) {
- this._settings.eventRunning = true;
- this._settings.calledEvents.push(first_event);
- this._settings.eventQue.splice(0, 1);
- first_event[0].call(this, first_event[1]);
- if(this.options.devMode) {
- console.log('Event started.');
- }
- }
- }
- }
- this._eventQueAnimation = window.requestAnimationFrame(this._startEventLoop.bind(this));
- }
-
- if(!this._settings.eventRunning && this._settings.eventQue.length <= 0) {
- var self = this;
- self._stopEventLoop();
- setTimeout(function() {
- if(self.options.loop) {
- self.eventLoopRerun++;
- if(self.options.devMode) {
- console.log('Before Loop State', self._settings);
- }
- if(self.eventLoopRerun > 4) {
- console.error('Maximum amount of loop retries reached.');
- self._stopEventLoop();
- } else {
- if(self.options.devMode) {
- console.log('Looping events.');
- }
- self._rerunCalledEvents();
- }
- }
- }, 1000);
- return;
- }
-
- };
-
- TypewriterPrototype._resetEventLoop = function(name) {
- var event_name = name || 'Event';
- this._settings.eventRunning = false;
- this._startEventLoop();
- if(this.options.devMode) {
- console.log(event_name, 'Finished');
- }
- };
-
- TypewriterPrototype._stopEventLoop = function() {
- window.cancelAnimationFrame(this._eventQueAnimation);
- if(this.options.devMode) {
- console.log('Event loop stopped.');
- }
- };
-
- TypewriterPrototype._setupTypwriterWrapper = function() {
- var typewriter_wrapper_class_name = this.options.wrapperClassName;
- var typewriter_wrapper = document.createElement('span');
- typewriter_wrapper.className = typewriter_wrapper_class_name;
- this.el.innerHTML = '';
- this.el.appendChild(typewriter_wrapper);
- };
-
- TypewriterPrototype._typeCharacters = function(characters_array) {
- this._settings.stringToTypeHTMLArray = this._convertCharsToHTML(characters_array);
- this._typingAnimation = window.requestAnimationFrame(this._typingAnimationFrame.bind(this, characters_array.length));
- return this;
- };
-
- TypewriterPrototype._typingAnimationFrame = function(total_items) {
- var self = this;
- var typing_speed = this.options.typingSpeed;
- var typewriter_wrapper_class_name = self.options.wrapperClassName;
-
- if(self._settings.stringToTypeHTMLArray.length == 0) {
- window.cancelAnimationFrame(self._typingAnimation);
- this._resetEventLoop('typingAnimationFrame');
- return true;
- }
-
- if(typing_speed == 'natural') {
- typing_speed = this._randomInteger(50, 150);
- }
-
- setTimeout(function() {
- var el_inner_html = self.el.innerHTML;
- var item_to_type = self._settings.stringToTypeHTMLArray[0];
- self.el.querySelector('.' + typewriter_wrapper_class_name).appendChild(item_to_type.el);
- self._settings.currentTypedCharacters.push(item_to_type.id);
- self._settings.stringToTypeHTMLArray.splice(0, 1);
- self._typingAnimation = window.requestAnimationFrame(self._typingAnimationFrame.bind(self, total_items));
- if(self.options.devMode) {
- console.log('Typed', item_to_type);
- }
- }, typing_speed);
- };
-
- TypewriterPrototype._convertCharsToHTML = function(chars) {
- var chars_html_wrap_array = [];
- var char_class_name = this.options.charSpanClassName;
- var chars_array = chars[0];
-
- for(var i = 0, length = chars_array.length; i < length; i++) {
- var char_element = document.createElement('span');
- var char_id = this._generateUniqueID();
- char_element.id = char_id;
- char_element.className = char_class_name + ' typewriter-item-' + i;
- char_element.innerHTML = chars_array[i];
- chars_html_wrap_array.push({
- id: char_id,
- el: char_element
- });
- }
-
- return chars_html_wrap_array;
- };
-
- TypewriterPrototype._getCharacters = function(string) {
- if(typeof string !== 'string') {
- return false;
- }
- return string.split("");
- };
-
- TypewriterPrototype._getStringsAsCharsArray = function() {
- var strings_array_check = this.options.strings instanceof Array;
- var strings_string_check = typeof this.options.strings === 'string';
- if(!strings_array_check) {
- if(!strings_string_check) {
- return console.error('Typewriter only accepts strings or an array of strings as the input.');
- }
- return [this.options.strings.split("")];
- }
-
- var strings_chars_array = [];
-
- for (var i = 0, length = this.options.strings.length; i < length; i++) {
- var string_chars = this._getCharacters(this.options.strings[i]);
- if(!string_chars) {
- console.error('Please enter only strings.');
- break;
- }
- strings_chars_array.push(string_chars);
- }
-
- return strings_chars_array;
- };
-
- TypewriterPrototype._cursorAnimationFrame = function() {
- if(!this._settings.cursorAnimationPaused) {
- var blink_speed = this.options.blinkSpeed;
- var opacity_amount = (1/1000) * blink_speed;
-
- var cursor_el = this.el.querySelector('.typewriter-cursor');
-
- if(this._settings.opacityIncreasing == true) {
- if(this._settings.currentOpacity >= 1) {
- this._settings.opacityIncreasing = false;
- this._settings.currentOpacity = 1;
- }
-
- this._settings.currentOpacity += opacity_amount;
- }
-
- if(this._settings.opacityIncreasing == false) {
- if(this._settings.currentOpacity <= 0) {
- this._settings.opacityIncreasing = true;
- this._settings.currentOpacity = 0;
- }
-
- this._settings.currentOpacity -= opacity_amount;
- }
-
- cursor_el.style.opacity = this._settings.currentOpacity;
- this._cursorAnimation = window.requestAnimationFrame(this._cursorAnimationFrame.bind(this));
- }
- };
-
- TypewriterPrototype.appendText = function(text){
- this._addToEventQue([this._appendText, [text]])
- return this
- }
-
- TypewriterPrototype._appendText = function(text){
- var char_class_name = this.options.charSpanClassName;
- var char_element = document.createElement('span');
- var char_id = this._generateUniqueID();
- char_element.id = char_id;
- char_element.className = char_class_name + ' dom-appended'
- char_element.innerHTML = text
- var items = []
- items.push({
- id: char_id,
- el: char_element
- });
-
- this._settings.stringToTypeHTMLArray = items
-
- window.requestAnimationFrame(this._typingAnimationFrame.bind(this, 1));
-
- }
-
- TypewriterPrototype._startCursorAnimation = function() {
- var cursor = this.options.cursor;
- var cursor_class_name = this.options.cursorClassName;
-
- var cursor_element = document.createElement('span');
- cursor_element.className = cursor_class_name;
- cursor_element.innerHTML = cursor;
-
- this.el.appendChild(cursor_element);
- if(this.options.animateCursor) {
- this._cursorAnimation = window.requestAnimationFrame(this._cursorAnimationFrame.bind(this));
- }
- };
-
- TypewriterPrototype._pauseCursorAnimation = function() {
- if(!this._settings.cursorAnimationPaused) {
- window.cancelAnimationFrame(this._cursorAnimation);
- this._settings.cursorAnimationPaused = true;
- }
- };
-
- TypewriterPrototype._restartCursorAnimation = function() {
- if(!this._settings.cursorAnimationPaused) {
- return console.error('Cursor animation is already running.')
- }
-
- this._settings.cursorAnimationPaused = false;
- this._cursorAnimation = window.requestAnimationFrame(this._cursorAnimationFrame.bind(this));
- };
-
- /* Utils */
- TypewriterPrototype._randomInteger = function(min, max) {
- return Math.floor(Math.random() * (max - min + 1)) + min;
- };
-
- TypewriterPrototype._randomID = function() {
- var text = "";
- var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
-
- for( var i=0; i < this._randomInteger(5, 15); i++ ) {
- text += possible.charAt(Math.floor(Math.random() * possible.length));
- }
- return text;
- };
-
- TypewriterPrototype._generateUniqueID = function() {
- var temp_id = this._randomID();
- if(this._settings.usedIDs.indexOf(temp_id) == -1) {
- this._settings.usedIDs.push(temp_id);
- return temp_id;
- }
- return this._generateUniqueID.call(this);
- };
-
-
-})(); \ No newline at end of file
diff --git a/static/js/wiki.js b/static/js/wiki.js
deleted file mode 100644
index 603eebef..00000000
--- a/static/js/wiki.js
+++ /dev/null
@@ -1,15 +0,0 @@
-"use strict";
-
-(function(){ // Use a closure to avoid polluting global scope
- const visible_class = "uk-visible@s";
- const sidebar = document.getElementById("wiki-sidebar");
- const display_button = document.getElementById("wiki-sidebar-button");
-
- display_button.onclick = function() {
- if (sidebar.classList.contains(visible_class)) {
- sidebar.classList.remove(visible_class);
- } else {
- sidebar.classList.add(visible_class);
- }
- };
-})();